Sonic Pi v3.0 Release Notes

Release Date: 2018-02-21 // about 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

    • 0๏ธโƒฃ 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.

    0๏ธโƒฃ 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
    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