Ten months of development, over 700 individual commits, loving contributions from many many people have gone into this new version of Sonic Pi. This release is also the result of a 3 month long community beta process which took place over on Patreon where supporters got access to early releases and really helped polish and shape development. Huge thanks to everyone that has supported continued development. We’re really excited and proud to share this new release with you all.
In terms of significant changes, there have been many internal improvements, including a full rewrite of our MIDI subsystem. This shouldn’t result in much change as a user (although some MIDI cue names might have changed slightly) but it really sets us up for some exciting developments in the future. We’re essentially moving much more of the core input/output functionality of Sonic Pi into a special system called the BEAM and a language called Erlang. This is a system that has a strong emphasis on low latency, low jitter and high concurrency which is exactly what the IO of a music system requires! We’re so excited to see what we’ll be able to achieve with this new approach that the BEAM features as the codename of this release.
Another area that has seen a lot of love and attention is our strong focus on accessibility. We now have a much improved menu bar which essentially duplicates much of the functionality found in the preferences but in a format that’s extremely easy to work with via a screen reader. We’ve also added a new context pane that displays the current line and character position as a direct result of a collaboration with Leiden University’s accessibility group. There have already been numerous studies that are reporting success for blind and low-vision users of Sonic Pi - so we’re confident we’re on the right track with respect to accessibility. We’re also not stopping here and are always looking for ways to lower the many barriers to entry for creative experiences with code for everyone.
This is also the first release where we officially welcome Chris Maughan as the latest member of the Sonic Pi core team. Chris has made significant contributions over the last year including improvements to the scope and a complete reworking of our build process. I hope you join us in welcoming Chris to the team.
Finally, we have official support for macOS Big Sur, some lovely new synths and FX, improved translations, support for advanced configuration (audio and colour theming), new Turkish scales and many, many bug fixesand improvements.
We really hope you love this version of Sonic Pi as much as we do.
Happy Live Coding!
- MIDI port description names may be slightly different from previous versions. Precise matches on MIDI ports via
getwill have to be updated accordingly.
- Incoming MIDI cues now no longer include clock tick events. Optionally re-enabling these and new ways of working with incoming timing systems will feature in a future release.
- Completely new MIDI subsystem.
use/with_random_source- change the current random stream used when selecting random values. We now have
:perlin. Default is
:whitewhich is the same stream as previous releases to preserve compatibility.
- Many Turkish scales (makams) have been added.
- New user config directory for fine tuning aspects of the app such as advanced audio settings. See
~/.sonic-pi/config/README.mdfor more information.
Synths & FX
- New synth
:rodeo- emulating an electric piano.
- New synth
:kalimba- an African thumb piano.
- Add sliding to
pre_ampopts are now affected by
- New context pane which displays the current line number and position making this information accessible to screen readers. This may be shown/hidden with a preference setting.
- New keyboard shortcuts for switching directly to a buffer. S-M-1 (hold shift and Meta and the number 1) will jump to buffer 1. Meta is Cmd on macOS and alt on Windows/Linux.
- Autocompletion system can now be enabled or disabled. This is intended to help those using screen readers for which the autocompletion system is currently incompatible.
- Sample listings in the help system now have a handy play button that allows you to preview them by clicking rather than having to write any code.
- Improvements for Catalan, Chinese, Danish, Dutch, Finnish, French, German, Hebrew, Hungarian, Icelandic, Italian, Korean, Norwegian, Polish, Portuguese, Portuguese (Brazil), Russian, Slovak, Spanish, Swedish, Thai, Turkish and Vietnamese translations.
- Sinhalese translation added.
- GUI now has a much more complete menu bar which duplicates the functionality of the preferences pane whilst making it easily accessible to screen readers.
- MIDI port names are now autocompleted.
- The GUI now correctly saves and restores the visibility preferences for the buttons, tabs and log pane.
- Many minor improvements to the documentation.
- Unsent external MIDI messages are now flushed and no longer sent after hitting the Stop button.
- The common mistake of calling both
sampleon the same line such as
play sample :loop_amenis now an error with an appropriately helpful description to explain that
playshould be removed.
pulse_width_slide:opts which were incorrectly swapped on
- Improve boot on Windows systems that have default locale code pages currently unsupported by Ruby. We now force UTF-8.
- Fix issue causing the incorrect error line to be highlighted in the GUI.
- Fix issue when syncing with cues with
-symbols in their paths.
- Fix bug with
use_merged_synth_defaultsafter a call to
use_synth_defaults. This bug was triggered in the “Sonic Dreams” example which now plays through correctly again.
- MIDI device hotswapping (detecting whether devices were connected or disconnected) now works on macOS.
.take_lastto no longer return
nilfor min and max of the range.
- Fix off-by-one error in
linefn. Now should always return rings of the correct length.
|macOS (10.13 - 11)|
|Raspberry Pi OS (2021-01-11+)|