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
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
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
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
Jeff Epler
dd262258e0
synthio: Add MidiTrack.error_location
to record errors
...
.. instead of just printing the unraiseable error on the repl
2023-05-03 09:37:02 -05:00
Jeff Epler
d8550f4e7c
synthio: fix offset in default square waveform
2023-05-03 09:37:02 -05:00
Jeff Epler
b2f32a5397
Apply suggestions from code review
...
Co-authored-by: Scott Shawcroft <scott@tannewt.org>
2023-05-02 19:22:10 -05:00
Jeff Epler
c369527ace
remove line added while debugging failed doc builds
...
Co-authored-by: Scott Shawcroft <scott@tannewt.org>
2023-05-02 19:17:51 -05:00
Mark
2b17fda028
Merge pull request #7927 from adafruit/thinkink_update
...
Feather RP2040 ThinkInk update
2023-05-02 17:48:01 -05:00
Liz
480c4f1081
Update pins.c
2023-05-02 17:27:53 -04:00
Liz
facd3a4e78
Updating directory name
2023-05-02 17:07:49 -04:00
Liz
cba7a812fc
Minor update for Feather RP2040 ThinkInk
...
hihi - updating board name from EPD to ThinkInk and adding pin def for board.BUTTON
2023-05-02 17:02:59 -04:00
Scott Shawcroft
750615f2da
Merge pull request #7430 from Lanzaa/rp2040_cpu_frequency
...
Add frequency setting for RP2040 boards.
2023-05-02 09:52:28 -07:00
Scott Shawcroft
488dca565f
Merge pull request #7922 from tannewt/dvi320
...
Take in framebuffer resolution, not output res
2023-05-02 09:22:51 -07:00
Jeff Epler
80e1418c01
Merge pull request #7921 from tannewt/imx_evks
...
Add additional iMX RT support
2023-05-02 07:09:50 -05:00
Scott Shawcroft
051540f8da
Fix broadcom NAN
2023-05-01 11:38:13 -07:00
Scott Shawcroft
0aa71ed6e6
Tweak the picodvi docs and arg checking
2023-05-01 11:30:04 -07:00
Dan Halbert
fdf436526c
Merge pull request #7924 from weblate/weblate-circuitpython-main
...
Translations update from Hosted Weblate
2023-05-01 10:24:47 -04:00
Yutaro Urata
a7c3955c41
Translated using Weblate (Japanese)
...
Currently translated at 40.8% (408 of 999 strings)
Translation: CircuitPython/main
Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ja/
2023-04-29 19:47:37 +02:00
Scott Shawcroft
b08714bb8f
Take in framebuffer resolution, not output res
...
Fixes #7911
2023-04-28 17:13:17 -07:00
Scott Shawcroft
1a4e1d114c
Merge pull request #7916 from bablokb/badger_2040_w
...
Add support for Pimoroni Badger2040W
2023-04-28 16:42:03 -07:00
Scott Shawcroft
c5d3de2a17
Merge pull request #7920 from bablokb/plasma2040w
...
Add support for Plasma2040w
2023-04-28 16:39:13 -07:00
Scott Shawcroft
8104b824e0
Standardize CPU temp and voltage. Add autogen warning
2023-04-28 16:19:43 -07:00
Scott Shawcroft
18207cd547
Guard GCC13 pragma
2023-04-28 11:28:48 -07:00
Scott Shawcroft
f837f2438a
Update USB PIDs
2023-04-28 11:16:45 -07:00
Scott Shawcroft
a9dc31a881
Add additional iMX RT support
...
This adds a script to generate the peripherals files (except clock).
It adds support for the 1015, 1020, 1040, and 1050 EVKs.
Some work was started on 1176 but it isn't working. So, the board
def is in a separate branch.
Fixes #3521 . Fixes #2477 .
2023-04-28 11:01:13 -07:00
Bernhard Bablok
14c17224a1
update product-id
2023-04-28 08:57:22 +02:00
Bernhard Bablok
4f8ae14c18
update to upstream version
2023-04-28 08:56:52 +02:00
Bernhard Bablok
a86c5f7310
Merge branch 'main' into plasma2040w
2023-04-28 08:41:02 +02:00
Scott Shawcroft
f1ebd90ad4
Merge pull request #7913 from ChenxiXiao/main
...
Update zh_Latn_pinyin.py
2023-04-27 10:27:37 -07:00
Bernhard Bablok
ec6fde91ad
integrate latest changes from upstream
2023-04-27 18:14:46 +02:00
Bernhard Bablok
cc3d61eb49
fixed merge conflicts
2023-04-27 13:23:34 +02:00