History
Version 2.4 - ‘Defrost’
Wednesday 11th February, 2015 (view commits)
A quick release following v2.3 to address an issue with the GUI
freezing on specific CPUs. However, although this release has had a
small development cycle, it ships with three fantastic features. Firstly
we now have the spread fn which provides an amazing way to create
interesting rhythms with very little code. Secondly we can now use
cutoff: on any sample massively increasing their timbral range and
finally we have three exciting new synths for you to play with. Have
fun!
spread for creating rings of Euclidean distributions. Great
for quickly creating interesting rhythms.:dark_ambience, an ambient bass trying to escape the
darkness.:hollow, a hollow breathy sound.:growl, a deep rumbling growl.rlpf and normaliser FX. These
are disabled by default (i.e. won’t affect sound of the sample) and
can by enabled via the new cutoff:, res: and norm: params. Version 2.3 - ‘Bitcrush’
Wednesday 28th January, 2015 (view commits)
chord now divides the amplitiude of each
resulting synth by the number of notes in the chord. This ensures the
resulting amplitude isn’t excessive and is normalised.at from
being identical.range is now exclusive: (range 1, 5) #=> (ring 1, 2, 3, 4)density for compressing and repeating time Dr Who style. For
example, wrapping some code with a call to density of 2 will double
the bpm for that block as well as repeating it twice. This ensures the
block takes the same amount of time to execute while doing double the
work.with_bpm_mul and use_bpm_mul which will multiply the
current bpm by a specified amount. Useful for slowing down and
speeding up the execution of a specific thread or live_loop.rdist - generate a random number with a centred distributionsquare skit, shufflit and tilburgcontrol nil, amp: 3 will do
nothing.3.4.times {|v| puts v} will yield 0.0, 1.0 and 2.0.true
resolves to 1.0 and false, nil resolve to 0.0. This allows you
to write code such as: play :e3, invert_wave: trueat to handle varying block arities differently. See docs for
more detail. Original behaviour is preserved and only extended. :reverb FX to extend its kill delay time with larger room
sizes to reduce the chance of clipping.bitcrusher - for crunching and destroying those hi-fi sounds.flanger - a classic swhooshing effect typically used with
vocals and guitars.ring - ring modulation for that friendly Dalek soundbpf - a band pass filterrbpf - a resonant band pass filternbpf - a normalised band pass filternrbpf - a normalised resonant band pass filterperc_snap - a finger snapperc_snap2 - another finger snapbd_ada - a bass drumguit_em9 - a lovely guitar arpegio over Em9live_loop fn and thread names to stop them clashing with
standard user defined threads and fns.with_fx now returns the result of the blockVersion 2.2 - ‘Slicer’
Thursday 18th December, 2014 (view commits)
This release brings a number of nice enhancements. However the main feature is the accurate timing for triggering FX. This means you can now reliably use FX for accurate rhythmic purposes such as wobbling, slicing and echoes.
use_sample_pack_as now uses a double underscore __ as a separator
between the user-specified alias and the sample name.play 50, {amp: 0.5}, {release: 2}, amp: 2with_fx FX synths are now triggered using virtual time rather than
real time. This means that FX can now be used for rhythmical purposes.RingArray datastructure. This is essentially an array
that wraps its indexes so you can use indexes larger than the array size.ring - (ring 1, 2, 3) creates a new ring array.knit - (knit :a1, 2, :c1, 1) returns (ring :a1, :a1, :c1) bools - (bools 1, 0, 1) returns (ring true, false, true)range - (range 70, 100, 10) returns (ring 70, 80, 90, 100)sample_loaded? - to detect whether a specific sample has been loaded:tb303 synth - sound is reverted to v2.0 behaviour:square - Pure square wavebd_tek - Bass drumone_in now returns false if num is < 1live_loop’s no-sleep detector works within nested with_fx blockschord now returns a ring.Version 2.1.1
Tuesday 25th November, 2014 (view commits)
Version 2.1 - ‘Core’
Friday 21st November, 2014 (view commits)
The focus of release is very much on technical improvements, efficiency and general polish.
The most obvious and exciting change is the introduction of the
live_loop which will change the way you work with Sonic Pi. For more
information on live_loop take a look at the new section in the
tutorial. Another very exciting development is that v2.1 marks the
official support for Windows thanks to the excellent work by Jeremy
Weatherford. Finally, this release is also the first release where Sonic
Pi has a Core Team of developers. Please give a warm welcome to Xavier
Riley, Jeremy Weatherford and Joseph Wilk.
live_loop - A loop for live codinginc - incrementdec - decrementquantise - quantise a value to resolutionfactor? - Factor testat - Run a block at the given timesdegree - for resolving a note in a scale by degree such as :i, :ivchord_degree - Construct chords based on scale degreesuse_sample_bpm - for changing the BPM based on a sample’s durationrest? - Determine if note or args is a restvt - Get virtual timeset_control_delta! - Set control delta globallywait now handles both sleep and sync functionality play to be a proc or lambda. In which case simple call it and use the result as the noteplay to accept a single map argument (in which case it will extract :note key out if it exists.play and synth now treat ‘notes’ nil, :r and :rest as rests and don’t trigger any synths. C-i over a function name now opens up the doc system at the relevant placerand_i and rrand_i now correctly return integers rather than floatsmod_range param to have negative values (for oscillating with lower notes)_slide_shape and _slide_curve args.cutoff_attack, cutoff_sustain, cutoff_decay, cutoff_release, cutoff_min_slide, cutoff_attack_level, cutoff_sustain_level,cutoff_env_curveVersion 2.0.1
Tuesday 9th September, 2014 (view commits)
alt-* prefixedcmd-* prefixedcue/sync messages are more clearly highlighted)Version 2.0 - ‘Phoenix’
Tuesday 2nd September, 2014 (view commits)