Tau
Version 3.2.0 - 'Tau'
28th Feb, 2020
After a long 2 years without updates, we are threaded with excitement to
bring you Sonic Pi's first fully independent release. Sam Aaron's work
on this release has been 100% supported by kind and generous donations
from people on Patreon in addition to
funds raised by delivering talks, workshops and performances. Sam's work
has also been hugely assisted by many wonderful code and translation
contributions both by members of the Core Team and by our growing
international community of live coders. This release has truly been a
community effort.
So, what's new? This time there are no radical new features, instead we
have a much more polished, accessible and stable version than ever before.
(This release has been heavily battle-tested in many performances worldwide).
This release is codenamed Tau - (an improved Pi).
One of the core focusses of this release is accessibility. Tau
introduces support for screen readers. Previously the code editor was
invisible to the main screen readers on both macOS and Windows and this
is now fixed. There is also an accessible menu bar and a new high
contrast colour theme which is WCAG 2 level AAA compliant. Accessibility
is very important to us - we acknowledge that this is only the
beginning and we value and encourage feedback from users who have
specific accessibility requirements that we are not directly meeting. We
plan to improve our accessibility support where possible in every release
going forward.
Another aspect of accessibility is support for Windows devices with high
resolution displays. Previously on certain displays font and icon sizes
could be far too small, unreadable and out of proportion with the app in
general. This has all been addressed with significant work on ensuring
Sonic Pi looks great on a variety of monitors on both Windows and
macOS. We believe that this release looks better and is more usable than
any previous release.
Tau features two beautiful new audio visualiser scopes - a spectrum
scope showing the frequency content of the audio and a beautiful mirror
stereo scope. These scopes have been contributed by Chris Maughan who
has also been pivotal in improving and simplying the Windows build
process. We are hugely grateful for his contributions - thanks Chris!
We have two fabulous new FX - a ping pong delay contributed by Ethan
Crawford and an autotuner contributed by Xavier Riley. We hope you have
as much fun playing with these as we have.
Finally, this release has seen a significant improvement in
translation coverage - both of the GUI and the tutorial. We truly
believe that this helps us achieve our mission of lowering the barrier
to entry for a creative experience with code by helping more non-English
speakers start their live coding journeys.
Now, go and make some noise with code!
Breaking Changes
spread
now produces identical patterns as in the
Toussaint paper.
Previously, some of the patterns had been shifted. Use therotate:
opt to
match prior behaviour if required.- OSC cues now include the IP address and port number of incoming messages
- MIDI cues now include the source information in the first part of the
path with:
separators to match the new OSC cue format. - The
osc
fn now forces all outgoing args to either be numbers or
strings (binary blobs and timestamps are not supported at this
point). If the value is neither a number or string, it is 'inspected'
and the resulting description string is sent instead. - The default incoming OSC cues port is now 4560 as the previous value
was registered on the Iana Service Name and Transport Protocol Port
Number Registry. However, 4560 is currently free. - Constrain
:flanger
FX'sfeedback:
opt to range 0->1. Values greater than 1 had the effect of increasing the amplitude which should be achieved via theamp:
opt. - Add arg checker for
sample
'shpf:
opt which now ensures the value is not higher than 119 as values higher than this can cause bad noise artefacts. - Improve
sample
'sstart:
/finish:
/onset:
/slice:
opt semantics. Thestart:
andfinish:
opts forsample
now work within the specified slice or onset. This allows you to easily play, say the first half of a given slice or onset by specifying astart:
of0
and afinish:
of0.5
. Where both theslice:
andonset:
opts are specified, then the slice operates within the onset. Where theslice:
,onset:
andstart:
/finish:
opts are all used, the start/finish operate within the slice which in turn operates within the onset. See the updated sample examples for more information.
New Fns
eval_file
evaluates the contents of the specified file inline in the
current thread as if it was a function.midi_sysex
for sending MIDI sysex messages.- Add new chain fn
.notes
which takes a ring of values and returns a
new ring with each element treated as a note. This will leave numbers
unchanged but will turn note names like:C1
to their corresponding
MIDI note.
Synths & FX
- New FX
ping_pong
- delayed echo alternating between left and right channels. - New FX
autotuner
- Autotune/phase vocoder effect. - The
gverb
FX now checks to ensure that theroom:
opt is greater than or equal to 1. - The
piano
synth now supports fractional notes such as70.3
GUI
- New WCAG 2 level AAA compliant high contrast colour theme. This is
especially suited for those with low vision. - New application menu and shortcuts.
- New default icons which match the pro icon feel.
- 2 new visualiser scopes - mirror stereo and spectrum.
- Move to simple numbered labels for buffers.
- Improve scaling of icons, text etc. on high DPI displays on Windows.
- The version number is no longer placed in the initial comment of new
empty buffers. This felt like a friendly thing to do, but can be
confusing if a given buffer hasn't been used and the version was
updated. This results in the buffer reporting the old version number
that was used to create the buffer not the current version used to
display it. - Many, many translation improvements. Thanks to all the wonderful
volunteers contributing to the translation effort: https://hosted.weblate.org/projects/sonic-pi/ - Error pane height is now higher by default on all platforms and its
height is correctly scaled on high DPI monitors. - Preference checkboxes are now similarly styled on all platforms.
Improvements
- Allow scale degrees over an octave and augmented/diminished degrees.
- Calling
.tick
and.look
on a normal array such as[1, 2, 3]
will
now automatically convert it to a ring first. - Add docstring for the
set
fn. - Add new article A.20 - Creative Coding in the Classroom as appeared in
issue #9 of the Hello World magazine. - OSC messages are now sent from the external cue listening port. This
allows OSC servers that reply directly back to incoming messages (such
as SuperCollider) to be able to communicate back to messages sent from
Sonic Pi. - Random fns now understand notes. For example
rrand(:e1, :e2)
will
return a random frequency between E octave 1 and 2. - Windows can now detect sample onsets from samples stored in
.flac
and.ogg
format in addition to arbitrary sample rates such as 48khz.
Bugfixes
- Further improve boot stability on Mac in the cases where audio input/output
sample rates do not match (typically due to the use of bluetooth
headsets). Audio inputs on macOS are now disabled by default unless we
can definitely determine the audio rates are the same. - Revert synthdefs to original bytecode version. This fixes a regression
in at least the:tb303
synth and possibly others. All synths should
sound and behave as they did inv3.0.1
. - Fix issue with scaling default opts. Previously it was possible that
unspecified opts correctly fell back to the default value - however
that default value wasn't scaled. Default values are now always scaled
whether or not explicitly specified. with_sched_ahead_time
now correctly sets the schedule ahead time
before running the block and returns the result of the
block itself- When "Enforce Timing Guarantees" is selected, Sonic Pi wil no longer
throw out of time warnings in 'real time' threads (specified using
use_real_time
). set
andcue
no longer print duplicate messages which was possible
in some cases.- Fix
time_warp
examples which were incorrect and misleading. - Improve pid handling on Linux. This should reduce the number of zombie
processes accidentally generated. - The
offset:
opt forwith_swing
now matches documented behaviour. - Teach
sample_duration
to scale correctly. - Fix GUI bug which could result in a buffer stuck in the highlighted
state after hitting Run. - Fix the
on:
opt when playing chords to work similarly across all
notes in a given chord. - Stop
defonce
from being executed multiple times - Calling
.take
on an empty ring no longer results in infinite
recursion but instead returns an empty ring. - Scope now has a minimum height.
- Windows now supports sending and receiving OSC messages over the
network to and from external machines.
Releases
Mac | |
Link | sonic-pi-for-mac-v3.2.0.zip |
Size | 124M |
MD5 | d9792361a19c3a946c376d54aeabad3f |
SHA256 | 7a3e8b29c30dd83cfa081cff86983f0a28269553b18636b6784a40601bb9497e |
Windows 10 (64 bit) | |
Link | sonic-pi-for-win-x64-v3.2.0.msi |
Size | 162M |
MD5 | 381012e19decc5e2277ed3856058ad84 |
SHA256 | d7d42f7fe95d8411ba951fa221b3259604de6cbc557c5a511671e6d531476b33 |
Windows 10 Portable (64 bit) | |
Link | sonic-pi-for-win-x64-portable-v3.2.0.paf.exe |
Size | 93M |
MD5 | a20811f7f15290c2006a9d6819de34ef |
SHA256 | b42f15f053f07bc9b714143a38ecc5de8e85c3bdb8e54c97b75f62151d632dea |