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 asmidi_note_on
,midi_pitch_bend
,midi_cc
,midi_clock_tick
. See new tutorial section for more information. These fns send MIDI messages to connected MIDI devices. Incoming MIDI is received via the new event log. -
with_swing
- add swing to successive calls to do/end block. -
get
- get a named value from the Time State at the current time. This will return the last value entered. Previous values can be read when within atime_warp
. Has full support for OSC -
set
- set a named value in the Time State at the current time. Future values can be set when within atime_warp
. -
use_real_time
- convenience fn for setting the schedule ahead time to 0 for the current thread. Very useful for removing latency from live loops that are working with external cues (such as MIDI or OSC). -
use_midi_defaults
- set defaults to be used for all subsequent MIDI calls. Similar touse_synth_defaults
. Also available:with_midi_defaults
. -
use_osc
- set the default hostname and port number for subsequent outgoing OSC messages. See alsowith_osc
. -
osc
- send Open Sound Control messages in time with the music to default hostname and port -
osc_send
- similar toosc
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 tosound_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 thedo/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
andget
orset
- 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 toat
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 theprobability:
opt). - Fix file path drag and drop on Windows to not accidentally prefix path with /.
- Teach
chord_invert
andsample
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
|