Skip to content

@samaaron samaaron released this Jan 23, 2018 · 678 commits to master since this release

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 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 5c08a058ea63cf44875794335046833c
SHA256 afe2eba6213c0823f68d858c6fd7a4fc79f2d6d35062042a31fd2f14ac39d5ed
Windows Installer
Link Sonic-Pi-for-Win-v3.1.0.msi
Size 129M
MD5 a4cfdbb6c3750aa341cfe42310ac8650
SHA256 bb6805d9a5bfb3b220491310518785d87579556740fd9bbfa11b89f30284ed65
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 1021 commits to master since this release

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 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
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 1070 commits to master since this release

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

  • 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.

  • 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 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
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 1953 commits to master since this release

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.
  • 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. Previously clear removed 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.
  • 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 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
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 2108 commits to master since this release

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
    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
    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
    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).
  • 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
    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
    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.
  • 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
    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 Sonic-Pi-for-Mac-v2.11.0.dmg
Size 61M
MD5 7306829cb4594ee39001a6cedb0390b3
SHA256 f1d260bf40fe0ad29c7b119d36cac6dca8ebe234fcbb48711466ae32f6bd0d71
Windows Portable
Link Sonic-Pi-for-Win-Portable-v2.11.0.paf.exe
Size 92M
MD5 ebb3c7f3db51bb7dea370a4f6fc4b1b2
SHA256 fe89f1eadceb1a79c0db9e0777d20005d045875ccca027e888fc73c88f38285f
Windows
Link Sonic-Pi-for-Win-v2.11.0.msi
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
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 3282 commits to master since this release

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
    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.
  • :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.
  • 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 Sonic-Pi-for-Mac-v2.10.0.dmg
Size 59M
MD5 db2888bbcc5fb5406ec9c54f74fbb049
SHA256 4539cbd70f1e0d347c27231f741a245551c0d50f10e987761b9b7567ba0d82fe
Raspberry Pi (Jessie)
Link Sonic-Pi-for-RPi-Jessie-v2.10.0.tgz
Size 48M
MD5 3eebecf9363dfa8df6599cab6d98da55
SHA256 7ac3d97a288ea670d3ad8a683b60009fa5737faa59f924cc5f8b462797982e63
Windows Portable
Link Sonic-Pi-for-Win-Portable-v2.10.0.paf.exe
Size 51M
MD5 fbf67315b0d99e9523d7b06bfca5a680
SHA256 e08f3ec43cdc879175dca1682d0e33b933daf4975b189ffe2e468785206c9d43
Windows
Link Sonic-Pi-for-Win-v2.10.0.msi
Size 73M
MD5 3368579b82c6ebfbe5995d2c9b22acfe
SHA256 b79e7c20a20cc83aa752a12c2b5b7ab497c9dc4c3db3024ddce0b5ac73328e99
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 3820 commits to master since this release

Thursday 31st December, 2015

Hot on the heels of the previous release comes v2.9 codenamed
Venster (Dutch for window). This release has a specific focus on
fixing all the known issues with Sonic Pi running on Windows. If you've
tried Sonic Pi on Windows before and had issues, make sure to try it
again with v2.9. If you're still having issues on Windows please do
let us know so we can fix it as soon as possible.

For all you Raspberry Pi and Mac OS X users - you're not left out. Sonic
Pi is just as stable as it was before (if not more stable) and v2.9
comes with a surprising amount of tweaks and features for its short 1
month development cycle. There's two new FX to play with: tanh and
gverb as well as a heavily revamped logging system which is much
clearer about printing which opts are actually being used for your
synths and samples. Finally, we now include of all the published MagPi
magazine articles in the tutorial. We also now have Hungarian and
Norwegian translations of the GUI.

Happy Live Coding!

Breaking Changes

  • Rename fn invert_chord to chord_invert
  • Sampler no longer mixes rate: and pitch_stretch: opts. It's now
    possible to set the rate: independent of the pitch: modification
    caused by pitch_stretch.

New Fns

  • block_duration - returns the duration of the given block in seconds (not scaled with the BPM).
  • block_slept? - returns true if the contents of the block slept or synced.
  • synth_names - returns a list of all the available synths
  • reset_mixer! - resets the main mixer back to its default values.
  • sample_free - unload a sample from memory to free up memory usage.
  • sample_free_all - unload all samples from memory.
  • use_octave - similar to use_transpose but for whole octaves.
  • with_octave - similar to with_transpose but for whole octaves.
  • use_merged_sample_defaults - similar to use_merged_synth_defaults
    but for samples
  • with_merged_sample_defaults - similar to
    with_merged_synth_defaults but for samples
  • use_cent_tuning - uniformly tune all subsequent notes in cents
  • with_cent_tuning - uniformly tune all notes in cents within the block

Synths & FX

  • New FX tanh - for more distortion goodness.
  • New FX gverb - a different reverb FX to play with.

GUI

  • Synths and samples now also log defaults set by use_synth_defaults
    and friends.
  • Opts are logged in the order they were defined with local opts first
    followed by inherited opts.
  • BPM scaling is now accounted for in logging vals.
  • Log metadata such as run number and time is now printed in a more
    code-like way: as a hash of key value pairs.
  • C-k will now kill multiple lines if lines end with ,.
  • When saving a buffer a .txt extension is automatically added to the
    file name if none specified.
  • Add Hungarian and Norwegian translations of GUI.
  • Add Spanish translation of tutorial.
  • Add title to main window - enables Sonic Pi to be selected in
    screensharing app lists such as Google Hangouts and OBS.
  • Add autocompletion for tuning systems.

Documentation

  • Add 8 complete MagPi magazine articles to the tutorial in appendix A.
  • Add new example 'ambient experiment' by Darin Wilson.
  • Add new example 'chord inversions' by Adrian Cheater.
  • Change tutorial license to CC-BY-SA 4.0.
  • Add instructions for compiling and building on Windows.
  • Many, many minor tweaks and improvements.

Improvements

  • Add sync: opt to live_loop and in_thread. This now syncs the
    live loop once on creation. Similar to the delay: opt. If both
    sync: and delay: are specified then the delay happens before the
    sync.
  • The synth fn can now play chords with the notes: opt such as:
    synth :dsaw, notes: (chord :e3, :minor). This will return a single
    controllable synth node representing all the notes similar to
    play_chord.
  • BPM scaling and other normalisation is now honoured when controlling nodes
  • The on: opt is now honoured when playing chords.
  • Samplers sound signal now bypasses filter envelope when not used.
  • It is now possible to use externally defined FX synths by passing a
    string as the FX name: with_fx "my_shiny_effect". This needs to be
    loaded manually via load_synthdefs.
  • OS X now supports rates other than 44.1k provided they are similar for
    both audio in and out.
  • Run code in ~/.sonic-pi/init.rb on launch if it exists.
  • If environment variable SONIC_PI_HOME is set it will be used over
    ~ as the root of the user's .sonic-pi directory (used to auto-save
    files and store logs).
  • Default sound card selection is now honoured on Raspberry Pi - so you
    may now use your IQaudIO hat (or similar) out of the box.

Bugfixes

  • Fix number of synth validation errors.
  • Fix sporadically failing boot issues on Windows
  • Add auto-reboot functionality for audio server. This now detects
    errors in the server (such as a killed or zombied process) and
    automatically reboots it to enable Sonic Pi to continue without a full
    restart. Reboots automatically reload all loaded samples and
    synthdefs.
  • sample_duration now correctly takes account of TL defaults set by
    use_sample_defaults.
  • Sampler opts pitch_stretch, beat_stretch and rpitch can now be
    used in TL defaults.

Releases

Mac
Link Sonic-Pi-for-Mac-v2.9.0.dmg
Size 93M
MD5 c74d393043e2acf97a03430e824ecbf2
SHA256 c9dcf6a9d05204b8cb51244f51f083ed5e68d36428814c768af752f4ff3686fa
Raspberry Pi (Jessie)
Link Sonic-Pi-for-RPi-Jessie-v2.9.0.tgz
Size 61M
MD5 d14eaf49b9c38a4afe4906ebc1b413b2
SHA256 6406a92be127c50d1592ee1a3408f73fff77aa6290764f27a7a6cf273fc10e2e
Raspberry Pi (Wheezy)
Link Sonic-Pi-for-RPi-Wheezy-v2.9.0.tgz
Size 61M
MD5 d63390b4167cee8a87632fbd7e22f04b
SHA256 5f98c803c432f684382b24e9105fc6dfdc7b46fd7b6fd74c4fc5ac5ae59c2a05
Windows
Link Sonic-Pi-for-Win-v2.9.0.msi
Size 79M
MD5 0311ce18b1ba35e343e1b4de533899c9
SHA256 392fe3b1d5b8b651c86af2526e8add0b44e806207ee2ca90871fa6bbb7705b9c
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 4106 commits to master since this release

This release, named after Karlsruhe, one of the home cities of live
coding, is mainly a maintenance release with a strong focus on both
performance, stability and documentation. This is therefore the fastest
and most stable release of Sonic Pi ever with a massive 10% performance
improvement on the original Raspberry Pi 1. It also ships with new
translations in Polish, Japanese and French. Many of these improvements
(such as the complete rewrite of the OSC stack) are not documented in
this release list but can instead be found in the commit logs over on
Github.

However, not to go unnoticed are a number of exciting new features. For
example we now have a new Band EQ FX, the ability to use MIDI note names
such as :e5 as values for opts such as cutoff:, and new powerful
cutoff envelopes on the sampler.

Breaking Changes

  • Shortcuts for switching buffers have changed. They are now M-{ and
    M-} for switching left and right respectively.
  • sync no longer inherits BPM by default. Set the bpm_sync: opt to
    true to enable BPM inheritance.
  • Random seed generation for new threads is now reset on calls to
    use_random_seed.

New Fns

  • octs - returns a ring of successive octaves.
  • assert - for raising an exception if the argument is not true.
  • assert_equal - for raising an exception if the two arguments are not
    equal.
  • bt - converts the specified time w.r.t. the current BPM.
  • inspect - similar to print but prints the inspected version of the argument.

GUI

  • New translations for Polish, Japanese and French.
  • Improve efficiency of logging panel.
  • M-RET is now a duplicate shortcut for running the code.
  • Log title bar is now hidden in full-screen mode.
  • Log - don't display └ or ├ if the line is blank, instead display │
  • Add sample name autocompletion to more fns such as sample_duration.

Documentation

  • New tutorial section on ring chains (chainable functions for modifying rings)
  • Tilburg 2 example slightly tweaked for Raspberry Pi 1 compatibility.
  • Many minor tweaks and improvements in all areas.

Synths & FX

  • New FX - Band EQ for attenuating or boosting a specific frequency band.
  • New synth - DPulse - a detuned pulse wave.
  • Sampler now has a cutoff envelope which can be accessed via new opts
    which mirror the standard envelope opts but with a cutoff_ prefix
    (such as cutoff_attack, cutoff_decay_level and friends).
  • Sampler now correctly handles samples with different sample rates.
  • Bitcrusher FX now has an internal low pass filter modifiable via a new cutoff opt.
  • Panslicer now correctly honours min and max pan values.
  • New default opt on: for both sample and synth. This acts like
    if but ensures all the opt vals are evaluated (useful if wanting to
    keep the consumption of random streams or ticks consistent even when
    not triggering a synth.
  • MIDI opts such as cutoff: can now accept note names such as :c4.
  • FX learned the global slide: opt to match synths.

Improvements

  • Massive performance improvements.
  • Teach play_pattern_timed to handle rings.
  • current_transpose now returns 0 if there is no current
    transposition.
  • BPM scaling is now honoured when controlling synths and FX
  • All with_fx* fns now return the result of their block.
  • spark now handles rings correctly.
  • spark now treats booleans as 1s and 0s so you can now spark rings of bools.
  • puts, print and mc_message now handle multiple message arguments

Bug Fixes

  • Ensure with_fx doesn't swallow TL modifications such as
    transposition, current synth etc.
  • Ensure with_fx doesn't affect random seed.
  • Improve reliability of boot process on Mac and Windows.
  • The FX pre_amp: opt is no longer scaled w.r.t. the current BPM.
  • Fixed GUI side of update checking system.

Releases

Mac
Link Sonic-Pi-for-Mac-v2.8.0.dmg
Size 61M
MD5 2e6d91fd777900782492ca3b38245723
SHA256 2e6cceb30d2c464e38810d2e8baadde315fc196aff75f0bb4d445c46a02a9a74
Raspberry Pi (Jessie)
Link Sonic-Pi-for-RPi-Jessie-v2.8.0.tgz
Size 66M
MD5 b47111d04dceb2997540f9e7764b9faa
SHA256 58aa121a24c9d06b958199bdf62aab990c6f424c1e1651de453981788b18ec87
Raspberry Pi (Wheezy)
Link Sonic-Pi-for-RPi-Wheezy-v2.8.0.tgz
Size 66M
MD5 e2f8de24afb93618ffb0f4ca787cfcc1
SHA256 3f252a7714a5a71d8a03d3d115340c616fa6116acf29f1ae7000d27995333e0d
Windows
Link Sonic-Pi-for-Win-v2.8.0.msi
Size 75M
MD5 26dda533ab64bffa67049f4a50616027
SHA256 6c427110af73ca396a274f5f5dbcab682634694daef9d7a99fca2fa22ab8c226
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 4492 commits to master since this release

This release brings a substantial change to the random number
generator. This has the unfortunate side effect of breaking backwards
compatibility. If you have been using rand, choose, shuffle and
friends to create predictable patterns for your riffs, your code will
produce different results in this release. Please let me apologise and
say it's for a good cause. So what is this good cause? Well, you can
now jump backwards and forwards through the random stream giving you way
more creative control than before! The random stream is now also unified
with the random stream on the synthesis server allowing you to sync
behaviour between synths and code. Exciting times.

The sampler has also been super charged. We can now easily change the
rate via MIDI note intervals with rpitch: and stretch the sample whilst
preserving pitch via pitch_stretch: (although with variable results
;-)).

Finally you can now control the global mixer with set_mixer_control!
for those full filter sweeps over the entire sound...

Have fun and happy live coding!

Breaking Changes

  • Complete rewrite of random number system. This means if you've been
    combining calls to use_random_seed with randomisation to create
    predictable melodies/rhythms/timbral manipulations you will
    unfortunately get different results in v2.7. This change is to
    synchronise both the Ruby rand stream with the one in SuperCollider as
    well as enabling the reversal of calls to rand via rand_back.
  • sync now causes the BPM to be inherited from the thread calling the
    matching cue. This may be disabled with the new bpm_sync: opt.
  • rrand and rand now return 0 if called with 0.
  • invert_chord now handles negative inversions in a more musically
    appropriate manner..

New Fns

  • ratio_to_pitch which provides the inverse of pitch_to_ratio
  • midi_notes - returns a ring of numbers (mapping the source
    ring/array through the fn note).
  • rand_back - reverse the random stream and 'undo' calls to rand
  • rand_skip - skip forward through the random stream.
  • rand_reset- reset the random stream to the last seed.

GUI

  • It is now possible to toggle the commenting of whole selections or
    individual lines with the shortcut M-/.
  • Added Icelandic translation.

Synths & FX

  • All synths learned the decay_level opt to allow the sustain phase to
    shift between two distinct values. The default value for decay_level
    is to mirror sustain_level: thus preserving current behaviour.
  • play and synth have now learned the pitch: opt to match
    sample. This just increments or decrements the final note.
  • sample now correctly validates opts.
  • sample learned the pitch_stretch: opt which combines rate:
    modification (similar to beat_stretch: with pitch:. Attempts to
    maintain the pitch whilst simultaneously changing the rate. The
    underlying implementation is very basic and can easily destroy the
    sound.
  • sample learned the rpitch: opt for simple rate pitch
    modulation. This modifies the rate to match the specified number of
    MIDI notes relative from the current pitch. For example, a rpitch:
    of 12 would double the rate.
  • The unit of the FX :echo's decay: opt is now beats and the value
    is scaled with the BPM.

Examples

  • Most examples have been tweaked to sound good with the new random
    generator.
  • Tilburg has been replaced with Tilburg 2. Play it and get your
    Algorave on!

Improvements

  • Auto-align code on Run.
  • live_loop learned the seed: opt which will set the new thread with
    the specified seed prior to initial run.
  • Add check to ensure BPM is a positive value.
  • density has now been taught to handle values between 0 and 1 which
    will now stretch time for the specified block.
  • Errors now no longer print out crazy print version of context object
    i.e. #SonicPiSpiderUser1:0x007fc82e1f79a0
  • Both in_thread and live_loop have now learned the delay: opt
    which will delay the initial execution by the specified number of
    beats.
  • Buffer and thread name are now printed on error.
  • sample_duration now understands all the opts that you can pass to sample
  • It is now possible to do basic arithmetic on symbols representing
    rests: :r + 3 returns :r (a rest plus any MIDI note shift is still
    a rest).

Bug Fixes

  • Fixed crash when synth args were specified as Rationals.
  • note_info now correctly handles octaves.
  • Fix windows paste shortcut C-v.
  • Teach invert_chord how to properly handle out of range index ranges.

Releases

Mac
Link Sonic-Pi-for-Mac-v2.7.0.dmg
Size 93M
MD5 9bf75c57995c4d91a13cbeb6dbe5f4b8
SHA256 8a02d029273a3906b4761e2d36d64d34f0c4aff4fed4253658f0dc1c0f219ff9
Raspberry Pi (Jessie)
Link Sonic-Pi-for-RPi-Jessie-v2.7.0.tgz
Size 65M
MD5 5b69a9fa9dc572e5b624ddc922ea30a6
SHA256 742a66407b2150ef648e577f24c4790431cc7e12e373aa9fbf892253b22a536b
Windows
Link Sonic-Pi-for-Win-v2.7.0.msi
Size 71M
MD5 51c2626ce2dd886bebc270416396312d
SHA256 8d3cd925f73d2a6159a757ea9c0d21697a16b3a921ed70b377317fae7e43e9f2
Assets 2

@samaaron samaaron released this Feb 21, 2018 · 4687 commits to master since this release

The laser beams sliced through the wafts of smoke as the subwoofer pumped bass deep into the bodies of the crowd. The atmosphere was ripe with a heady mix of synths and dancing. However something wasn't quite right in this nightclub. Projected in bright colours above the DJ booth was futuristic text, moving, dancing, flashing. This wasn't fancy visuals, it was merely a projection of Sonic Pi running on a Raspberry Pi. The occupant of the DJ booth wasn't spinning disks or playing MP3s, she was writing, editing and evaluating code. She was live coding and this was an Algorave.

This release is codenamed Algorave to celebrate that Sonic Pi is now ready to be performed within nightclubs as well as still being a fantastic tool for learning how to code creatively. There are many improvements as detailed below. However, let's just take a brief look at some of the most fun. Firstly we have the new error reporting system to make it easier to find and debug your errors. Syntax errors are now blue and runtime errors pink. We also have a new look and feel including a new dark mode for performing in dark places. We also have some fantastic new synths, FX and have even improved the standard synths. For example, sample now lets you stretch to match the beat with the beat_stretch: opt and change pitch with pitch:. The slicer FX now sports a fantastic deterministic probability: opt for creating and manipulating rhythmic structures with ease. Finally there's the new thread local tick/look system which will revolutionise the way you work with rings within live_loops. Of course there's so much more too!

Enjoy this release and happy Algoraving!

Breaking Changes

  • The res: opt for all synths and FX now has range 0->1 rather than
    1->0. This means that a higher res value results in more
    resonance. This will hopefully be more intuitive to beginners and less
    surprising for people with existing synth knowledge.
  • The fn stop has been renamed to kill for killing specific
    synths. In its place a new fn stop has been added to stop a given
    thread or live_loop.
  • invert_wave opts are now inverted. The default is now 0 which
    has the same behaviour as the old 1. This means that it's more
    intuitive to use the opt as to invert the current wave, you now
    specify: invert_wave: true, rather than invert_wave: false. This
    shouldn't affect any code which doesn't explicitly set the invert_wave:
    opt. Pieces which have explicit inversion need to swap all 0s for 1s
    and vice versa.
  • The res: opt for rrand and rdist has been renamed to step: to
    avoid confusion with the resonance opt for cutoff filters.
  • Rename pitch_ratio to pitch_to_ratio to keep in line with other
    similar fns such as midi_to_hz.

New Fns

  • New thread-local (i.e. live_loop local) counter system via fns tick
    and look.
  • New fn vector which creates a new kind of Array - an immutable
    vector (SPVector) which is now the default base class for all rings.
  • New fns use_sample_defaults and with_sample_defaults which act
    similarly as their *_synth_defaults counterparts but for samples not
    synths.
  • New fns use_tuning and with_tuning for exploring other tuning
    systems such as :just, :pythagorean, and :meantone.
  • New fn invert_chord for chord inversions.
  • New fn current_beat_duration for returning the duration of the
    current beat in seconds.
  • New fn note_range for returning a range of notes between two notes
    with a pitches: opt for constraining the choice of filler notes.
  • New fns scale_names and chord_names for returning a ring of all
    chords and scales.
  • New example rerezzed - strongly influenced by Daft Punk's track
    derezzed.
  • New example reich phase - a nice way of combining live_loops and
    tick to create sophisticated polyrhythms.
  • New fns use_cue_logging and with_cue_logging for enabling and
    disabling the logging of cue messages.
  • It is now possible to set the block type in the Minecraft API.

GUI

  • New visual look and feel including a new Dark Mode for live coding in
    night clubs.
  • New preferences for hiding/showing aspects of the GUI such as the
    buttons, log, tabs etc.
  • New preference for full screen mode.
  • Improve error message reporting. Syntax errors are now made distinct
    from runtime errors with colour-coded messages. Also, the line number
    of the error is much more visible, and the line of the error is
    highlighted with an arrow in the left-hand margin.
  • Workspaces are now named buffers. This is a smaller word which works
    better on lower res screens and is also a lovely term used by a number
    of wonderful programming editors such as Emacs.
  • Print friendly messages to the log on boot.
  • Add pref option to check for updates now.

Synths, Samples & FX

  • New FX - krush for krushing the sound.
  • New FX - panslicer similar to slicer and wobble but modulates
    the stereo panning of the audio.
  • New synth subpulse for a full range pulse with extra bass.
  • New synth blade - a moody Blade Runner-esque synth violin
  • New synth piano - a basic piano emulation. Only capable of whole notes.
  • FXs slicer and wobble now have a wonderful new probability: opt
    which will only slice on (or off depending on wave inversion) with the
    specified probability. The behaviour is deterministic, so repeated
    calls with the same seed: and probability: opts will result in the
    same behaviour. Great for adding interesting rhythmic variation to
    sound.
  • FXs slicer and wobble now have smoothing opts for even more
    control over the resulting wave form.
  • Teach sample the opt beat_stretch: for modifying the rate of the
    sample to make sure the duration of the sample is n beats long (with
    respect to the current bpm). Note: stretching the beat does change
    the pitch.
  • Teach sample the opt pitch to enable pitch shifting on any sample.
  • FX flanger's feedback mixing is now more fair and is less likely to
    hike up the amplitude.

Improvements

  • Teach note_info to also handle a number as its param.
  • Teach factor? to handle division by 0.
  • Teach load_sample to throw exception when passed an empty path.
  • Now throws an exception when you attempt to create an empty ring.
  • Rings are now immutable (in the Clojure sense) which means they can be
    safely passed to multiple threads/live_loops without any issues.
  • Teach use_sample_bpm the opt num_beats: to indicate that a given
    sample consists of a specific number of beats.
  • Teach comment and uncomment to require blocks.
  • Teach synth chord groups to allow their notes to be controlled
    individually to allow transitions between chords.
  • Throw nicer exception when unable to normalise synth args
  • Teach chord the new opt invert: as a shortcut to the new
    invert_chord fn.
  • Teach sample_duration about the opts start: and finish: and
    envelope opts such as attack: and release:. This allows you to
    replace any call to sample with sample_duration to get the exact
    duration of that call.
  • Teach chord the opt num_octaves to enable the easy creation of
    arpeggios.

Bug Fixes

  • Fix bug in with_sample_pack_as to now correctly accept a block.
  • mx_surface_teleport no longer throws an error.
  • Array#shuffle now works correctly with the random seeds for
    deterministic behaviour.
  • Fix broken behaviour with multiple nested calls to *_sample_bpm.

Releases

Mac
Link Sonic-Pi-for-Mac-v2.6.0.dmg
Size 62M
MD5 c6249a7b2e8de4f3eaf96fa0fb33bac4
SHA256 15d8a495959e7e50554feec21b18b796065dd954072a7fdc279effc0caa863d2
Raspberry Pi (Wheezy)
Link Sonic-Pi-for-RPi-Wheezy-v2.6.0.tgz
Size 41M
MD5 10092dc1edee2fd4d3624c1ab3326e83
SHA256 261f14b654957b5e476ba04641287c517d9ab4c363b067d9bb137c6ecac21904
Windows
Link Sonic-Pi-for-Win-v2.6.0.msi
Size 71M
MD5 548e5bad15ee48498778f671abbb7ee8
SHA256 f5de95575fe190e12d180bf83ec26ea06a36e2b023a5d9aa0bf0467b8a2c139a
Assets 2
You can’t perform that action at this time.