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
Scott Shawcroft
e62db5adcd
Fix native property setting from subclass
2023-10-24 16:20:51 -07:00
Dan Halbert
4d175ab41a
convert to MP_DEFINED_CONST_OBJ_TYPE()
2023-09-19 21:09:29 -04:00
Dan Halbert
2171e67c1b
merge latest adafruit/main
2023-08-13 19:43:54 -04:00
Dan Halbert
0d2c3c3f08
wip: continuing compilation fixes; mp_obj_alloc everywhere
2023-08-07 20:45:57 -04:00
Jeff Epler
51027974e5
synthio: apply biquad filters during synthesis
2023-05-29 10:53:48 -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
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
1b174f8b3d
synthio: remove "1-octave" caveat, is false now
2023-05-22 21:58:09 -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
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
Jeff Epler
17df238145
synthio: doc fixes, rename BendType to BendMode
2023-05-11 15:23:54 -05:00
Jeff Epler
095e020809
synthio: Add ring modulation
2023-05-11 09:31:18 -05:00
Jeff Epler
e87e7ee54f
synthio: add stereo & Note.panning
...
A note can be placed in the center (panning=0) or moved to just the left
(panning=1) or right (panning=-1) channels. Fractional panning values
place it partially in both channels.
2023-05-11 09:31:18 -05:00
Jeff Epler
1d1907b98b
synthio: Generalize vibrato into bend
...
bend can be static, sweep, or vibrato
2023-05-11 09:31:07 -05:00
Jeff Epler
9a9f3229fa
synthio: Perform vibrato in pitch, not as frequency ratio
...
Now the vibrato 'units' are 1.0 = one octave, 1/12 = one semitone,
1/1200 = one cent. Before, the units were somewhat arbitrary and were not
perceptually "symmetrical" around the base frequency.
For vibrato_depth = 1/12 and base frequency of 440,
before: pitch from 403.33 to 476.67Hz, not corresponding to any notes
after: pitch from 415.30 to 466.16Hz, corresponding to G# and A#
2023-05-06 21:35:20 -05:00
Jeff Epler
a94031d094
synthio: make most Note constructor args kw-only
...
for similar reasons as Envelope. The mandatory frequency argument can
still be given as a positional argument.
2023-05-04 10:16:19 -05:00
Jeff Epler
a7da245ad0
synthio: Add synthio.Note
...
This class allows much more expressive sound synthesis:
* tremolo & vibrato
* arbitrary frequency
* different evelope & waveform per note
* all properties dynamically settable from Python code
2023-05-04 07:23:49 -05:00