github sonic-pi-net/sonic-pi v3.0
Version 3 - 'IO'

latest releases: v4.5.1, v4.5.0, v4.4.0...
6 years ago

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

Don't miss a new sonic-pi release

NewReleases is sending notifications on new releases.