samaaron/sonic-pi: Version 2.11.0 - 'Time Warp'
- Sam Aaron1
- Hanno Zulla2
- Joseph Wilk3
- ethancrawford
- Jeremy Weatherford
- Łukasz Siwiński
- Xavier Riley
- kn1kn1
- ContesseLina
- Martin Keegan
- Nicolas Dermine
- Luis Lloret
- Federico P.
- Adrian Cheater
- Robin Newman
- dal Pozzo4
- verbgio
- Wolfgang Werner
- mpatrascu
- Ruben Tobalina
- G. Martin Butz
- petterreinholdtsen
- Weblate push user5
- Clare Macrae
- Paulo
- berk1n
- Oleksiy
- ilhandagm
- Jeroen Castelein
- Emlyn Corrin6
- 1. University of Cambridge
- 2. epublica
- 3. Poetic Computation
- 4. Centro de Creaciones Electroacústicas
- 5. @WeblateOrg
- 6. SwiftKey (@TouchType), @Microsoft
Description
3rd Nov, 2016 (view commits)
This release is the biggest and most adventurous release yet. There are as many (invisible) modifications and improvements to the internal systems as there are new external features that you can see and play with. The aim was to create a solid foundation for new and exciting features both in this release and in preparation for future releases.
We also open our arms to welcome two new Core Team members - Luis Lloret and Adrian Cheater. Both have made generous and substantial contributions to this release. Thank-you. Sadly we also say farewell to Jeremy Weatherford. Please extend your kind thoughts and gratitude to Jeremy for all of his contributions - in particular for turning the Windows release from a possibility into a reality. Luckily Luis has kindly stepped in to maintain the Windows installer.
The main visible feature is the new scope visualisers. The overall audio output can now be visually monitored by one of three wave form visualisers. Firstly there is the individual left and right channels, next is a single mono scope which is mixed down from the stereo channels using RMS and finally there is a Lissajous scope which displays phase differences between the left and right channels. Typically the mono output will be most useful. Use the preferences pane to hide and show each of these scopes. All of them may be viewed at the same time if necessary. Thanks to Adrian Cheater for the core work behind this feature.
We now have support for multi-channel input (up to 16 channels) via the
new sound_in* synths for systems that have audio in. This opens up the
possibility to use Sonic Pi as an FX unit for vocals, guitars and any
other audio source.
Another exciting new feature is the sample opt onset: - which lets you
play a specific percussive part of a sample. This uses an automatic
onset detection algorithm to determine all the points in the sample that
go from quiet to loud quickly such as a drum, synth or bass hit. For
example, this allows you to take a complex drum sample and trigger each
of the individual drums in your own order and to your own timing.
Finally, translations are now crowd-sourced and small or large
contributions for any language can be made here:
https://hosted.weblate.org/projects/sonic-pi/. If your language isn't
yet available or you would like to improve things, please join in the
effort. Thanks to Hanno Zulla for making this possible.
samplenow supports the optpath:which enables the sample's path to be overridden.use_sample_packis now deprecated and no longer available. Consider using the new filter system. See documentation forsamplefor more details.current_sample_packis now deprecated and no longer available.inspecthas been removed. (Standard printing now callsObject#inspectby default)load_samplenow only loads the first matched sample.load_samplesnow loads all matched samples.- Remove SuperCollider server automatic reboot system as it was badly
conflicting with machines that went into a 'sleep state' (for example,
when a laptop is closed). The fn
rebootis still supported and may still be triggered manually if required. - Calls to
play,synthandsamplenow consume all their arguments before testing to see if the synth should be triggered. This ensures all declared rands are consumed. This change might therefore potentially modify your random stream consumption. Consider usingrand_backorrand_skipto re-align the stream if necessary. - New threads now start with a fresh set of tick counters and a new random stream.
- It is no longer possible to use lambdas as values for synth defaults. This is because synth defaults are shared across thread boundaries and there is now a new safety system that only allows immutable/serialisable values to be used. Unfortunately Ruby has no notion of a 'pure' function and each lambda captures over its environment and therefore may contain free variables pointing to mutable data. A replacement system for describing a simple set of pure functions is being designed.
reset- resets the user's thread locals (such as ticks and rand stream index) to the snapshot of the state as recorded at the start of the current thread.clear- clears all the user's thread locals to a blank state.time_warp- allows whole blocks of code to be shifted forward or backwards in time up to the value ofcurrent_sched_ahead_time.rand_look- generate a random number without consuming a rand by looking ahead in the random stream.rand_i_look- generate a random integer without consuming a rand by looking ahead in the random stream.run_file- Runs the contents of file at path as if it was in the current buffer.run_code- Runs the contents of the specified string as if it was in the current buffer.Numeric#clamp- max and minimum bound (will clamp self to a value <= other and >= -1*otherset_recording_bit_depth!- set the bit depth for WAV files generated by recording the audio. Default is 16 bits, and can now be set to one of 8, 16, 24 and 32. Larger bit depths will result in better quality audio files but also much larger file sizes for the same duration.scsynth_info- obtain information about the running audio synthesis server SuperCollider such as the number of available busses and buffers.
- New synth
:tech_saws- an implementation of a slightly modified supersaw. - New synth
:sound_in- reads audio from the sound card. - New synth
:sound_in_stereo- reads audio from the sound card. - All FX now have a
pre_mix:opt. This allows the audio flow to completely bypass a given FX (unlikemix:which passes the audio through the FX but modifies the amplitude afterwards). - Teach
controlto manipulate the last triggered synth by default. For example,control amp: 3will set theamp:opt of the last triggered synth to 3. However,control foo, amp: 3will still specifically control synthfoo.
- New opt
slice:- lets you play a specific slice of a sample. The default number of slices is 16 which may be changed with thenum_slices:opt. Sample is divided equally into the number of slices without regard for audio content and onset points. Theslice:opt also works withpickfor triggering random sample slices:sample :loop_amen, slice: pick. - New opt
onset:- lets you play a specific percussive part of a sample. Uses automatic onset detection to determine the points in the sample that go from quiet to loud quickly. Unlikeslice:,onset:does not necessarily divide a sample into equal onsets - some onsets will be smaller or bigger than others and the number of onsets is determined by the algorithm and isn't known in advance.
- New scope visualisers.
- Allow files to be dragged from the OS into the text area. This inserts the file/folder name as a string.
- GUI now remembers the last directory you saved or opened a file to/from as the default location for next time.
- Swap align button for a scope button. Given that alignment now happens automatically, a specific button seems somewhat redundant. Instead we now have a button for toggling the visibility of the scope(s).
- Loading multiple samples simultaneously is now much faster.
- Preferences have been slightly re-organised.
- Preferences now has a Master volume slider which controls Sonic Pi's audio amplitude independently from the system volume.
- All buttons now display status message + shortcut where available.
- Enable app transparency slider for Windows.
- Dark and light theme colours have been slightly polished and unified to use the same logic.
- On multi-screen systems, fullscreen mode now defaults to the app's current screen.
- Translations are now crowd-sourced. See:
https://hosted.weblate.org/projects/sonic-pi/ - Improve docstring for
live_loop. - Add 3 new MagPi articles on amplitude modulation, performance and practice techniques.
- Add missing
pulse_width:opt to flanger FX doc.
- Improve log messages written to
~/.sonic-pi/log - Improve booting on Mac in the case that the audio card's rate can't be determined.
- Massively improve boot stability on Windows.
- Improve error message for
play_chordwhen notes isn't list like. - The number of samples that may be loaded at any one time has been increased from 1000 to 4000. However, memory limitations still apply (4000 1MB samples will require 4000MB of free system memory)
picknow returns a lambda if no list is given as the first argument (which makes it useful for using with sample'sonset:andslice:opts.- Audio server is now paused when app is not in use - reducing CPU load and battery consumption.
- Error messages now report names matching the editor tabs such as
buffer 0.
- Decrease duration of
:loop_tablaso that it correctly loops. (Length reduced to 10.674 seconds). - Enforce UTF-8 encoding of all incoming text.
- Fix
:reverbFX'smix:opt to ensure it's in the range 0 to 1. sample nilnow no longer plays a sample - it was incorrectly defaulting to the first built-in sample (:ambi_choir)pick'sskip:opt now works as expected:pick(5).drop(1) == pick(5, skip: 1)samplenow prints a 'no sample found' message with bothsample nilandsample []rather than incorrectly playing the first built-in wav file.- Limit
:pianosynth to notes less than 231 as higher values crash the audio server.
Files
samaaron/sonic-pi-v2.11.0.zip
Files
(84.1 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:7e92e1779ac65ac3fbca20b6e5057691
|
84.1 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/samaaron/sonic-pi/tree/v2.11.0 (URL)