Sonic Pi v3.2.0 Release Notes
🚀 To be released... (view commits):
💥 Breaking Changes
spreadnow produces identical patterns as in the Toussaint paper. Previously, some of the patterns had been shifted. Use the
rotate:opt to match prior behaviour if required.
- OSC cues now include the IP address and port number of incoming messages
oscfn now forces all outgoing args to either be numbers or strings (binary blobs and timestamps are not supported at this point). If the value is neither a number or string, it is 'inspected' and the resulting description string is sent instead.
- 0️⃣ The default incoming OSC cues port is now 4560 as the previous value was registered on the Iana Service Name and Transport Protocol Port Number Registry. However, 4560 is currently free.
🆕 New Fns
eval_fileevaluates the contents of the specified file inline in the current thread as if it was a function.
midi_sysexfor sending MIDI sysex messages.
- ➕ Add new chain fn
.noteswhich takes a ring of values and returns a new ring with each element treated as a note. This will leave numbers unchanged but will turn note names like
:C1to their corresponding MIDI note.
Synths & FX
gverbFX now checks to ensure that the
room:opt is greater than or equal to 1.
- 👍 The
pianosynth now supports fractional notes such as
- 🆕 New WCAG 2 level AAA compliant high contrast colour theme. This is especially suited for those with low vision.
- 🆕 New application menu and shortcuts.
- 🆕 New default icons which match the pro icon feel.
- 🚚 Move to simple numbered labels for buffers.
- The version number is no longer placed in the initial comment of new empty buffers. This felt like a friendly thing to do, but can be confusing if a given buffer hasn't been used and the version was updated. This results in the buffer reporting the old version number that was used to create the buffer not the current version used to display it.
- 🌐 Many, many translation improvements. Thanks to all the wonderful volunteers contributing to the translation effort: https://hosted.weblate.org/projects/sonic-pi/
- 👍 Allow scale degrees over an octave and augmented/diminished degrees.
.lookon a normal array such as
[1, 2, 3]will now automatically convert it to a ring first.
- Further improve boot stability on Mac in the cases where audio input/output sample rates do not match (typically due to the use of bluetooth headsets). Audio inputs on macOS are now disabled by default unless we can definitely determine the audio rates are the same.
- ⏪ Revert synthdefs to original bytecode version. This fixes a regression
in at least the
:tb303synth and possibly others. All synths should sound and behave as they did in
- 🛠 Fix issue with scaling default opts. Previously it was possible that unspecified opts correctly fell back to the default value - however that default value wasn't scaled. Default values are now always scaled whether or not explicitly specified.
with_sched_ahead_timenow correctly sets the schedule ahead time before running the block and returns the result of the block itself
- When "Enforce Timing Guarantees" is selected, Sonic Pi wil no longer
throw out of time warnings in 'real time' threads (specified using
cueno longer print duplicate messages which was possible in some cases.
- 🛠 Fix
time_warpexamples which were incorrect and misleading.
- 👌 Improve pid handling on Linux. This should reduce the number of zombie processes accidentally generated.
with_swingnow matches documented behaviour.
sample_durationto scale correctly.
- 🛠 Fix GUI bug which could result in a buffer stuck in the highlighted state after hitting Run.
- Fix the
on:opt when playing chords to work similarly across all notes in a given chord.
defoncefrom being executed multiple times
.takeon an empty ring no longer results in infinite recursion but instead returns an empty ring.