All Versions
22
Latest Version
Avg Release Cycle
4 days
Latest Release
205 days ago

Changelog History
Page 1

  • v3.2.2

    April 05, 2020

    5th April, 2020 (view commits):

    ๐Ÿ›  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.
  • v3.2.1

    March 30, 2020

    3rd April, 2020 (view commits):

    ๐Ÿš€ 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_pong FX now merges the dry sound with the result of the echo to match the behaviour of echo.
    • ๐Ÿš€ In the last release, the piano synth 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 editor
      • Control-shift-l - move focus to logs
      • Control-shift-c - move focus to cues
      • Control-shift-p - move focus to preferences
      • Control-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.
  • v3.2.0

    February 25, 2020

    28th Feb, 2020 (view commits):

    โšก๏ธ 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

    • spread now produces identical patterns as in the Toussaint paper. Previously, some of the patterns had been shifted. Use the rotate: 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 osc fn 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.
    • 0๏ธโƒฃ 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 :flanger FX's feedback: opt to range 0->1. Values greater than 1 had the effect of increasing the amplitude which should be achieved via the amp: opt.
    • โž• Add arg checker for sample's hpf: opt which now ensures the value is not higher than 119 as values higher than this can cause bad noise artefacts.
    • ๐Ÿ‘Œ Improve sample's start:/finish:/onset:/slice: opt semantics. The start: and finish: opts for sample now 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 a start: of 0 and a finish: of 0.5. Where both the slice: and onset: opts are specified, then the slice operates within the onset. Where the slice:, onset: and start:/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_file evaluates the contents of the specified file inline in the current thread as if it was a function.
    • midi_sysex for sending MIDI sysex messages.
    • โž• Add new chain fn .notes which 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 :C1 to 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 gverb FX now checks to ensure that the room: opt is greater than or equal to 1.
    • ๐Ÿ‘ The piano synth now supports fractional notes such as 70.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/
    • 0๏ธโƒฃ 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 .tick and .look on a normal array such as [1, 2, 3] will now automatically convert it to a ring first.
    • โž• Add docstring for the set fn.
    • โž• 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 .ogg format 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 :tb303 synth and possibly others. All synths should sound and behave as they did in v3.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_time now 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).
    • ๐Ÿ–จ set and cue no longer print duplicate messages which was possible in some cases.
    • ๐Ÿ›  Fix time_warp examples which were incorrect and misleading.
    • ๐Ÿ‘Œ Improve pid handling on Linux. This should reduce the number of zombie processes accidentally generated.
    • The offset: opt for with_swing now matches documented behaviour.
    • Teach sample_duration to 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 defonce from being executed multiple times
    • Calling .take on 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.
  • v3.2.0-beta

    ๐Ÿš€ To be released... (view commits):

    ๐Ÿ’ฅ Breaking Changes

    • spread now produces identical patterns as in the Toussaint paper. Previously, some of the patterns had been shifted. Use the rotate: 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 osc fn 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.
    • 0๏ธโƒฃ 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 :flanger FX's feedback: opt to range 0->1. Values greater than 1 had the effect of increasing the amplitude which should be achieved via the amp: opt.
    • โž• Add arg checker for sample's hpf: opt which now ensures the value is not higher than 119 as values higher than this can cause bad noise artefacts.
    • ๐Ÿ‘Œ Improve sample's start:/finish:/onset:/slice: opt semantics. The start: and finish: opts for sample now 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 a start: of 0 and a finish: of 0.5. Where both the slice: and onset: opts are specified, then the slice operates within the onset. Where the slice:, onset: and start:/finish: opts are all used, the start/finish operate within the slice which in turn operates within the onset. See updated sample example for more information.

    ๐Ÿ†• New Fns

    • eval_file evaluates the contents of the specified file inline in the current thread as if it was a function.
    • midi_sysex for sending MIDI sysex messages.
    • โž• Add new chain fn .notes which 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 :C1 to 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 gverb FX now checks to ensure that the room: opt is greater than or equal to 1.
    • ๐Ÿ‘ The piano synth now supports fractional notes such as 70.3

    Samples

    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/
    • 0๏ธโƒฃ 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 .tick and .look on a normal array such as [1, 2, 3] will now automatically convert it to a ring first.
    • โž• Add docstring for the set fn.
    • โž• 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 .ogg 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 :tb303 synth and possibly others. All synths should sound and behave as they did in v3.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_time now 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).
    • ๐Ÿ–จ set and cue no longer print duplicate messages which was possible in some cases.
    • ๐Ÿ›  Fix time_warp examples which were incorrect and misleading.
    • ๐Ÿ‘Œ Improve pid handling on Linux. This should reduce the number of zombie processes accidentally generated.
    • The offset: opt for with_swing now matches documented behaviour.
    • Teach sample_duration to 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 defonce from being executed multiple times
    • Calling .take on 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.
  • v3.1.0

    January 23, 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 infomation.

    ๐Ÿš€ 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_noise now has standard default envelope opts (sustain: and release: 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_pc for sending MIDI Program Change messages

    Samples

    • โž• Add support for Ogg Vorbis encoded audio files .ogg and .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,

    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
    Size 85M
    MD5 09137b7ad16224ca524d723369608d1d
    SHA256 d1e232e39f875db717f4efab85362dfaac31cafb9e555b21136d7b12720c9a30
    ๐Ÿ Windows Portable
    ๐Ÿš€ Link
    Size 78M
    MD5 5c08a058ea63cf44875794335046833c
    SHA256 afe2eba6213c0823f68d858c6fd7a4fc79f2d6d35062042a31fd2f14ac39d5ed
    ๐Ÿ Windows Installer
    ๐Ÿš€ Link
    Size 129M
    MD5 a4cfdbb6c3750aa341cfe42310ac8650
    SHA256 bb6805d9a5bfb3b220491310518785d87579556740fd9bbfa11b89f30284ed65
  • v3.0.1

    February 21, 2018

    28th July, 2017
    (view commits):

    ๐Ÿš€ 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
    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
  • v3.0

    February 21, 2018

    18th July, 2017
    (view commits)

    ๐Ÿš€ 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

    • 0๏ธโƒฃ Ring's .pick now returns 1 element by default. Previously calling .pick on 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, .pick only returns a single element. This makes it similar to choose.

    ๐Ÿ†• New Fns

    midi_* - many new MIDI-specific fns such as midi_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 a time_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 a time_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 to use_synth_defaults. Also available: with_midi_defaults.

    ๐Ÿ‘€ use_osc - set the default hostname and port number for subsequent outgoing OSC messages. See also with_osc.

    0๏ธโƒฃ osc - send Open Sound Control messages in time with the music to default hostname and port

    osc_send - similar to osc but 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 to sound_out but 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 the do/end block.

    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, cue and get or set
    • 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_warp about input ranges. It now works similar to at in 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 range to work as expected with both floats and ints.
    • Teach rings a new chain method - .scale which will return a new ring with all elements multiplied by the scale value.
    • The fn control now returns the node you're controlling.
    • โž• Add many new chords

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fix randomisation aspects of :slicer, :wobble and :panslicer FX (i.e. via the probability: opt).
    • ๐Ÿ›  Fix file path drag and drop on Windows to not accidentally prefix path with /.
    • Teach chord_invert and sample to work with floating point args.

    ๐Ÿš€ Releases

    Mac
    ๐Ÿš€ Link
    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
  • v2.11.1

    February 21, 2018

    16th Dec, 2016
    (view commits)

    ๐Ÿš€ This is primarily a maintainance 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.
    • 0๏ธโƒฃ 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.
    • 0๏ธโƒฃ Ensure thread locals have correct default values on clear. When a
      0๏ธโƒฃ run is created, the thread is given a set of default thread
      locals. Previously clear removed all thread locals. Now, we reset
      0๏ธโƒฃ the thread locals to the defaults for a brand new thread.
    • ๐Ÿ›  Fix line reported on syntax error.
    • ๐Ÿ›  Fix unknown synth error message.
    • ๐Ÿ”€ sync can 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_duration now 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 control on a chord group.
    • ๐Ÿ›  Fix rand and rand_i to honour their arguments.

    ๐Ÿš€ Releases

    Mac
    ๐Ÿš€ Link
    Size 63M
    MD5 d3daa8fccf4f239686277caf86e85981
    SHA256 fbe9d5939d296b9ffae69432dffb6a6b1b4e06d5d89754d3c110a5cfdd5cd954
    ๐Ÿ Windows Portable
    ๐Ÿš€ Link
    Size 89M
    MD5 8fdfd0a982ace0ae9080d38749e5c9d3
    SHA256 7cee0d581be73f72a5c5bc2979c9143e0bcff9f48a15feef1a2c929089042a40
    ๐Ÿ Windows
    ๐Ÿš€ Link
    Size 139M
    MD5 17df9522d44422f8e12950bb2574eef8
    SHA256 a635cf257f3e0927f512d24dfee5b221caa8447acc2b049bf17c9f23484c4b2d
  • v2.11.0

    February 21, 2018

    3rd Nov, 2016
    (view commits)

    ๐Ÿš€ This release is the biggest and most adventurous release yet. There are
    as many (invisible) modifications and improvements to the internal
    ๐Ÿ‘€ systems as there are new external features that you can see and play
    with. The aim was to create a solid foundation for new and exciting
    ๐Ÿ”‹ features both in this release and in preparation for future releases.

    We also open our arms to welcome two new Core Team members - Luis Lloret
    and Adrian Cheater. Both have made generous and substantial
    ๐Ÿš€ contributions to this release. Thank-you. Sadly we also say farewell to
    Jeremy Weatherford. Please extend your kind thoughts and gratitude to
    Jeremy for all of his contributions - in particular for turning the
    ๐Ÿš€ Windows release from a possibility into a reality. Luckily Luis has
    ๐Ÿ kindly stepped in to maintain the Windows installer.

    The main visible feature is the new scope visualisers. The overall audio
    output can now be visually monitored by one of three wave form
    visualisers. Firstly there is the individual left and right channels,
    next is a single mono scope which is mixed down from the stereo channels
    using RMS and finally there is a Lissajous scope which displays phase
    differences between the left and right channels. Typically the mono
    output will be most useful. Use the preferences pane to hide and show
    each of these scopes. All of them may be viewed at the same time if
    necessary. Thanks to Adrian Cheater for the core work behind this
    ๐Ÿ”‹ feature.

    ๐Ÿ‘ We now have support for multi-channel input (up to 16 channels) via the
    new sound_in* synths for systems that have audio in. This opens up the
    possibility to use Sonic Pi as an FX unit for vocals, guitars and any
    other audio source.

    Another exciting new feature is the sample opt onset: - which lets you
    play a specific percussive part of a sample. This uses an automatic
    onset detection algorithm to determine all the points in the sample that
    go from quiet to loud quickly such as a drum, synth or bass hit. For
    example, this allows you to take a complex drum sample and trigger each
    of the individual drums in your own order and to your own timing.

    ๐ŸŒ Finally, translations are now crowd-sourced and small or large
    contributions for any language can be made here:
    https://hosted.weblate.org/projects/sonic-pi/. If your language isn't
    yet available or you would like to improve things, please join in the
    effort. Thanks to Hanno Zulla for making this possible.

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ‘ sample now supports the opt path: which enables the sample's path
      to be overridden.
    • use_sample_pack is now deprecated and no longer available. Consider
      ๐Ÿ“š using the new filter system. See documentation for sample for more
      details.
    • current_sample_pack is now deprecated and no longer available.
    • ๐Ÿšš inspect has been removed. (Standard printing now calls
      0๏ธโƒฃ Object#inspect by default)
    • load_sample now only loads the first matched sample. load_samples
      now loads all matched samples.
    • โœ‚ Remove SuperCollider server automatic reboot system as it was badly
      conflicting with machines that went into a 'sleep state' (for example,
      ๐Ÿ’ป when a laptop is closed). The fn reboot is still supported and may
      still be triggered manually if required.
    • Calls to play, synth and sample now consume all their arguments
      ๐Ÿ‘€ before testing to see if the synth should be triggered. This ensures
      all declared rands are consumed. This change might therefore
      potentially modify your random stream consumption. Consider using
      rand_back or rand_skip to re-align the stream if necessary.
    • ๐Ÿ†• New threads now start with a fresh set of tick counters and a new
      random stream.
    • It is no longer possible to use lambdas as values for synth
      0๏ธโƒฃ defaults. This is because synth defaults are shared across thread
      boundaries and there is now a new safety system that only allows
      ๐Ÿ’Ž immutable/serialisable values to be used. Unfortunately Ruby has no
      notion of a 'pure' function and each lambda captures over its
      ๐Ÿ†“ environment and therefore may contain free variables pointing to
      mutable data. A replacement system for describing a simple set of pure
      functions is being designed.

    ๐Ÿ†• New Fns

    • reset - resets the user's thread locals (such as ticks and rand
      stream index) to the snapshot of the state as recorded at the start of
      the current thread.
    • clear - clears all the user's thread locals to a blank state.
    • time_warp- allows whole blocks of code to be shifted forward or
      backwards in time up to the value of current_sched_ahead_time.
    • rand_look - generate a random number without consuming a rand by
      looking ahead in the random stream.
    • rand_i_look - generate a random integer without consuming a rand by
      looking ahead in the random stream.
    • run_file - Runs the contents of file at path as if it was in the
      current buffer.
    • run_code - Runs the contents of the specified string as if it was in
      the current buffer.
    • Numeric#clamp - max and minimum bound (will clamp self to a value <=
      other and >= -1*other
    • set_recording_bit_depth! - set the bit depth for WAV files generated
      0๏ธโƒฃ by recording the audio. Default is 16 bits, and can now be set to one
      ๐Ÿ‘ of 8, 16, 24 and 32. Larger bit depths will result in better quality
      audio files but also much larger file sizes for the same duration.
    • scsynth_info - obtain information about the running audio synthesis
      server SuperCollider such as the number of available busses and
      buffers.

    Synths & FX

    • ๐Ÿ†• New synth :tech_saws - an implementation of a slightly modified
      supersaw.
    • ๐Ÿ†• New synth :sound_in - reads audio from the sound card.
    • New synth :sound_in_stereo - reads audio from the sound card.
    • All FX now have a pre_mix: opt. This allows the audio flow to
      completely bypass a given FX (unlike mix: which passes the audio
      through the FX but modifies the amplitude afterwards).
    • 0๏ธโƒฃ Teach control to manipulate the last triggered synth by default. For
      example, control amp: 3 will set the amp: opt of the last
      triggered synth to 3. However, control foo, amp: 3 will still
      specifically control synth foo.

    Samples

    • ๐Ÿ†• New opt slice: - lets you play a specific slice of a sample. The
      0๏ธโƒฃ default number of slices is 16 which may be changed with the
      num_slices: opt. Sample is divided equally into the number of slices
      without regard for audio content and onset points. The slice: opt
      also works with pick for triggering random sample slices: sample :loop_amen, slice: pick.
    • ๐Ÿ†• New opt onset: - lets you play a specific percussive part of a
      sample. Uses automatic onset detection to determine the points in the
      sample that go from quiet to loud quickly. Unlike slice:, onset:
      does not necessarily divide a sample into equal onsets - some onsets
      will be smaller or bigger than others and the number of onsets is
      determined by the algorithm and isn't known in advance.

    GUI

    • ๐Ÿ†• New scope visualisers.
    • ๐Ÿ‘ Allow files to be dragged from the OS into the text area. This inserts
      the file/folder name as a string.
    • GUI now remembers the last directory you saved or opened a file
      0๏ธโƒฃ to/from as the default location for next time.
    • Swap align button for a scope button. Given that alignment now happens
      ๐Ÿ‘€ automatically, a specific button seems somewhat redundant. Instead we
      now have a button for toggling the visibility of the scope(s).
    • Loading multiple samples simultaneously is now much faster.
    • Preferences have been slightly re-organised.
    • Preferences now has a Master volume slider which controls Sonic Pi's
      audio amplitude independently from the system volume.
    • All buttons now display status message + shortcut where available.
    • ๐Ÿ Enable app transparency slider for Windows.
    • ๐Ÿ’… Dark and light theme colours have been slightly polished and unified
      to use the same logic.
    • 0๏ธโƒฃ On multi-screen systems, fullscreen mode now defaults to the app's
      current screen.

    ๐Ÿ“š Documentation

    • ๐ŸŒ Translations are now crowd-sourced. See:
      https://hosted.weblate.org/projects/sonic-pi/
    • ๐Ÿ‘Œ Improve docstring for live_loop.
    • โž• Add 3 new MagPi articles on amplitude modulation, performance and practice techniques.
    • โž• Add missing pulse_width: opt to flanger FX doc.

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘Œ Improve log messages written to ~/.sonic-pi/log
    • ๐Ÿ‘Œ Improve booting on Mac in the case that the audio card's rate can't be
      determined.
    • ๐Ÿ Massively improve boot stability on Windows.
    • ๐Ÿ‘Œ Improve error message for play_chord when notes isn't list like.
    • The number of samples that may be loaded at any one time has been
      increased from 1000 to 4000. However, memory limitations still apply
      ๐Ÿ†“ (4000 1MB samples will require 4000MB of free system memory)
    • pick now returns a lambda if no list is given as the first argument
      (which makes it useful for using with sample's onset: and slice:
      opts.
    • Audio server is now paused when app is not in use - reducing CPU load
      and battery consumption.
    • Error messages now report names matching the editor tabs such as buffer 0.

    ๐Ÿ›  Bugfixes

    • โฌ‡ Decrease duration of :loop_tabla so that it correctly loops. (Length
      โฌ‡๏ธ reduced to 10.674 seconds).
    • Enforce UTF-8 encoding of all incoming text.
    • ๐Ÿ›  Fix :reverb FX's mix: opt to ensure it's in the range 0 to 1.
    • sample nil now no longer plays a sample - it was incorrectly
      0๏ธโƒฃ defaulting to the first built-in sample (:ambi_choir)
    • pick's skip: opt now works as expected: pick(5).drop(1) == pick(5, skip: 1)
    • ๐Ÿ–จ sample now prints a 'no sample found' message with both sample nil and sample [] rather than incorrectly playing the first built-in wav file.
    • Limit :piano synth to notes less than 231 as higher values crash the audio server.

    ๐Ÿš€ Releases

    Mac
    ๐Ÿš€ Link
    Size 61M
    MD5 7306829cb4594ee39001a6cedb0390b3
    SHA256 f1d260bf40fe0ad29c7b119d36cac6dca8ebe234fcbb48711466ae32f6bd0d71
    ๐Ÿ Windows Portable
    ๐Ÿš€ Link
    Size 92M
    MD5 ebb3c7f3db51bb7dea370a4f6fc4b1b2
    SHA256 fe89f1eadceb1a79c0db9e0777d20005d045875ccca027e888fc73c88f38285f
    ๐Ÿ Windows
    ๐Ÿš€ Link
    Size 142M
    MD5 f71e823269995b683e189c44f2ea079b
    SHA256 19a77de15ce6a39539295ab2943d48460c99a20feebaa0a7cda1413e2dd38bf9
    Raspberry Pi Deb (Jessie)
    Link sonic-pi_1-2.11.0-2_armhf.deb
    Size 50M
    MD5 5b72557c500c665a3bb4feab75857fdd
    SHA256 4100f83f905716a47c5b7c68f8ba420c52b794fe8c549690ad1285dd8ebfa302
  • v2.10.0

    February 21, 2018

    Friday 15th April, 2016
    (view commits)

    "I gotta have more cowbell!" - The Bruce Dickinson

    ๐Ÿš€ The main feature in this release is the completely new sample system for
    working with large folders of samples. You can now easily index into and
    filter over whole folders of samples with a simple yet powerful filter
    system. This system has been in development for over a year now and has
    ๐ŸŽ been tuned and tweaked over many performances and practice sessions. See
    ๐Ÿ“š the documentation and examples for sample as well as the new tutorial
    section 3.7 for details.

    We also have a number of exciting new sounds to play with including some
    beautifully sounding chiptune synths, fun retro FX and new drum samples
    including a full tabla set and a cowbell.

    ๐Ÿ Finally, even more boot issues on both OS X and Windows have been
    ๐Ÿ›  fixed making this the most polished and stable release to date.

    Now go and get your live code on!

    ๐Ÿ’ฅ Breaking Changes

    • use_sample_pack_as and with_sample_pack_as have been removed.
    • A synth opt value of nil now no longer resolves to 0.0. Instead it
      0๏ธโƒฃ masks any defaults and ensures the downstream default (for the actual
      synthdef itself) is honoured. This allows you to override any existing
      synth defaults specified via use_synth_defaults for a given synth
      trigger.
    • โฑ Default schedule ahead time is now 0.5s on all platforms for
      consistency (except for Raspberry Pi 1 which remains at 1s).

    ๐Ÿ†• New Fns

    • current_random_seed - Get the current seed value of the random generator.
    • set_cent_tuning! - global tuning.
    • on - similar to if but behaves the same as the on: opt for
      synths and samples.
    • halves - create a ring of successive halves.
    • doubles - create a ring of successive doubles.
    • pick - similar to shuffle but allows duplicates. You may also
      specify how many items to pick.
    • fx_names - create a ring of all available FX.

    Synths & FX

    • ๐Ÿ†• New synth :dtri - detuned triangle waves.
    • ๐Ÿ†• New synth :pluck - a lovely synthesised plucked string.
    • ๐Ÿ†• New synth :chiplead - retro NES style lead synth.
    • ๐Ÿ†• New synth :chipbass - retro NES style bass synth.
    • ๐Ÿ†• New synth :chipnoise - retro NES style noise synth.
    • ๐Ÿ†• New FX :whammy - low-tech transposition effect similar to the
      Digitech Whammy guitar pedal.
    • ๐Ÿ†• New FX :octaver - low-tech octave effect similar to early guitar
      pedals.
    • ๐Ÿ†• New FX :vowel - modifies incoming signal to match human vowel
      sounds.
    • ๐Ÿ†• New FX :mono - mono effect for summing stereo channels.
    • 0๏ธโƒฃ :tanh FX is now more crunchy by default.
    • :compressor and :krush FX now correctly honour the mix: opt.

    Samples

    • ๐Ÿ‘ Samples in FLAC format (Free Lossless Audio Codec) are now supported!
    • The sample fn gained source and filter pre-opts. You may now specify
      a number of parameters directly before the opts which describe both
      folders containing samples and filters over those folders to allow you
      ๐Ÿ‘€ to easily and quickly work with large sample sets. See Section 3.7 of
      the tutorial for more information.
    • Samplers now have hpf: and lpf: opts. Any cutoff: opts are
      automatically switched to lpf: and any errors will be reported with
      an lpf: prefix.
    • The sampler synth gained a compressor enabled via the compress:
      opt. This means you can now compress any triggered sample directly
      without the need to reach for an FX.
    • Samplers gained the pre_amp: opt which applies the amp at the
      ๐Ÿšฆ beginning of its internal signal chain. You can use this to overload
      the new compressor.
    • Samplers now have both high pass and low pass filter envelopes which
      behave similarly to the amplitude envelope but control internal hpf
      and lpf FX. These are available via new opts which mirror the standard
      envelope opts but with a hpf_ and lpf_ prefix (such as
      hpf_attack, lpf_decay_level and friends).
    • Passing a directory path to load_samples will now load all the
      samples within that directory.
    • ๐Ÿ†“ Passing a directory path to free_samples will now free all the
      loaded samples within that directory.
    • Samples are now loaded asynchronously in a separate thread. This
      therefore doesn't block the current thread and cause any subsequent
      synth/sample triggers to be late.
    • ๐ŸŒฒ Sample trigger logging now includes the directory of the contained
      sample.
    • Samples are now reloaded asynchronously after a server reboot (and
      therefore no longer block execution).
    • โž• Add new :tabla_ sample group with a range of tabla drum sounds.
    • โž• Add new :vinyl_ sample group with a range of vinyl scratches and
      hisses.
    • Add new samples: :drum_cowbell, :drum_roll, :misc_cros,
      :misc_cineboom, :perc_swash, :perc_till, :loop_safari,
      :loop_tabla.

    GUI

    • โž• Add new preference to enforce strict synth/FX timing. When enabled
      synths and samples no longer trigger if it is too late - instead they
      โš  are silent and print a warning message. This behaviour ensures samples
      or synths are never triggered out of time.
    • ๐Ÿ†• New load button which will load the contents of a file into the
      current buffer.
    • The vertical bars which help visualise nesting now render in a
      contiguous fashion over blank lines.
    • C-k now nukes over trailing whitespace.
    • load_sample now has sample autocompletion.
    • GUI now correctly reports if the host is a Raspberry Pi 3.
    • ๐Ÿ†• New editor preference - Log Auto Scroll. When enabled will always
      ๐Ÿ–จ scroll log to the bottom after printing every new message.
    • Whitespace at top and bottom of buffer is no longer trimmed.
    • Hitting RETURN now auto-indents the buffer - ensuring that the
      ๐Ÿšš cursor is moved to the correct indentation on the following line.
    • โž• Added Chinese Simplified GUI translation.
    • ๐ŸŒฒ Log visibility now correctly matches GUI preference.

    ๐Ÿ“š Documentation

    • ๐Ÿ†• New tutorial section 3.7 on Sample Pack Filters.
    • ๐Ÿ†• New appendix sections.
    • Examples for sample fn have been completely rewritten and extended.

    ๐Ÿ‘Œ Improvements

    • scale and chord can now handle being passed no tonic such as:
      (chord :minor) which will return a ring of offsets from 0.
    • chord learned new variants: add2, add4, add9, add11,
      add13, madd2, madd4, madd9, madd11, madd13
    • The ring's .take method can now take more elements than the original
      ring by wrapping around:
      (ring 1, 2, 3).take(5) #=> (ring 1, 2, 3, 1, 2)
    • Rings may now be added or subtracted from each other e.g.
      (ring 1, 2, 3) + (ring 4) #=> (ring 1, 2, 3, 4)
    • โž• Adding or subtracting a number from a ring will create a new ring with
      the number added or subtracted from each of the original ring's
      elements: (ring 1, 2, 3) - 1 #=> (ring 0.0, 1.0, 2.0)
    • Calling (ring 1, 2, 3).take(0) will now return an empty ring.
    • density now complains if it isn't passed a do/end block.
    • ๐Ÿ‘Œ Improve error messages for use/with_synth when accidentally passed opts.

    ๐Ÿ›  Bugfixes

    • On OS X only raise an error on boot if it's clear the sound card's in
      and out rates are different.
    • ๐Ÿ‘Œ Improve robustness of boot process on Windows.
    • ๐Ÿ–จ Rest notes are no longer printed if synth logging is disabled.
    • 0๏ธโƒฃ No longer apply synth defaults to FX.
    • You may now control opts that have no associated info (previously it
      would raise a 'not modulatable' error).
    • ๐Ÿ›  Fix index lookup of Vectors.
    • ๐Ÿ›  Fix C-i doc lookup shortcut to work with :tb303 synth docs.
    • ๐Ÿ“„ C-i now always displays docs where available (previously it was
      ๐Ÿ“„ possible for docs not to be displayed).
    • Sliding between chords now works correctly
    • ๐Ÿ Windows version will now boot mutiple networked machines logged in
      with the same account.

    ๐Ÿš€ Releases

    Mac
    ๐Ÿš€ Link
    Size 59M
    MD5 db2888bbcc5fb5406ec9c54f74fbb049
    SHA256 4539cbd70f1e0d347c27231f741a245551c0d50f10e987761b9b7567ba0d82fe
    Raspberry Pi (Jessie)
    ๐Ÿš€ Link
    Size 48M
    MD5 3eebecf9363dfa8df6599cab6d98da55
    SHA256 7ac3d97a288ea670d3ad8a683b60009fa5737faa59f924cc5f8b462797982e63
    ๐Ÿ Windows Portable
    ๐Ÿš€ Link
    Size 51M
    MD5 fbf67315b0d99e9523d7b06bfca5a680
    SHA256 e08f3ec43cdc879175dca1682d0e33b933daf4975b189ffe2e468785206c9d43
    ๐Ÿ Windows
    ๐Ÿš€ Link
    Size 73M
    MD5 3368579b82c6ebfbe5995d2c9b22acfe
    SHA256 b79e7c20a20cc83aa752a12c2b5b7ab497c9dc4c3db3024ddce0b5ac73328e99