There is a newer version of the record available.

Published April 15, 2016 | Version v2.10.0

sonic-pi: Version 2.10.0 - 'Cowbell'

Description

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

Files

sonic-pi-v2.10.0.zip

Files (74.8 MB)

Name Size Download all
md5:567bd0b1f7332cad1655fb3328d31296
74.8 MB Preview Download

Additional details

Related works