Jeff Epler
0fe750269f
Documentation improvements
2023-11-20 10:36:50 -06:00
dcooperdalrymple
55db6b7947
Added SYNTHIO_WAVEFORM_SIZE
definition, renamed 'loop_...' to 'waveform_loop_...', added 'ring_waveform_loop_...` parameters, and updated docstrings.
2023-11-20 09:50:03 -06:00
dcooperdalrymple
785ef5abd2
Add loop_start and loop_end properties to synthio.Note for waveshaping and sampling capabilities.
2023-11-17 17:41:49 -06:00
Jeff Epler
774f6ac6ab
Switch to using MP_ERROR_TEXT instead of translate, globally
2023-10-30 09:49:06 +01:00
Scott Shawcroft
e62db5adcd
Fix native property setting from subclass
2023-10-24 16:20:51 -07:00
Jeff Epler
477b2300a1
fix definitoin of MidiTrack type
2023-09-22 13:58:01 -05:00
Jeff Epler
5d9b84dcb2
fix definition of MathOperation
2023-09-22 13:57:51 -05:00
Jeff Epler
f812750a76
fix use of mp_type_fileio
2023-09-22 13:56:55 -05:00
Jeff Epler
e48984872b
allow definition of namedtuples in core
2023-09-22 13:56:16 -05:00
Jeff Epler
e1af819a91
fix (unused) default for some required args
2023-09-22 13:53:11 -05:00
Dan Halbert
4d175ab41a
convert to MP_DEFINED_CONST_OBJ_TYPE()
2023-09-19 21:09:29 -04:00
Dan Halbert
2c0fa0f7dc
initial merge from v1.20.0; just satisifying conflicts
2023-09-19 11:10:12 -04:00
Dan Halbert
2171e67c1b
merge latest adafruit/main
2023-08-13 19:43:54 -04:00
Dan Halbert
fe0e2f13bc
wip; fix qstr processing
2023-08-10 20:06:32 -04:00
Dan Halbert
0d2c3c3f08
wip: continuing compilation fixes; mp_obj_alloc everywhere
2023-08-07 20:45:57 -04:00
Jeff Epler
ddeb27d335
the note is in its attack phase
2023-08-04 18:40:30 -05:00
Jeff Epler
60b233f160
document EnvelopeState
2023-07-20 16:26:07 -05:00
Jeff Epler
29a4364ba7
fix method signature
2023-07-20 14:05:56 -05:00
Jeff Epler
346f08f8b9
synthio: Add Synthesizer.note_state
...
This enables the specific use case of checking whether a note's release
phase has ended, but is also potentially useful to implement a sort of
"voice stealing" algorithm in Python code, which can take account of
the note's envelope state as well as other factors specific to the
program.
2023-07-20 13:16:00 -05:00
Jeff Epler
3151656f4b
synthio: more fir-filter removal; fix biquad logic errors
2023-05-30 09:24:26 -05:00
Jeff Epler
1d58b550b5
synthio: fix doc build
2023-05-29 13:07:15 -05:00
Jeff Epler
51027974e5
synthio: apply biquad filters during synthesis
2023-05-29 10:53:48 -05:00
Jeff Epler
fed8d5825b
synthio: add biquad filter type & basic filter calculations
...
the filter cannot be applied as yet.
2023-05-29 09:50:18 -05:00
Jeff Epler
9f138dc188
synthio: list filter in the constructor
2023-05-23 19:38:25 -05:00
Jeff Epler
11d8a6ec3a
synthio: rename synthesizer.lfos to .blocks
...
.. since math blocks can be placed in it too (and that's useful)
2023-05-23 19:38:25 -05:00
Jeff Epler
c20e862790
synthio: note frequency can only be a float, for now
2023-05-23 19:38:24 -05:00
Jeff Epler
1847c2b72a
synthio: fix, rename voct_to_hz
...
todbot discovered that this function wasn't working right, and wasn't
well-named.
2023-05-23 19:38:24 -05:00
Jeff Epler
2b42783301
Apply suggestions from code review
...
Co-authored-by: Dan Halbert <halbert@adafruit.com>
2023-05-23 08:57:16 -05:00
Jeff Epler
122e00bdb3
document ring arguments to constructor
...
thanks Mark!
2023-05-22 21:59:39 -05:00
Jeff Epler
af40a173ba
synthio: midi_to_hz: remove arbitrary note number limitation
...
The underlying routine can return numbers for higher and lower
octaves. Other bits of the code might have frequency limitations
but that doesn't mean we shouldn't let someone get a ~4Hz "note"
by sending in (-12), because that's actually totally plausible as
an LFO frequency.
2023-05-22 21:58:09 -05:00
Jeff Epler
1b174f8b3d
synthio: remove "1-octave" caveat, is false now
2023-05-22 21:58:09 -05:00
Jeff Epler
5b4d621fd2
synthio: explicitly cast away const to satisfy compiler
2023-05-22 21:58:08 -05:00
Jeff Epler
167aa30f12
synthio: remove if0'd code
...
thanks tannewt
2023-05-22 21:58:04 -05:00
Jeff Epler
8626130af7
synthio: Add default triangle waveform to LFO, improve docs
2023-05-22 10:53:29 -05:00
Jeff Epler
4f671dab6f
synthio: one more doc fix
2023-05-21 19:15:34 -05:00
Jeff Epler
4d60c4608e
synthio: doc fixes
2023-05-21 17:49:30 -05:00
Jeff Epler
c5615995d9
synthio: fix docstring
2023-05-21 13:22:49 -05:00
Jeff Epler
c084ab92c8
synthio: Enable synthio.MathOperation.SUM(3,4,5)
2023-05-21 13:22:48 -05:00
Jeff Epler
4ff08e02eb
synthio: lfo: bugfixes & improvements
...
LFO waveforms are now linearly interpolated by default, but a new
property (interpolated=False) can disable this.
The 'once' logic was improved
2023-05-21 13:22:47 -05:00
Jeff Epler
e6c4d12eaf
synthio: doc improvement
2023-05-21 13:22:47 -05:00
Jeff Epler
e0cfae1d05
synthio: add (untested) phase offset
2023-05-21 13:22:46 -05:00
Jeff Epler
bd2a153eae
synthio: there is a midi note 0
2023-05-17 16:37:12 -05:00
Jeff Epler
391438102b
synthio: Finish implementing Math blocks
2023-05-17 16:32:20 -05:00
Jeff Epler
5de4d197a2
synthio: start generalizing LFO to Block
2023-05-17 15:05:34 -05:00
Jeff Epler
3d2db5dbe0
synthio: improve documentation, simplify synthio_lfo_obj_tick_scaled
2023-05-17 11:13:15 -05:00
Jeff Epler
d4294de62b
synthio: Allow bends of more than one octave
...
up to +-12 sounds good, right?
2023-05-16 16:58:04 -05:00
Jeff Epler
0b926f8fd4
synthio: improve release/press/change
...
Semi-incompatible name change: The method `release_then_press`
is now `change`. For now a compatibility alias is supported.
Everywhere a `NoteSequence` was accepted, a single note is now accepted.
So for instance, `synth.press(30)` can be written instead of requiring
``synth.press((30,))`. The same goes for `change.retrigger`, which
will accept a single LFO or a sequence.
2023-05-16 10:26:56 -05:00
Jeff Epler
b2c6f9b1a4
synthio: add Synthesizer.lfo, retrigger option
2023-05-16 10:07:07 -05:00
Jeff Epler
f83212314e
synthio: Add LFOs
2023-05-15 21:15:39 -05:00
Jeff Epler
7845a1b13b
synthio: Add filter
boolean property to Note objects
2023-05-11 17:58:09 -05:00