Sonic Pi v4.0.0 Release Notes
🚀 To be released... <!-- (view commits): -->
Known Issues (to be addressed in upcoming Betas)
- 🍎 On macOS, the booting procedure no longer attempts to tweak the audio-card's sample rates to match and instead crashes on a mismatch.
- There are no GUI elements to view/manipulate the new Link metronome.
- 🔗 Link is enabled by default and cannot be disabled via the GUI.
- 🐧 MIDI port names are very long and change on disconnect/reconnect on Linux.
- 🔀 Using
syncwith an external OSC or MIDI message whilst in
:linkbpm mode is broken.
- ⚡️ On macOS if there are no MIDI devices attached at boot, the updater doesn't work. However, it does appear to if devices are attached at boot.
💥 Breaking Changes
- Previously it was possible that the
samplesilently ignored the last onset of a given sample. This has now been fixed. Some samples may therefore have an additional onset index which won't affect any code using earlier indexes but will affect code which uses indexes larger than the number of onsets (and therefore relying on the index wrapping behaviour).
- 🚚 The Minecraft Pi Edition API has been removed (all
mc_fns). Minecraft Pi Edition appears to no longer ship on Raspberry Pi OS and the Pi Edition API is not the same as the standard Minecraft API.
- 👌 Support for Ableton Link. This enables you to synchronise the tempo of Sonic Pi running on multiple computers connected on the same network. It will also enable automatic BPM synchronisation with music production tools such as Ableton Live, VJ tools such as Resolume, DJ hardware such as the MPC and many compatible iPad music apps. For a full list see: https://www.ableton.com/link/products/,,
- 🆕 New
:linkoption to fn
use_bpm. This enables Link mode for the current thread which automatically syncs the BPM to the Link metronome (which also syncs it with all other Link-capable apps running on any computer connected to the local (wired or wifi) network.
- 🆕 New fn
linkwhich sets the BPM to a new
:linkmode and also waits until the start of the next bar (as determined by Link) before continuing. This lets you automatically sync tempo and beat phase in one command.
- 🆕 New fn
link_syncwhich sets the BPM to a new
:linkmode, waits for the Link session to be playing and also waits until the start of the next bar (as determined by Link) before continuing. This lets you automatically "arm" Sonic Pi to sync tempo and beat phase and wait for an external "play" command from another Link device - such as Ableton Live.
- 🔗 New fn
set_link_bpm!to change the BPM/tempo of the Link metronome (and simultaneously change the tempo of all connected Link-capable apps on the network).
- New fn
current_random_sourcewhich returns the current random number source kind (see
- 🆕 New fn
load_synthdefwhich lets you load a single synthdef file.
load_synthdefsnow loads both directories and single files (by dispatching to
Synths & FX
- 🆕 New synth
:winwood_lead- a lead synth inspired by the Winwood songs from the early 80s.
- 🆕 New synth
:bass_foundation- a soft bass synth inspired by the sounds of the 80s.
- New synth
:bass_highend- an addition to the :bass_foundation synth inspired by the sounds of the 80s.
- 🐎 Preference pane is now an overlay which hovers over the main window. This means that opening and closing it does not inadvertantly modify a carefully chosen layout e.g. for a performance.
- 🆕 New preference option to show and hide the pane titles such as Scope, Log, Cues, Context, Help, etc.
- Increase width of panel dividers and highlight on mouse hover.
- Highlight scrollbars on mouse hover.
- Scrollbars now have rounded edges.
- Teach autocompletion about random source choices:
- 👌 Improve syntax indentation.
- 👌 Improvements for Arabic, Catalan, Chinese (Simplified), Dutch, Estonian, French, German, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Russian, Sinhala, Spanish, Swedish
- 🌐 Introduced new translations for Basque, Gaelic.
- 📚 Many minor documentation fixes and improvements.
- 0️⃣ When running on Raspberry Pi, Sonic Pi connects to PulseAudio by default.
- ⏱ The scheduling accuracy of outgoing OSC and MIDI messages is improved on Windows.
note_rangecan now handle both increasing and decreasing note ranges.
- 👌 Improve robustness of outgoing OSC messages in the case where an outgoing hostname is malformed and can't be resolved.
:pretty_bellnow properly free themselves when they finish playing, which now means the resources they consumed are also properly freed.
- Indexing into an empty ring no longer causes a divide by zero error.
- 🏁 No longer attempt to increase audio server priority on Windows which causes booting errors in some cases.
- 🛠 Fixed encoding issues when saving/loading files containing non-ascii characters on Windows.
rangeno longer loops infinitely with a step size of 0. Instead it now throws an error.
- In some circumstances having the lissajous visualiser visible caused the GUI to crash on startup. This has now been addressed.