Skip to content


Choose a tag to compare
@samaaron samaaron released this 28 Jan 16:15

Version 3.3.0 - 'Beam'

28th Jan, 2021

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 and get 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.


  • 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/ for more information.

Synths & FX

  • New synth :rodeo - emulating an electric piano.
  • New synth :kalimba - an African thumb piano.
  • Add sliding to :autotuner FX opts note: and formant_ratio:.
  • mix, pre_mix and pre_amp opts are now affected by slide:.


  • 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 play and sample on the same line such as play sample :loop_amen is now an error with an appropriately helpful description to explain that play should be removed.


  • Fix pulse_width_curve: and pulse_width_slide: opts which were incorrectly swapped on pulse, subpulse and dpulse 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 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.
  • Fix .take_last to no longer return nil for min and max of the range.
  • Fix off-by-one error in line fn. Now should always return rings of the correct length.


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