Releases: sonic-pi-net/sonic-pi
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 forsamplesilently 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
:linkoption 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
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 (seeuse_random_source). - New fn
load_synthdefwhich lets you load a single synthdef file. load_synthdefsnow loads both directories and single files (by dispatching toload_synthdefwhere 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_rangecan 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_belland: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.
- Stop thr...
Beamer
Version 3.3.1 - 'Beamer'
1st Feb, 2021
This is compatibility release addressing two issues with macOS Big Sur:
- Correct language translations now used based on user's current locale
- The language server is no longer killed by macOS Gatekeeper when a sample's onset times are queried.
This release also includes minor translation updates.
Releases
| macOS x64 (10.13+) | |
| Link | Sonic-Pi-for-Mac-x64-v3-3-1.dmg |
| Size | 120M |
| MD5 | cf7990a629321ac1e5f935ffc741f7db |
| SHA256 | 0bfd12f930311e8ef1c7306dc9c012cfcc1f8e50710fd26a8c18ba003573a506 |
| Windows 10 x64 | |
| Link | Sonic-Pi-for-Win-x64-v3.3.1.msi |
| Size | 167M |
| MD5 | e8392ef976891ab9513feb23e1152b57 |
| SHA256 | b9ee2605333b01feb6ce973e5918f04f489de83b971a46890e1313eae7c04b79 |
| Raspberry Pi OS (October 30th 2021) | |
| Link | sonic-pi_3.3.1_2_armhf.deb |
| Size | 66M |
| MD5 | 2941bc5b4eca86236af5f5a4e03bc45b |
| SHA256 | ebbf5960dae866d3d8105cf257a6f4379f1d6b1f3c572813f34afe5573d98a31 |
| Raspberry Pi OS (Legacy) | |
| Link | sonic-pi_3.3.1_1_armhf.deb |
| Size | 67M |
| MD5 | 0b5c00cc092a8f3c6b2584caf2554937 |
| SHA256 | f6cc382cea61467d04ce7fe186deba7d352f64b0a7b4d9ccc8f74b2774d9dfe5 |
| Ubuntu 20 amd64 | |
| Link | sonic-pi_3.3.1_2_amd64.deb |
| Size | 67M |
| MD5 | cc0fcf1a05c1e83df5f290cfeda1d3d9 |
| SHA256 | 3a7884ac605f0eb0e408dda28c17d496d3d3c613d4d0b014665861f45c992836 |
Beam
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
syncandgetwill 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_pinkand: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
:autotunerFX optsnote:andformant_ratio:. mix,pre_mixandpre_ampopts 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
playandsampleon the same line such asplay sample :loop_amenis now an error with an appropriately helpful description to explain thatplayshould be removed.
Bugfixes
- Fix
pulse_width_curve:andpulse_width_slide:opts which were incorrectly swapped onpulse,subpulseanddpulsesynths. - 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 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_lastto no longer returnnilfor min and max of the range. - Fix off-by-one error in
linefn. 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 |
Tau3
Version 3.2.2 - 'Tau3'
5th April, 2020
This is a minor bugfix and maintenance release.
GUI
- Significant improvements to the Danish and Swedish translations.
Bugfixes
- Fixed a build issue on macOS that stopped recording from working.
- Fixed issues rendering images in the documentation for non-English translations.
Releases
| macOS | |
| Link | sonic-pi-for-mac-v3.2.2.zip |
| Size | 126M |
| MD5 | 53348871f5d8d7e8b065ecbca471f556 |
| SHA256 | 52828a3132ed8657a30a64f995dfe72b32f0a3b718886c3ac7e6d41d846ab441 |
| Windows 10 64bit Portable | |
| Link | sonic-pi-for-win-x64-portable-v3.2.2.paf.exe |
| Size | 93M |
| MD5 | 23163f26a2b07456b8f34c9d249c0582 |
| SHA256 | cf3c17bf966c115353b112548bea674c8e907a8cdd930d5f13934bb11b334198 |
| Windows 10 64bit Installer | |
| Link | sonic-pi-for-win-x64-v3.2.2.msi |
| Size | 162M |
| MD5 | a7feb0414505ac0fa10cb6c72dcf6be4 |
| SHA256 | 0b585382fdfa238d38bd37823f63e61be009a0424284a1441803d70c64b8bc70 |
| Raspberry Pi OS 32bit | |
| Link | sonic-pi_3.2.2_4_armhf.deb |
| Size | 64M |
| MD5 | 8df8e49f2ed43bf52a30f69e115d094d |
| SHA256 | 76086decc9378790397982ed39bfac65d1ff60d6c9f63b1cbcec398ddff6e425 |
Take Tau
Version 3.2.1 - 'Take Tau'
3rd April, 2020
This release is another maintenance release with a primary focus on increasing stability and reliability. There are therefore no major new features, but instead there are significant improvements to the internals and the packaging of the Windows installer.
Whilst there are no major new features, we have still been working hard engaging with users with accessibility requirements. We have added a number of modifications to the GUI to improve keyboard navigation which should improve things for users that do not use a mouse (for example, users working with a screen reader). As mentioned in the previous release, we will continue to work to improve accessibility support wherever possible in each release.
One core internal focus has been improving memory utilisation of the app. A number of memory leaks have been hunted down and fixed. A memory leak is where the application requests increasingly more memory from the computer and never gives it back. Over time this means that the app would waste a lot of the system memory. This might have not been too noticeable using Sonic Pi on modern computers that typically have incredibly large amounts of memory. However, it was noticeable and problematic on low-powered systems with limited memory capacity. Sonic Pi now uses a lot less memory and after a warm-up period, the memory usage stays much more constant than before. We will continue to look for and fix memory leaks going forward.
Finally, this release is the first to ship with a fully signed Windows installer. This is a major milestone as we now ship with signed versions for both macOS and Windows which should help more users and organisations (especially schools) trust the installation and running of Sonic Pi.
Now, go and get live coding!
Breaking Changes
- The
ping_pongFX now merges the dry sound with the result of the echo to match the behaviour ofecho. - In the last release, the
pianosynth had its default amplitude accidentally altered when being updated to work with arbitrary frequencies. This has been restored. - Incoming MIDI Active Sensing messages are now ignored
GUI
-
New shortcuts and menu items for explicitly placing focus on specific areas of the app. This is primarily intended to improve accessibility for screen readers or those not using a mouse or trackpad. The new shortcuts are:
Control-shift-e- move focus to editorControl-shift-l- move focus to logsControl-shift-c- move focus to cuesControl-shift-p- move focus to preferencesControl-shift-h- move focus to help listing (e.g. the list of available help section)Control-shift-d- move focus to help details (e.g. the contents of the chosen help section)Control-shift-w- move focus to syntax/runtime error warnings
-
Once focus is in the help listing, the up and down arrow keys now navigate up and down in the list and the left and right arrow keys switch tabs to work through the different help categories.
-
When an error occurs, focus is now placed on the error pop-up window. Focus can be easily returned back to the editor by pressing either the Escape key or
Control-g. -
Minor improvements for Catalan, Greek, Chinese, Russian, French and Romanian translations.
Bugfixes
- Upgraded the Ruby process library which improves/fixes process shutdown behaviour on some Linux systems.
- Fixed a number of memory leaks which resulted in the memory requirements of the app increasing over time until it was closed and opened again. This was particularly noticeable and potentially problematic on machines with small memory footprints.
- General memory usage has been significantly reduced due to the introduction of further caching in hot areas of the code that created many unnecessary object allocations.
- The Windows installer now works on more Windows 10 systems thanks to additional libraries now being included in the installer.
Releases
| macOS | |
| Link | sonic-pi-for-mac-v3.2.1.zip |
| Size | 127M |
| MD5 | 06caad40bc7f9fae0ecc3013d0f6ada8 |
| SHA256 | 17e32ea392b3f324022bbdab8ecdb7d7f159b06e922ca65cf26ed41090c349cd |
| Windows 10 64bit Portable | |
| Link | sonic-pi-for-win-x64-portable-v3.2.1.paf.exe |
| Size | 93M |
| MD5 | 522759f8af4db195ba96736e8c63f045 |
| SHA256 | e8176b1e04873346c78dc1e7ed358712a2f07560596b0144c3ee686b7042a2de |
| Windows 10 64bit Installer | |
| Link | sonic-pi-for-win-x64-v3.2.1.msi |
| Size | 162M |
| MD5 | 2ca51be91bba360b5a26baa8f7b24b06 |
| SHA256 | 9e5400ce1f3c71c27e7d211251a78e54ccd9adc653e091019efd24ec0a218e25 |
Tau
Version 3.2.0 - 'Tau'
28th Feb, 2020
After a long 2 years without updates, we are threaded with excitement to
bring you Sonic Pi's first fully independent release. Sam Aaron's work
on this release has been 100% supported by kind and generous donations
from people on Patreon in addition to
funds raised by delivering talks, workshops and performances. Sam's work
has also been hugely assisted by many wonderful code and translation
contributions both by members of the Core Team and by our growing
international community of live coders. This release has truly been a
community effort.
So, what's new? This time there are no radical new features, instead we
have a much more polished, accessible and stable version than ever before.
(This release has been heavily battle-tested in many performances worldwide).
This release is codenamed Tau - (an improved Pi).
One of the core focusses of this release is accessibility. Tau
introduces support for screen readers. Previously the code editor was
invisible to the main screen readers on both macOS and Windows and this
is now fixed. There is also an accessible menu bar and a new high
contrast colour theme which is WCAG 2 level AAA compliant. Accessibility
is very important to us - we acknowledge that this is only the
beginning and we value and encourage feedback from users who have
specific accessibility requirements that we are not directly meeting. We
plan to improve our accessibility support where possible in every release
going forward.
Another aspect of accessibility is support for Windows devices with high
resolution displays. Previously on certain displays font and icon sizes
could be far too small, unreadable and out of proportion with the app in
general. This has all been addressed with significant work on ensuring
Sonic Pi looks great on a variety of monitors on both Windows and
macOS. We believe that this release looks better and is more usable than
any previous release.
Tau features two beautiful new audio visualiser scopes - a spectrum
scope showing the frequency content of the audio and a beautiful mirror
stereo scope. These scopes have been contributed by Chris Maughan who
has also been pivotal in improving and simplying the Windows build
process. We are hugely grateful for his contributions - thanks Chris!
We have two fabulous new FX - a ping pong delay contributed by Ethan
Crawford and an autotuner contributed by Xavier Riley. We hope you have
as much fun playing with these as we have.
Finally, this release has seen a significant improvement in
translation coverage - both of the GUI and the tutorial. We truly
believe that this helps us achieve our mission of lowering the barrier
to entry for a creative experience with code by helping more non-English
speakers start their live coding journeys.
Now, go and make some noise with code!
Breaking Changes
spreadnow produces identical patterns as in the
Toussaint paper.
Previously, some of the patterns had been shifted. Use therotate:opt to
match prior behaviour if required.- OSC cues now include the IP address and port number of incoming messages
- MIDI cues now include the source information in the first part of the
path with:separators to match the new OSC cue format. - The
oscfn now forces all outgoing args to either be numbers or
strings (binary blobs and timestamps are not supported at this
point). If the value is neither a number or string, it is 'inspected'
and the resulting description string is sent instead. - The default incoming OSC cues port is now 4560 as the previous value
was registered on the Iana Service Name and Transport Protocol Port
Number Registry. However, 4560 is currently free. - Constrain
:flangerFX'sfeedback:opt to range 0->1. Values greater than 1 had the effect of increasing the amplitude which should be achieved via theamp:opt. - Add arg checker for
sample'shpf:opt which now ensures the value is not higher than 119 as values higher than this can cause bad noise artefacts. - Improve
sample'sstart:/finish:/onset:/slice:opt semantics. Thestart:andfinish:opts forsamplenow work within the specified slice or onset. This allows you to easily play, say the first half of a given slice or onset by specifying astart:of0and afinish:of0.5. Where both theslice:andonset:opts are specified, then the slice operates within the onset. Where theslice:,onset:andstart:/finish:opts are all used, the start/finish operate within the slice which in turn operates within the onset. See the updated sample examples for more information.
New Fns
eval_fileevaluates the contents of the specified file inline in the
current thread as if it was a function.midi_sysexfor sending MIDI sysex messages.- Add new chain fn
.noteswhich takes a ring of values and returns a
new ring with each element treated as a note. This will leave numbers
unchanged but will turn note names like:C1to their corresponding
MIDI note.
Synths & FX
- New FX
ping_pong- delayed echo alternating between left and right channels. - New FX
autotuner- Autotune/phase vocoder effect. - The
gverbFX now checks to ensure that theroom:opt is greater than or equal to 1. - The
pianosynth now supports fractional notes such as70.3
GUI
- New WCAG 2 level AAA compliant high contrast colour theme. This is
especially suited for those with low vision. - New application menu and shortcuts.
- New default icons which match the pro icon feel.
- 2 new visualiser scopes - mirror stereo and spectrum.
- Move to simple numbered labels for buffers.
- Improve scaling of icons, text etc. on high DPI displays on Windows.
- The version number is no longer placed in the initial comment of new
empty buffers. This felt like a friendly thing to do, but can be
confusing if a given buffer hasn't been used and the version was
updated. This results in the buffer reporting the old version number
that was used to create the buffer not the current version used to
display it. - Many, many translation improvements. Thanks to all the wonderful
volunteers contributing to the translation effort: https://hosted.weblate.org/projects/sonic-pi/ - Error pane height is now higher by default on all platforms and its
height is correctly scaled on high DPI monitors. - Preference checkboxes are now similarly styled on all platforms.
Improvements
- Allow scale degrees over an octave and augmented/diminished degrees.
- Calling
.tickand.lookon a normal array such as[1, 2, 3]will
now automatically convert it to a ring first. - Add docstring for the
setfn. - Add new article A.20 - Creative Coding in the Classroom as appeared in
issue #9 of the Hello World magazine. - OSC messages are now sent from the external cue listening port. This
allows OSC servers that reply directly back to incoming messages (such
as SuperCollider) to be able to communicate back to messages sent from
Sonic Pi. - Random fns now understand notes. For example
rrand(:e1, :e2)will
return a random frequency between E octave 1 and 2. - Windows can now detect sample onsets from samples stored in
.flac
and.oggformat in addition to arbitrary sample rates such as 48khz.
Bugfixes
- Further improve boot stability on Mac in the cases where audio input/output
sample rates do not match (typically due to the use of bluetooth
headsets). Audio inputs on macOS are now disabled by default unless we
can definitely determine the audio rates are the same. - Revert synthdefs to original bytecode version. This fixes a regression
in at least the:tb303synth and possibly others. All synths should
sound and behave as they did inv3.0.1. - Fix issue with scaling default opts. Previously it was possible that
unspecified opts correctly fell back to the default value - however
that default value wasn't scaled. Default values are now always scaled
whether or not explicitly specified. with_sched_ahead_timenow correctly sets the schedule ahead time
before running the block and returns the result of the
block itself- When "Enforce Timing Guarantees" is selected, Sonic Pi wil no longer
throw out of time warnings in 'real time' threads (specified using
use_real_time). setandcueno longer print duplicate messages which was possible
in some cases.- Fix
time_warpexamples which were incorrect and misleading. - Improve pid handling on Linux. This should reduce the number of zombie
processes accidentally generated. - The
offset:opt forwith_swingnow matches documented behaviour. - Teach
sample_durationto scale correctly. - Fix GUI bug which could result in a buffer stuck in the highlighted
state after hitting Run. - Fix the
on:opt when playing chords to work similarly across all
notes in a given chord. - Stop
defoncefrom being executed multiple times - Calling
.takeon an empty ring no longer results in infinite
recursion but instead returns an empty ring. - Scope now has a minimum height.
- Windows now supports sending and receiving OSC messages over the
network to and from external machines.
Releases
| Mac | |
| Link | sonic-pi-for-mac-v3.2.0.zip |
| Size | 124M |
| MD5 | d9792361a19c3a946c376d54aeabad3f |
| SHA256 | 7a3e8b29c30dd83cfa081cff86983f0a28269553b18636b6784a40601bb9497e |
| Windows 10 (64 bit) | |
| Link | sonic-pi-for-win-x64-v3.2.0.msi |
| Size | ... |
Sauna
Version 3.1.0 - 'Sauna'
23rd Jan, 2018
The major feature of this release is that it brings v3 functionality to
Windows. Windows now supports all the good stuff listed alongside
v3.0.x including live_audio, midi, osc and much more. See
v3.0.1 and v3.0.0 release notes below for more information.
Of course, no new release comes without new features, and there are a
number of additions and improvements on all levels. Firstly, we are
honoured to include a number of wonderful new samples kindly recorded
and released into the public domain by our friends Mehackit. If you
aren't already aware, Mehackit organise and run creative coding
workshops all around Finland and Europe and were a core part behind the
CodeBus Africa project which used Sonic Pi to engage almost 2000 African
students with creative code. Our favourite of these samples is the new
:ambi_sauna which has given us the name for this release.
We have added support for Ogg Vorbis encoded audio files .ogg and
.oga. These are lossy encoders similar to .MP3 but free from license
restrictions. See: https://en.wikipedia.org/wiki/Vorbis
Another notable addition is the increase in translation coverage across
a number of languages. If you still feel the translation for your
language could be improved, please do consider joining in the
crowd-sourced effort here: https://hosted.weblate.org/projects/sonic-pi/
We have also included some styling tweaks to the GUI - to make
it look even cleaner and also work better when projecting code with
visuals underneath.
Finally, this release also gives me the opportunity to welcome Ethan
Crawford to the Core Team. He has been a prolific contributor to the
project over the years and his keen eye for detail has helped polish
Sonic Pi from the rough stone it once was to the shining gem it is
today.
Have fun and enjoy the new features - especially you lovely Windows
users!
Breaking Changes
- The synth
chip_noisenow has standard default envelope opts (sustain:andrelease:are now 0 and 1 respectively (as opposed to 1 and 0))
New Fns
set_audio_latency!Apply positive or negative timing offset for audio events to allow for any timing differences between OSC/MIDI events caused by external latencies (such as wireless speakers).midi_pcfor sending MIDI Program Change messages
Samples
- Add support for Ogg Vorbis encoded audio files
.oggand.oga. - Add new samples (kindly recorded and released into the public domain by Mehackit).
- new
glitch_sample group containing sounds with a glitchy texture. - new
mehackit_sample group with sounds of old toys - new samples:
:perc_bell2,:perc_door,:perc_impact1,:perc_impact2,:perc_swoosh,:ambi_sauna,:bd_mehackit,:sn_generic,:loop_3d_printer,:loop_drone_g_97,:loop_electric,:loop_mehackit1,:loop_mehackit2,:loop_perc1,:loop_perc2,:loop_weirdo,
- new
GUI
- Add new in_thread forum to the community listings (and update other entries).
- Many, many translation additions and improvements for a multitude of
languages. The tutorial is now available in German, Spanish, French,
Italian, Japanese, Dutch, Polish, Portuguese, Romanian, and Russian. - GUI now lets the user know when the buffer capacity has been exceeded
on macOS and Linux (Windows behaviour is currently unchanged). This
capacity limitation will be addressed more thoroughly in a future release.
Bugfixes
- Stop the internal sample pattern matcher from duplicating matches in some cases.
- Stop pro icon preference from resetting to 'off' when switching from dark to light mode
Releases
| Mac | |
| Link | Sonic-Pi-for-Mac-v3.1.0.dmg |
| Size | 85M |
| MD5 | 09137b7ad16224ca524d723369608d1d |
| SHA256 | d1e232e39f875db717f4efab85362dfaac31cafb9e555b21136d7b12720c9a30 |
| Windows Portable | |
| Link | Sonic-Pi-for-Win-Portable-v3.1.0.paf.exe |
| Size | 78M |
| MD5 | cf01dafe78ed5496c9a3dcf8ac0fa69a |
| SHA256 | a82d8afa8c2a1b0c219d16d60e03bcf23e77cc792fe969fe74e6d3933f2c7912 |
| Windows Installer | |
| Link | Sonic-Pi-for-Win-v3.1.0.msi |
| Size | 129M |
| MD5 | 4667d26860f706d862f42907a3f2cb6a |
| SHA256 | bb714a37bbae9e469a0e793e28fc2cc00b05885de64cfcc70224fda30f731cc3 |
IOIO
Version 3.0.1 - 'IOIO'
28th July, 2017
This is a minor release addressing a few bugs and includes a small
number of modifications.
Breaking Changes
- Raspberry Pi only - based on a request from Raspberry Pi we have
removed the ability to switch between HDMI and headphone output as
this is now duplicate functionality to what is now available in
PIXEL. Now, to change audio output, you need to right-click on the
audio logo in the menu at the top right of the screen.
GUI
- The IO menu has been slightly tweaked to improve amount of space used.
Improvements
- The Time State system no longer maintains a history of all events -
instead it retains at least 20 events for each path and beyond that
culls events 30s in the past.
Bugfixes
- Fix minor issues with docs (grammar and rendering).
- Incoming OSC now correctly handles OSC paths which contain capital letters.
Releases
| Mac | |
| Link | Sonic-Pi-for-Mac-v3.0.1.dmg |
| Size | 75M |
| MD5 | ae2117e4bb6871fa464cc2143b1b79c0 |
| SHA256 | d9eea57df86da3d39a2a068358fcc256e0dd0181a110fa2d83ad16ad153b10fd |
| Raspberry Pi Deb (Stretch) | |
| Link | sonic-pi_1_3.0.1-armhf.deb |
| Size | 61M |
| MD5 | 9f3fcf382b524497778f432dbf004cc8 |
| SHA256 | 8cf87fe1b7cb90add870e2f204af03d36b186f51c32bc55053ba9598e6d6d480 |
IO
Version 3.0 - 'IO'
18th July, 2017
This release is our most ambitious to date. The goal is to open up the
code within Sonic Pi to the outside world. We want you to be able to both
manipulate the real world to change the code and change the real world
with the code. Input Output. IO.
We have therefore focussed on getting events and audio in and out of
Sonic Pi in new ways whilst keeping to our philosophy of simple code,
live manipulation, and strict, powerful timing. This release introduces
a number of brand-new components:
- Time State - a powerful new time-based deterministic shared memory system
- MIDI - support for input and output of MIDI
- OSC - support for sending and receiving OSC messages on the network.
- Live Audio - for getting multiple streams of audio into Sonic Pi
- Multi-channel audio out - for outputting multiple streams of audio.
- Audio Buffers - for internal recording of audio enabling the creation of loopers.
It's important to mention that MIDI and OSC output functionality is
possible due to a new well-timed scheduler. This was built in a
remarkable programming language called Erlang which
is now part of the Sonic Pi distribution. We have had the great honour
of one of Erlang's co-creators, Joe Armstrong working directly with us
on the implmentation of this scheduler and we look forward immensely to
continuing to work with him on new functionality.
Another very important part of this release is the addition of Robin
Newman to the core team. We have always been consistently impressed with
his fearless and experimental attitude - pushing Sonic Pi into new areas
with ease. We're excited that he's decided to join our core team and
hope you're as excited by his future work with us as we are.
Finally, We're really very excited about what new kinds of instruments
people will be able to create with this new technology both in the
classroom and on stage at musical festivals. Sonic Pi has now become a
fully programmable music studio. Have fun live coding!
Breaking Changes
- Ring's
.picknow returns 1 element by default. Previously calling.pickon a ring would pick n elements randomly from the ring (including duplicate picks) where n would be the size of the ring. With this change,.pickonly returns a single element. This makes it similar to choose.
New Fns
-
midi_*- many new MIDI-specific fns such asmidi_note_on,midi_pitch_bend,midi_cc,midi_clock_tick. See new tutorial section for more information. These fns send MIDI messages to connected MIDI devices. Incoming MIDI is received via the new event log. -
with_swing- add swing to successive calls to do/end block. -
get- get a named value from the Time State at the current time. This will return the last value entered. Previous values can be read when within atime_warp. Has full support for OSC -
set- set a named value in the Time State at the current time. Future values can be set when within atime_warp. -
use_real_time- convenience fn for setting the schedule ahead time to 0 for the current thread. Very useful for removing latency from live loops that are working with external cues (such as MIDI or OSC). -
use_midi_defaults- set defaults to be used for all subsequent MIDI calls. Similar touse_synth_defaults. Also available:with_midi_defaults. -
use_osc- set the default hostname and port number for subsequent outgoing OSC messages. See alsowith_osc. -
osc- send Open Sound Control messages in time with the music to default hostname and port -
osc_send- similar tooscbut requires you to specify the hostname and port -
use_sched_ahead_time- set the schedule ahead time specifically for the current thread. Also available -with_sched_ahead_time. -
current_time- return the current logical time. -
assert_error- An assertion to ensure the specified block of code raises the specified error.
Synths & FX
-
New synth
live_audio- directly stream audio from your soundcard as a synth. -
New FX
record- enables you to internally record any audio into named buffers. Perfect for building looper systems. -
New FX
:sound_out- stream out audio to a specific output on your sound card. This enables multi-channel audio out. -
New FX
:sound_out_stereo- similar tosound_outbut streams out to a pair of consecutive audio card (left and right) output channels. -
New FX
eq- Parametric EQ with three centre freqs - low, mid & high - all with Q values and gain (-1 -> 1). Also has low and high shelves with centre freqs and slope adjustment. -
New FX
tremolo- simple tremolo effect which modulates the volume within thedo/endblock.
GUI
- New 'pro' icon set for performances.
- New GUI translations for the following languages: (BS) Bosnian, (CA) Catalan, (CS) Czech, (DA) Danish, (EL) Greek, (ET) Estonian, (HI) Hindi, (ID) Indonesian, (KO) Korean, (PT) Portuguese, (TR) Turkish, (ZH) Chinese
- Added new pane for displaying new cue events (including incoming OSC and MIDI)
- Added new IO preferences tab for configuring MIDI and network settings.
- Automatically autocomplete
sync,cueandgetorset - Increase width of autocompletion popup.
Documentation & Examples
- New articles on additive and subtractive synthesis techniques.
- New example piece 'Cloud Beat' by Pit Noack
Improvements
- Teach
time_warpabout input ranges. It now works similar toatin that it can now take two lists of args - times and values - which represent a list of time destinations to be visited in turn. - Ensure any unprinted messages are displayed if an exception occurs.
- Teach
rangeto work as expected with both floats and ints. - Teach rings a new chain method -
.scalewhich will return a new ring with all elements multiplied by the scale value. - The fn
controlnow returns the node you're controlling. - Add many new chords
Bugfixes
- Fix randomisation aspects of
:slicer,:wobbleand:panslicerFX (i.e. via theprobability:opt). - Fix file path drag and drop on Windows to not accidentally prefix path with /.
- Teach
chord_invertandsampleto work with floating point args.
Releases
| Mac | |
| Link | Sonic-Pi-for-Mac-v3.dmg |
| Size | 71M |
| MD5 | 68fd047993778d08a3e384a4bd72d862 |
| SHA256 | 824e822c797547067952a7579b2c881fc2b90b1435f9ab1c824bfc3564869310 |
| Raspberry Pi Deb (Stretch) | |
| Link | sonic-pi_1_3.0.0-armhf.deb |
| Size | 58M |
| MD5 | 4141e3029570ddababb1c1aab5d443b5 |
| SHA256 | 92abd4044ae13d5d19eadd4250ce6182d2ccdfc1db86fed085cbd91ee3d078cd |
Hack
Version 2.11.1 - 'Hack'
16th Dec, 2016
This is primarily a maintenance release containing a number of bug fixes and minor tweaks. The feature set remains unchanged from v2.11.
One of the core bugs fixed in this release is an issue with the return key within some Japanese layouts. Another important change is the unification of the font on all platforms to Hack. This is from the same family as Menlo and Bitstream Vera (the previous fonts for Mac and Linux respectively) and a dramatic improvement to the Courier font previously used for Windows.
GUI
- Move all platforms to the same font -
Hack. - Improve initial log information and messages.
- The scope axes are no longer shown by default for a cleaner look and
feel.
Docs
- Add new MagPi article on sample stretching.
Bugfixes
- Ensure
chord_invert's shift value is a whole number - otherwise it
is possible to get into an infinite recursion. - Ensure thread locals have correct default values on
clear. When a
run is created, the thread is given a set of default thread
locals. Previouslyclearremoved all thread locals. Now, we reset
the thread locals to the defaults for a brand new thread. - Fix line reported on syntax error.
- Fix unknown synth error message.
synccan once again handle multiple cues correctly.- Fix boot issues for users that don't have a standard /etc/hosts file
that contains an entry for localhost. sample_durationnow handles onsets, slices and sustain.- Fix issue with return key not being recognised with Japanese
keyboards. - Fix sporadic flickering of current line on Raspberry Pi.
- Fix errors in buffer 0 being reported as being from buffer 3.
- Fix scrollbar background colour on Windows in dark mode.
- Improve error message reported when required ports are not available
at boot. - Fix issue with calling
controlon a chord group. - Fix
randandrand_ito honour their arguments.
Releases
| Mac | |
| Link | Sonic-Pi-for-Mac-v2.11.1.dmg |
| Size | 63M |
| MD5 | d3daa8fccf4f239686277caf86e85981 |
| SHA256 | fbe9d5939d296b9ffae69432dffb6a6b1b4e06d5d89754d3c110a5cfdd5cd954 |
| Windows Portable | |
| Link | Sonic-Pi-for-Win-Portable-v2.11.1.paf.exe |
| Size | 89M |
| MD5 | 8fdfd0a982ace0ae9080d38749e5c9d3 |
| SHA256 | 7cee0d581be73f72a5c5bc2979c9143e0bcff9f48a15feef1a2c929089042a40 |
| Windows | |
| Link | Sonic-Pi-for-Win-v2.11.1.msi |
| Size | 139M |
| MD5 | 17df9522d44422f8e12950bb2574eef8 |
| SHA256 | a635cf257f3e0927f512d24dfee5b221caa8447acc2b049bf17c9f23484c4b2d |