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!
Breaking Changes
- MIDI port description names may be slightly different from previous versions. Precise matches on MIDI ports via
sync
andget
will 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.
New
- Completely new MIDI subsystem.
-
use/with_random_source
- change the current random stream used when selecting random values. We now have:white
,:light_pink
,:pink
,:dark_pink
and:perlin
. Default is:white
which 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.md
for more information.
Synths & FX
- New synth
:rodeo
- emulating an electric piano. - New synth
:kalimba
- an African thumb piano. - Add sliding to
:autotuner
FX optsnote:
andformant_ratio:
. -
mix
,pre_mix
andpre_amp
opts are now affected byslide:
.
GUI
- 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.
Improvements
- 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
play
andsample
on the same line such asplay sample :loop_amen
is now an error with an appropriately helpful description to explain thatplay
should be removed.
Bugfixes
- Fix
pulse_width_curve:
andpulse_width_slide:
opts which were incorrectly swapped onpulse
,subpulse
anddpulse
synths. - 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_defaults
after a call touse_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.
- Fix
.take_last
to no longer returnnil
for min and max of the range. - Fix off-by-one error in
line
fn. Now should always return rings of the correct length.
Releases
macOS (10.13 - 11) | |
Link | Sonic-Pi-for-Mac-x64-v3.3.0.dmg |
Size | 119M |
MD5 | a4355c20fb2e4fd3376be1f0397f4f36 |
SHA256 | d55e756a728706e64f8bc98db2dea93e61c3f29e827aa086906704d08ff7a5e1 |
Windows 10 | |
Link | Sonic-Pi-for-Win-x64-v3.3.0.msi |
Size | 166M |
MD5 | 0070f6395e82ab14818ddcb5aa0a97ec |
SHA256 | 7f1b967ae661b446cdfc9327126ae8449fbf9ba1f49fb8a0b5ef9f00b0dbb12c |
Raspberry Pi OS (2021-01-11+) | |
Link | sonic-pi_3.3_1_armhf.deb |
Size | 66M |
MD5 | 7335c2e538d76c9e046c939125171ef6 |
SHA256 | 00dbf08169b6199b625da50d7a658f8692b3f5f70a75f747a14a6675e1daba45 |