Releases: sonic-pi-net/sonic-pi
4.5.1 - '8oh8'
This is a maintanence and bugfix release which includes updates to all the major internal dependencies. The main goal of this
release is to fix boot issues on Windows with specific locale settings.
Translations
- Improvements to the Chinese, Dutch, German, Indonesian, Italian, Japanese and Russian translations.
Bugfixes
- Only remove one level of comments when uncommenting
Releases
Mac - Intel | (macOS 12+) |
Link | Sonic-Pi-for-Intel-Mac-x64-v4-5-1.dmg |
Size | 145M |
MD5 | 3de35c6ca9ac1396a43156c1e3fa2fb3 |
SHA256 | 15d589a27636edc4a4b9e9685950d857c7dd076d310497d650f90a387645456a |
Mac - Apple Silicon | (macOS 13+) |
Link | Sonic-Pi-for-Mac-arm64-v4-5-1.dmg |
Size | 127M |
MD5 | 0da7cc7508f2ec94e701ef3e7864b364 |
SHA256 | 58c72fca0b42588060c21d4d677cc8ffe377ef82409e7f2a73fff0fc2163d278 |
Windows x64 | (10/11) |
Link | Sonic-Pi-for-Win-x64-v4-5-1.msi |
Size | 247M |
MD5 | c35cef126c7e7115f6ef147ff9e82999 |
SHA256 | 6caae70cd6c6c289c8b3a4a368edaff76f5e513989ece5ff4f5d77acf3c7ed7b |
Raspberry Pi OS | (Bookworm) |
Link | sonic-pi_4.5.1_1_bookworm.arm64.deb |
Size | 87M |
MD5 | d2c98f287b9941c468f936890b733d71 |
SHA256 | 2808c21863fcd3dd9bd7efdf4fecd802510451a92eda578ff9f69b7f5e1806d4 |
v4.5.0 - '808'
This release comes packed with a number of exciting new synths for you to play with. We have a new hard-hitting kick drum :gabberkick
for that gabber sound and a new vintage electric piano :rhodey
synth. There are also 16 new percussive synths inspired by the infamous TR 808 drum synthesiser. All the synths come with many opts for you to play with to manipulate and change the default timbres.
There are also a number of minor improvements and bug fixes as detailed below.
Have fun and get your live coded 808 on!
Synths
- New synth:
:rhodey
- The sound of an electric piano from the 60's and 70's, producing a characteristic metallic sound for notes below:g2
. Adapted for Sonic Pi from SuperCollider Code. - New synth
:gabberkick
- An aggressive Gabber synth sound adapted for Sonic Pi from SuperCollider Code - 16 new 808 inspired synths based on Yoshinosuke Horiuchi's:
:sc808_bassdrum
,:sc808_snare
,:sc808_clap
,:sc808_tomlo
,:sc808_tommid
,:sc808_tomhi
,:sc808_congalo
,:sc808_congamid
,:sc808_congahi
,:sc808_rimshot
,:sc808_claves
,:sc808_maracas
,:sc808_cowbell
,:sc808_closed_hihat
,:sc808_open_hihat
,:sc808_cymbal
,
Improvements
- Improve error message for invalid
midi_to_hz
args
Translations
- Improvements to the Chinese, Danish, Portuguese, and Spanish translations.
- Add native language name for Arabic
Bugfixes
- Fixed a regression in the error reporting - "did you mean" suggestions now work again.
- Fix system language detection when the language is generic English
Releases
Mac - Apple Silicon | (macOS 13+) |
Link | Sonic-Pi-for-Mac-arm64-v4-5-0.dmg |
Size | 126M |
MD5 | 24d52ebb3695881c3fda10c0dbbf51e6 |
SHA256 | 3e333bbaaeed36331448eb4a7e31faf866b2c8176ab59962ba3d5d48d6dce7b0 |
Mac - Intel | (macOS 11+) |
Link | Sonic-Pi-for-Intel-Mac-x64-v4-5-0.dmg |
Size | 163M |
MD5 | 9f5d77d2213cf3e85d544c51ff6c72ab |
SHA256 | e5aee461fba113ef3e3a43ba9feb8e49bcf824e76d4aa195191c82d4ce387ab3 |
Windows x64 | (10/110) |
Link | Sonic-Pi-for-Win-x64-v4-5-0.msi |
Size | 218M |
MD5 | 3892e2084a1c74da3285133c6368b6cf |
SHA256 | 4c52da5ee00c4404f267c2ae2d85607334b0f852cc2d0150548cc682108e5592 |
Raspberry Pi OS 64bit | 'Bookworm' - released on October 10th 2023 |
Link | sonic-pi_4.5.0_1_bookworm.arm64.deb |
Size | 87M |
MD5 | c1db90f1c28bd3934d8cfb9cdd4c4c01 |
SHA256 | 6ee415a1a97448adc517723e624611493dfe68b7c7f8d355563fda9bc75c00be |
v4.4.0 - 'Sawtooth'
This release comes chock-full of new samples to play with. Firstly we have 5 new samples donated to Sonic Pi by the wonderful electric artist Arovane. These are a selection of glitchy beats recorded at 130 BPM. To best use these either use_bpm 130
or use the beat_stretch
opt to make them fit seamlessly into your current BPM. They're also wonderful to use with the onset:
option for extracting individual sounds to use on their own. Thank-you so much to Arovane for letting us play with these amazing new sounds.
Continuing on the sample theme, there are also 20 new hi-hat samples. These all have a :hat_
prefix and there's a wide variety of sounds to play with ranging from acoustic to electro to metal. They're perfect for adding a sense of drive or groove to your tracks.
This version of Sonic Pi is also the first to support a fully native build for Apple Macs running Apple Silicon CPUs such as the M1 and M2. This means that Sonic Pi can now run on modern Mac computers without needing Rosetta to run things under emulation.
Samples
- New looping samples contributed by the wonderful electronic artist Arovane. The new samples are:
:arovane_beat_a
,:arovane_beat_b
,:arovane_beat_c
,:arovane_beat_d
,:arovane_beat_e
. - 20 new hi-hat samples:
:hat_snap
,:hat_zap
,:hat_cats
,:hat_tap
,:hat_bdu
,:hat_psych
,:hat_zild
,:hat_zan
,:hat_zgump
,:hat_noiz
,:hat_sci
,:hat_star
,:hat_gem
,:hat_raw
,:hat_yosh
,:hat_mess
,:hat_cab
,:hat_gnu
,:hat_hier
,:hat_metal
.
GUI
- Improve text formatting of the information window that pops up with a boot error.
Documentation
- Improvements to section 8.2 of the tutorial where the code has been updated to better match the behaviour of
play_pattern_timed
. - Improved
play_pattern_timed
function documentation.
Translations
- Improvements to the Catalan, Chinese, Croatian, French, Georgian, Hebrew, Indonesian, Latvian, German, Portuguese, Russian, Slovak, Spanish, Swahili and Turkish translations.
Bugfixes
- Syntax and runtime errors are now correctly coloured once again - pink for runtime and blue for syntax.
- Fix
==
operator when comparing maps withnil
. Now returnsfalse
as expected.
Releases
Mac - Apple Silicon | (macOS 13+) |
Link | Sonic-Pi-for-Mac-arm64-v4-4-0.dmg |
Size | 141M |
MD5 | 7f0b2cc9dfb631356be91c4e87100935 |
SHA256 | fa4020ac4c3259bbed6d456c4b0e13126fe404c1b474654bffd583335f5d0ab5 |
Mac - Intel | (macOS 11+) |
Link | Sonic-Pi-for-Intel-Mac-x64-v4-4-0.dmg |
Size | 166M |
MD5 | 314e140a83a1abc845925b0676890a2b |
SHA256 | 7ed0e94cf92fdf2e8d51ee42c5f7c3478fbcef9630eb12dccf203f5e72bb517f |
Windows x64 | (10/11) |
Link | Sonic-Pi-for-Win-x64-v4-4-0.msi |
Size | 261M |
MD5 | 2d7527943c145f1a37d137af9bde5c89 |
SHA256 | bc51015840161b1f0bfe4ccaae9cc0edbbe8a9d3d45799b8b2da1feb7dfc7ca9 |
Raspberry Pi - 64 bit | (Bullseye) |
Link | sonic-pi_4.4.0_1_bullseye.arm64.deb |
Size | 96M |
MD5 | ba5ef6e4c79370d9f62a94314daf3fa8 |
SHA256 | 0f0ce293470663ab23d1e5314d8256fc20ee9fc94e1f9b8235b6bd5c727a3326 |
Pathfinder
Version 4.3.0 'Pathfinder'
30th September 2022
This is another maintenance and bugfix release - primarily addressing a critical issue with configuring external sound cards for audio input. This was accidentally introduced in v4.2. An issue with the auto-indentation preference in the GUI has also been addressed.
The GUI is now restricted to having one instance open at any one time. Having multiple instances of Sonic Pi running simultaneously can cause conflicts. This is now no longer possible, which should reduce any issues users may have observed when accidentally opening the app multiple times in quick succession. Now, only the first instance will open and all the subsequent others will exit before starting if they detect another instance already running.
GUI
- Restrict running instances to only allow one instance of Sonic Pi to be running at any one time on a given machine.
Translations
- Improvements to the Dutch, Estonian, Japanese and Polish translations.
Bugfixes
- The behaviour of external audio card configuration should now be as it was in v4.1.
- The auto-indent preference in the GUI now works as expected. Unchecking will stop the GUI from automatically reformatting the code.
Releases
macOS 10.15+ | |
Link | Sonic-Pi-for-Mac-x64-v4-3-0.dmg |
Size | 128M |
MD5 | a72795543420734aabd6fc004debd0b4 |
SHA256 | c5646b221d61ba55c8e1025a646718d1244333bd57e2a7bccc8eb71c5a7be585 |
Windows x64 10/11 | |
Link | Sonic-Pi-for-Win-x64-v4-3-0.msi |
Size | 203M |
MD5 | 2d0c9796fb67a956b85820459ad0cb22 |
SHA256 | 86074ea63392c145d037eae54567311f0a8178906a3e2fe809746ce966c612cc |
Raspberry Pi OS - Bullseye - (64 bit) | |
Link | sonic-pi_4.3.0_1_bullseye.arm64.deb |
Size | 88M |
MD5 | 41439e913679787cfb579aaa4a36ea9e |
SHA256 | 44acb5b1cf6aee18f282fa15109b27f8d0336cb20841b755154fc8e947568bc5 |
Raspberry Pi OS - Bullseye - (32 bit) | |
Link | sonic-pi_4.3.0_1_bullseye.armhf.deb |
Size | 88M |
MD5 | cd5e2570d3f9fb68f06b8f4d282effdb |
SHA256 | 61fe3ac0747e9b8440857d4d71d79b1360376efeb5f765258d2ce82477891525 |
Batch
Version 4.2.0 'Batch'
14th September 2022
The main purpose of this release is to address a booting issue discovered on a school Windows cluster with common security restrictions. This issue was reported by Adam Cooper from Moor Park High School & Sixth Form in the UK. Adam was wonderfully helpful in finding the specific issue and testing potential solutions. Thanks Adam!
If you happen to have had any trouble running v4 of Sonic Pi on your school clusters, please give this release a go! (Note, this issue didn't affect v3 of Sonic Pi).
In addition, there have been some translation improvements, Global Time Warp now has a greater range and a couple of time_warp
related bugs were found and dealt with. Have fun!
GUI
- Change Global Time Warp range from +-250 to -250 -> 999. This lets users access the full phase down to a BPM of 48.
Improvements
- Booting process on Windows has been modified to enable it to run when executing in an environment which restricts access to CMD (which prevents terminal usage and running .bat files). This is typical in schools.
- Sonic Pi stores all its history, configuration and logs in a folder called
.sonic-pi
which is typically placed in the user's home directory. If the user happens to not have permission to write to their home directory, Sonic Pi now raises a descriptive error on boot and explains that the fix is to set an environment variable calledSONIC_PI_HOME
to point to a directory the user does have permission to write to.
Translations
- Improvements to the Dutch, Hungarian and Indonesian translations.
Bugfixes
- Teach timing safety system that
time_warp
doesn't sleep (even if it contains calls tosleep
internally). This now means that wrapping all code within alive_loop
withtime_warp
no longer causes the thread to spin out of control. It instead reports that the live loop did not sleep as expected. - Throw error when attempting to call
sync
within atime_warp
. This is because time warps are effectively timeless andsync
asks the running thread to wait for an unknown period (until a matching event appears). Attempting to wait within a timeless context is clearly nonsensical!
Releases
macOS 10.15+ | |
Link | Sonic-Pi-for-Mac-x64-v4-2-0.dmg |
Size | 128M |
MD5 | da5ee6df18ca869729ec001bad75051c |
SHA256 | 08fa08e5a6fbdc8adb000a832c03e4f98aeaf8688104b7c6ecf54a0a3ab9d0e0 |
Windows x64 10/11 | |
Link | Sonic-Pi-for-Win-x64-v4-2-0.msi |
Size | 203M |
MD5 | dacbcc04ba4bdd9ce5da6603db34cd2b |
SHA256 | e71329970bc4ca024290586cd253832535554e50afce3b3df98cb858193c8710 |
Raspberry Pi OS (Bullseye) 64 bit | |
Link | sonic-pi_4.2.0_1_bullseye.arm64.deb |
Size | 88M |
MD5 | 7bffc92ea2172ddb5b4bb9bab49e9c81 |
SHA256 | 433ffd5bcd8e55aa743a3e8b1c76f04d2a4799c05847ce882a64cfe5f62f9366 |
Raspberry Pi OS (Bullseye) 32 bit | |
Link | sonic-pi_4.2.0_1_bullseye.armhf.deb |
Size | 88M |
MD5 | 18725a00c1bd9ff7291fec0206bac228 |
SHA256 | 37ab107fa72bf43e4f38922d6d00dcf8179fe9ce6ca5086bdaf72cd61740a033 |
Phase
Version 4.1.0 'Phase'
30th August 2022
The release of v4 of Sonic Pi introduced the ability to change the tempo of live running code to an external beat. This is possible either by setting the tempo manually to a specific BPM (Beats Per Minute) or by using the Tap Tempo button to tap along to an external rhythm. However, even when you do this, it's quite likely that things still don't sound quite right as there's a good chance that the two rhythms are out of phase despite being at the same tempo. This release introduces a new feature - Global Time Warp which lets you shift the phase of Sonic Pi's timing back or forward up to 250 milliseconds to let you align it with an external rhythm.
Taking a quick step back, what does it mean for two rhythms to be out of phase and why is it a problem? Imagine you had two metronomes ticking away. If one has a higher tempo than the other, then one will be ticking faster than the other. This can be fixed by setting the tempos to be the same. However, unless they were both started at exactly the same time, they both wont be ticking at the same time. Instead, one will tick, then the other, then the first, then the second, etc. The second will always be a little later than the first and as they are at the same tempo, they will never catch up with each other, they will always tick at different times. This is called being out of phase. When two rhythms are out of phase it can sound very messy. Therefore, being able to get rhythms to start at exactly the same time is really important to being able to jam together and for it to sound good.
The new Global Time Warp control lets you shift the timing of all triggered synths, MIDI and OSC messages forwards or backwards by a specified time in milliseconds. You can either slide a slider or type in a specific time to adjust the phase of Sonic Pi's timing to match the phase of an external rhythm.
This means you can now easily jam to an external track - first by tapping out the tempo and then by shifting the phase using the new Global Time Warp controls until it sounds right. This is essentially what DJs do when they mix tracks together in a live set - only now you can layer coded rhythms, basslines and riffs on top of external music with code. This is not only a great way to perform live, but it's also a wonderful way to practice - by jamming along to music you love.
In addition to this, the accuracy of the Tap Tempo functionality has been improved in addition to UI tweaks to all the metronome controls.
Have fun jamming in phase to external music and take your live coding collaborations to the next level!
GUI
- New Global Time Warp controls. This lets you adjust the timing of all scheduled events (synths, samples, MIDI and OSC) forwards or backwards up to 250 milliseconds. This is important for matching the phase of an external rhythm.
- Improved Tap Tempo logic aimed towards increased BPM detection accuracy and speed.
- BPM scrubber and new Global Time Warp scrubber now respond to mouse wheel changes.
Improvements
- Clearly specify in the tutorial that user-defined function names should start with a lower case letter. Therefore use
define :foo
rather thandefine :Foo
.
Translations
- Minor improvements to the Indonesian, Korean Portuguese (Brazil) and Russian translations.
Bugfixes
- The
duration:
opt formidi_clock_beat
has been fixed. - Fix
scsynth_opts
andscsynth_opts_override
options in the~/.sonic-pi/config/audio-settings.toml
config file. - Audio output via external soundcards on macOS should now work without requiring audio inputs to be enabled in the GUI.
current_debug
now correctly returnstrue
if logging/debug is enabled (the default). Previously it reported the inverse.- Minor improvements to documentation layout.
Releases
macOS 10.15 (Catalina)+ | |
Link | Sonic-Pi-for-Mac-x64-v4-1-0.dmg |
Size | 129M |
MD5 | bb20d0d723236028c4b1cee2961c812c |
SHA256 | cf3cee887ddfe9e436b48167116e17e21a1b57fbce685697fc77b0736305d67a |
Windows 10/11 x64 | |
Link | Sonic-Pi-for-Win-x64-v4-1-0.msi |
Size | 203M |
MD5 | 12d85ccf447a9f87e06cc03cde2976cc |
SHA256 | 46a3756d15884becfa6195d12ce63715117b2fc9cd7053e19358d58f422b23c0 |
Raspberry Pi OS (Bullseye) 64 bit | |
Link | sonic-pi_4.1.0_1_bullseye.arm64.deb |
Size | 92M |
MD5 | 25a4f9bcdaef3bbfc8db070802d6b881 |
SHA256 | e0683aa68cab0d15270cabe7f51b0a8d12056a093f5fd6ca2a598a288e8f8654 |
Raspberry Pi OS (Bullseye) 32 bit | |
Link | sonic-pi_4.1.0_1_bullseye.armhf.deb |
Size | 88M |
MD5 | 5a23a7dd6fa112a15b9795ef0c73f091 |
SHA256 | a5caf041b02d721c35b8ea01623881c0c3636f918f3d76457e6afa5962af16cb |
Dovetail
Version 4.0.3 'Dovetail'
18th July 2022
This is a minor bugfix and maintenance release.
Improvements
- The docs for
beat
have been updated to reflect the beat value can no longer be assumed to start at0
. This changed since Ableton Link integration in v4 which now defines the initial beat value based on its internal state.
Translations
- Minor improvements to the Vietnamese translation.
Bugfixes
- A regression in the function
midi_sysex
introduced in v4 has been resolved.midi_sysex
can now be called as expected.
Releases
macOS (10.15 Catalina+) | |
Link | Sonic-Pi-for-Mac-x64-v4-0-3.dmg |
Size | 129M |
MD5 | 0670dbcbb01967dd64cd42ed8dd002ae |
SHA256 | 68c31ce8679759aac565794d962970b86cdd36dce5b59c9d92c9a8810bec2119 |
Windows 10/11 x64 | |
Link | Sonic-Pi-for-Win-x64-v4-0-3.msi |
Size | 202M |
MD5 | fc7bf535ccdca97d6e3fce4683259a85 |
SHA256 | 404113a6a72a24bbc74709b01d49f6ce998eb48bc4fce6e90e326d4e362e2b0e |
Raspberry Pi OS 64-bit | |
Link | sonic-pi_4.0.3_1_bullseye.arm64.deb |
Size | 92M |
MD5 | c6629117c149298282ded821a79bc597 |
SHA256 | 8dc6f56f9bb2d307b2176abd98c7e5fffcd75939265d7997800bad133bcf91c1 |
Raspberry Pi OS 32-bit | |
Link | sonic-pi_4.0.3_1_bullseye.armhf.deb |
Size | 88M |
MD5 | 4eb2686d224036567d95662d6fdf3233 |
SHA256 | cd38733e5ace3ffee5e67b624717cf91778367ecd1d55e7f84b28c1d41e708a2 |
Relink
Version 4.0.2 'Relink'
15th July 2022
Hot on the heals of v4.0.1 here's another bugfix release addressing an issue with the translations.
During the last year there has been significant upheaval of the process used to build Sonic Pi. Somehow, during this upheaval, the translations never got added into the final release builds, despite being part of the dev builds. This has been true since v4.0 BETA 1 back in August 2021 - yet it somehow went unnoticed until now. Apologies! This release fixes this and re-introduces the translations which are so important for lowering the barrier to entry across the world.
As a bonus, a couple of nice improvements also managed to sneak in for good measure. Have fun!
GUI
- All the translations are now available again - including the vast amount of new translation effort since v3.3.1 was released.
- Loading a file no longer erases the undo history. This means that you can now "undo" a file load in the current buffer and return it to the state prior to the load.
- The BPM-scrubbing behaviour (clicking your mouse and dragging to change the BPM) has been tweaked to make it easier to use.
- Improvements for the Portuguese translation.
Releases
macOS (10.15 Catalina+) | |
Link | Sonic-Pi-for-Mac-x64-v4-0-2.dmg |
Size | 129M |
MD5 | 54663be97cf61ba2aff9b31622f10c01 |
SHA256 | 2b20d5855b41a5a9e56aec1a268d6466f5f392ae5a08f6cf63c8151d9c85b7ab |
Windows 10/11 x64 | |
Link | Sonic-Pi-for-Win-x64-v4-0-2.msi |
Size | 202M |
MD5 | 3193813eb0486c775b0815a03d0b8253 |
SHA256 | b1b5e02d3de08c06cc1017231d89345a144fdb2048ee2cf38d78ca2af55d46fc |
Raspberry Pi OS 64-bit | |
Link | sonic-pi_4.0.2_1_bullseye.arm64.deb |
Size | 92M |
MD5 | 62214df0168e391a5dc464db03922c60 |
SHA256 | 37ddd51b9b066c5c531dd137b85b2902915875ac9de189459cd3aca6e52bea30 |
Raspberry Pi OS 32-bit | |
Link | sonic-pi_4.0.2_1_bullseye.armhf.deb |
Size | 88M |
MD5 | d908c99a6c921dfc49862d5d0268b7f6 |
SHA256 | 48f992aa59cc162b928ea468005a34edd04f2c8d5ced28f6a2410ca437072650 |
Verknüpfen
Version 4.0.1 'Verknüpfen'
12th July 2022
This is a bugfix release addressing a startup issue for a number of users with non-ASCII characters within audio harware information on macOS.
We also sadly say goodbye to Core Team member Hanno Zulla who did amazing work with Linux packaging - especially getting Sonic Pi into Debian. Hanno also spearheaded the translation work setting up the crowdsourced translation system which has now enabled Sonic Pi to be translated into over 50 languages. Thank-you so much Hanno - we wish you success and happiness in all you do going forwards.
This release also includes Italian and Polish translation updates.
Releases
macOS (10.15 Catalina and higher) | |
Link | Sonic-Pi-for-Mac-x64-v4-0-1.dmg |
Size | 128M |
MD5 | f83cc83bdedbc9054c25f744d4f5bcff |
SHA256 | ff7e7119644125f1b6c9ab926e2f1d5cbdc2e025e8b4cbc2ab7be58e0015dfca |
Windows x64 (10 and 11) | |
Link | Sonic-Pi-for-Win-x64-v4-0-1.msi |
Size | 201M |
MD5 | 2a5901af16d4b01158de0c9a1001ab31 |
SHA256 | 38c7717f64e93c8d98cfbb4f8366a81b8297a50eeaf0705a5eda5cb5ca43757a |
Raspberry Pi Bullseye 64 bit | |
Link | sonic-pi_4.0.1_1_bullseye.arm64.deb |
Size | 88M |
MD5 | ce81f87db70692e93fbdebee0fc7e101 |
SHA256 | 1de84984d346c5fe6c1336bc411f053612d2a11efef2f48e1f41f20a570d0d84 |
Raspberry Pi Bullseye 32 bit | |
Link | sonic-pi_4.0.1_1_bullseye.armhf.deb |
Size | 87M |
MD5 | 7acaf6205a38758b2a6628f5ca4e334b |
SHA256 | d1c156fa74349ebfa57e87f28910849b53a7cae2a62545dce92934c4301e4c43 |
Link
Version 4.0.0 'Link'
6th July, 2022
Get ready to Jam with v4 of Sonic Pi.
In this release, the internal timing algorithms have been completely refactored to enable them to link to a new global metronome. The GUI now features a new metronome panel which will let you dynamically change the BPM of your code whilst it is running. You can also use the new "Tap Tempo" button to click out a tempo and Sonic Pi will automatically shift to play in time with your taps. Additionally, you can link the metronome with other versions of Sonic Pi running on other computers connected to the same network (wifi or ethernet). This means it is now possible to gather some laptops together to form an ensemble or turn a whole classroom of computers into an orchestra of live coders - and for everyone to be in time with each other. You can even dynamically change the BPM for everyone on the network whilst code is running on everyone's computers independently and everything maintains synchronised and in time. It's a real jam.
Finally, you're not limited to syncing tempo with other copies of Sonic Pi. The new global metronome is built on top of a wonderful piece of technology called Link which was developed and open sourced by Ableton who also make Live and Push, both widely used by professional musicians and also automatically sync using Link. Additionally there are also over 200 other apps or hardware products that also sync with Link. Sonic Pi can therefore now automatically jam with any of these with just a click of a button. It's so exciting to imagine the new kinds of bands and collaborations that are going to be possible with this new timing system.
There's also a large number of other improvements and fixes within this release that together combine to form the most powerful and exciting release of Sonic Pi yet. See below for a full breakdown of visible changes.
This release would not have been possible without the huge number of fabulous contributors that have been involved. Key contributions have been a huge refactoring of our GUI by Chris Maughan, the wrapping of Link as an Erlang NIF by Luis Lloret and the tireless and constant attention to detail by Ethan Crawford. Thanks so much to you all. Thanks also to José Valim for financially supporting development during a tricky period. José is the creator of the programming language Elixir which is now integrated into the internals of Sonic Pi. Elixir opens up a rich world of exciting opportunities within Sonic Pi which we have already started exploring with earnest. Expect exciting things for the future and consider becoming a Patreon supporter to automatically get access to all upcoming BETAs.....
Finally, we would love for you all to extend a warm welcome to the latest member of the Sonic Pi Core Team: Lily Foster. She brings a huge depth of Linux knowledge to the team and we're terrifically excited to have her on board.
Now, go and get your Live Coded Jam On!
Breaking Changes
- The default BPM is now set to the new global Link metronome. This is set to 60 by default, so on the surface the behaviour will appear identical. However, if you change the Link metronome BPM using the GUI or the new fn
set_link_bpm!
it will change the BPM for all threads dynamically. Previous behaviour (a static BPM of 60 unlinked to the global metronome) can be obtained by starting your code withuse_bpm 60
. - Previously it was possible that the
onset:
option forsample
silently 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. - The main mixer settings have been modified to reduce load on the limiter in common scenaries with the GUI volume slider set to a high position. This caused distortion and other unwanted audio issues. This change should be an improvement for most users - however if you wish to return to the old behaviour, you can run the following at the start of your session:
set_mixer_control! pre_amp: 1, amp: 1
.
New
- 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
:link
option to fnuse_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
link
which sets the BPM to a new:link
mode 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_sync
which sets the BPM to a new:link
mode, 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_source
which returns the current random number source kind (seeuse_random_source
). - New fn
load_synthdef
which lets you load a single synthdef file. load_synthdefs
now loads both directories and single files (by dispatching toload_synthdef
where necessary).
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.
Examples
- New Algomancer example - Blockgame coded by DJ_Dave.
- New Sorcerer example - Lorezzed.
GUI
- Preference pane is now an overlay which hovers over the main window. This means that opening and closing it does not inadvertently 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.
- New preference option to hide the menubar when in fullscreen mode (Windows and Linux only as this behaviour is standard on macOS).
- New preference option for enabling audio inputs (now disabled by default). Modifying this setting requires a reboot to take effect.
- New preference option for selecting the default language translation. Modifying this setting requires a reboot to take effect.
- Preferences now show audio hardware information such as connected input/out devices, sample rate, block size etc. The amount of information displayed varies by platform.
- New GUI controls for interacting with the new Link Metronome. You can connect/disconnect to the network (to share tempo with others), change the tempo (in BPM) and tap out a new tempo.
- Increase width of panel dividers and highlight on mouse hover.
- Highlight scrollbars and preference checkbox descriptions on mouse hover.
- Scrollbars now have rounded edges.
- Teach autocompletion about random source choices:
:white
,:light_pink
,:pink
, etc. - Improve syntax indentation.
- Improvements for Arabic, Catalan, Chinese (Simplified), Dutch, Estonian, French, German, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Russian, Sinhala, Spanish, Swedish, Ukrainian.
- Introduced new translations for Basque, Gaelic.
Improvements
- Many minor documentation fixes and improvements.
- 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.
- Optimise
midi_clock_beat
. note_range
can now handle both increasing and decreasing note ranges.- No longer connect to the input sound device on macOS by default - this also means audio input/output rate mismatches no longer cause boot issues on macOS by default.
- SuperCollider audio server boot issues are now immediately detected and reported as a specific issue to the user alongside the full scsynth log file.
Bugfixes
- Improve robustness of outgoing OSC messages in the case where an outgoing hostname is malformed and can't be resolved.
- Synths
:dull_bell
and:pretty_bell
now 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.
range
no 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.
- Stop thr...