Commit Graph

30923 Commits

Author SHA1 Message Date
Jeff Epler 2062b2bfb7
synthio: add a noise program to the manual tests 2023-05-11 09:31:08 -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 c48d385e94
synthio: Add `synthio.BendType` 2023-05-11 09:31:07 -05:00
Jeff Epler 91978522c5
synthio: Add adafruit_wave and use it in the manual test 2023-05-11 09:31:07 -05:00
Scott Shawcroft 93b0e5b746
Merge pull request #7958 from ajs256/add-display-sprig
Add board.DISPLAY to hack_club_sprig
2023-05-10 11:45:19 -07:00
Alex Sirota 55d8f0db4e Add board.DISPLAY to hack_club_sprig 2023-05-10 11:24:26 -07:00
Scott Shawcroft 08874af0e8
Merge pull request #7957 from tekktrik/dev/stubs-building
Updated how stubs are built
2023-05-10 11:20:24 -07:00
Tekktrik 57cd451245 Add build to pio install command 2023-05-09 22:31:24 -04:00
Tekktrik 6f8670a284 Updated how stubs are built 2023-05-09 22:01:24 -04:00
Scott Shawcroft 7e734df892
Merge pull request #7951 from Neradoc/pystack-doc-and-size
Document CIRCUITPY_PYSTACK_SIZE
2023-05-09 09:14:17 -07:00
Scott Shawcroft f8cbdf88e5
Merge pull request #7947 from FoamyGuy/polygon_point_typecheck
validate point type is tuple in vectorio Polygon
2023-05-09 09:12:17 -07:00
Neradoc bb2af51d25 document CIRCUITPY_PYSTACK_SIZE 2023-05-09 14:30:25 +02:00
foamyguy 56d9798b1d validate point type is tuple in vectorio Polygon 2023-05-08 15:39:19 -05:00
Scott Shawcroft 9e4dea7b15
Merge pull request #7933 from jepler/synthio-note
synthio: add 'Note' with arbitrary frequency and more
2023-05-08 13:32:37 -07:00
Scott Shawcroft 7cd65ffb40
Merge pull request #7942 from furbrain/main
Add memorymap support to nrf boards
2023-05-08 10:42:29 -07:00
Scott Shawcroft 6c39077616
Merge pull request #7939 from RetiredWizard/silabsrtc
silabs/supervisor/port.c Add call to rtc_reset to prevent crash to safe mode
2023-05-08 10:20:30 -07:00
Jeff Epler c031bda5dd
synthio: implement a range compressor with hard knee
This really improves the loudness of the output with multiple notes
while being a nice simple algorithm to implement.
2023-05-08 09:22:42 -05:00
Phil Underwood bcd9d6bacc Add memorymap to nrf52840 devices only 2023-05-07 18:21:22 +01:00
Phil Underwood fe90cc759a remove excess line 2023-05-07 16:09:44 +01:00
Phil Underwood a31dc5cc70
Merge branch 'adafruit:main' into main 2023-05-07 16:07:16 +01:00
Phil Underwood 3abcc6a2c3 Add memorymap support for the nRF processors.
This gives very permissive access to the internals of the microprocessor.
It needs the user to be **very** careful that they do not break things
2023-05-07 15:58:25 +01: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 a53c0ed066
synthio: add onevo_to_hz, implement midi_to_hz in terms of it
this has the side effect of making some notes more accurate, the new
frequency= value in the test is closer to the true midi frequency of
830.609...Hz.
2023-05-06 21:35:19 -05:00
Jeff Epler a854e554f4
synthio: add midi_to_hz to docs 2023-05-06 21:35:16 -05:00
RetiredWizard a52d0c742e Add call to rtc_reset 2023-05-06 03:16:38 -04:00
Kattni 018f15de95
Merge pull request #7938 from jepler/issue5980
Fix crash with fast ping on espressif
2023-05-05 18:52:02 -04:00
Jeff Epler 66411fdd38
espressif: check return value from esp_ping_new_session
esp_ping_new_session can fail, particularly if ping is called quickly
many times in succession.

This is because `esp_ping_new_session` has to do a bunch of stuff
including creating a task and a socket. Calling `esp_ping_delete_session`
doesn't clean up these resources immediately. Instead, it signals the
task to clean up resources and exit 'soon', but 'soon' is defined as 1
second.

When the calls are frequent, the in-use sockets and tasks fill up
available slots—I didn't actually check which resource gets used
up first.

With this change, the ping call will raise an exception instead of
continuing with a call to esp_ping_start that crashes.

Closes #5980 based on my testing on an ESP32S3-N8R2.
2023-05-05 17:11:03 -05:00
Jeff Epler 5c857209fd
Merge pull request #7934 from tekktrik/fix/venv-bug
Fix creating virtual environment for stub creation
2023-05-05 09:29:04 -05:00
Alec Delaney 298bd16529
Fix creating virtual environment for stub creation 2023-05-04 15:55:33 -04:00
Jeff Epler d2aca7eba0
synthio: fix per-note envelope & envelope modification
.. and simplify the envelope advance logic by handling
'instant' values more intelligently.
2023-05-04 12:23:45 -05:00
Scott Shawcroft fa9b59d14c
Merge pull request #7915 from RetiredWizard/picodvi
Add Pimoroni Pico dv Demo Base (pico only)
2023-05-04 10:07:48 -07:00
Jeff Epler eebd4a7f52
synthio: no longer fits on feather m4 can 2023-05-04 10:16:58 -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 c839888e28
synthio: rename function that records error position 2023-05-04 08:45:31 -05:00
Jeff Epler a388a59543
rp2040: fix audio glitch at soft-reload
The internal flash cache wasn't being properly used, because
`write_blocks` unconditionally performed the flash write.

Fixing this so that the write's not done until `internal_flash_flush`
fixes the problem in my test program with i2sout & synthio.

as a future optimization, `flash_read_blocks` could learn to read out
of the cache, but that's probably not super important.
2023-05-04 08:41:23 -05:00
Jeff Epler e23e7d3b3f
synthio: get_buffer: return error if object deinited
this may fix a weird crash during shutdown
2023-05-04 07:45:45 -05:00
Jeff Epler 2b0231e9d3
synthio: re-striking a note should re-enter attack
.. without changing the current note amplitude
2023-05-04 07:23:50 -05:00
Jeff Epler 021aaa4599
synthio: remove unused 'phase' from Note objects 2023-05-04 07:23:50 -05:00
Jeff Epler 1701552dec
synthio: make sustain level relative to attack level
and re-vamp overall envelope calculation again.

Now, if you set a low overall attack level like 0.2 this avoids the
"diminishing volume" effect when many notes sound at once. You need
simply choose a maximum attack level that is appropriate for the max
number of voices that will actually be played.
2023-05-04 07:23:50 -05:00
Jeff Epler c06597c07a
synthio: replace the quietest releasing note when over-writing 2023-05-04 07:23:49 -05:00
Jeff Epler 4f56b7646e
synthio: slow ramp overall envelope back up
.. and account releasing notes at their sustain level until they're
done.

this ameliorates the effect where multiple releasing notes
don't seem to actually be releasing, but stay at a constant volume.
2023-05-04 07:23:49 -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
Jeff Epler bc03e03b9e
util: Add properties_print_helper 2023-05-04 07:23:48 -05:00
Jeff Epler c22fd2a18e
runtime: Add mp_arg_validate_float_range 2023-05-04 07:23:48 -05:00
Jeff Epler 5514e3065d
synthio: add midi_to_hz
to convert notes in the MIDI 1-127 note scale to floating point Hz
2023-05-04 07:23:48 -05:00
RetiredWizard 4f7d88676b Remove pico-w version 2023-05-03 17:30:01 -04:00
Jeff Epler bd9aca2526
Merge pull request #7862 from jepler/synthio-envelope
Synthio envelope
2023-05-03 12:42:56 -05:00
Jeff Epler b33c9f6b4b
synthio: put license notice on copied files 2023-05-03 09:37:12 -05:00
Jeff Epler 1fafa4dc24
synthio: improve Envelope constructor 2023-05-03 09:37:04 -05:00
Jeff Epler eea9b62978
synthio: MidiTrack: sample_rate is always available 2023-05-03 09:37:02 -05:00