Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

343 lines (296 sloc) 15.8 KB

Overtone Change Log

Version 0.6 (19th Dec 2011)

New Committers

  • Matthew Gilliard
  • Dave Ray
  • Harold Hausman
  • Jennifer Smith


  • Improve scsynth executable lookup strategy for linux
  • Warn users if the number of samples they're attempting to write exceeds the capacity of UDP packets
  • Add #'write-wav for writing data (either a buffer or a seq) to an external file.
  • Add SC compatable wavetable format converter #'data->wavetable
  • Add more file helper fns #'mkdir #'file-exists? #'mv! #'file? #'mk-tmp-dir! #'rm-rf! #'mkdir-p! #'absolute-path? #'dir-exists? #'subdir? #'cannonical-path #'ensure-trailing-file-separator #'remote-file-size #'dir-empty?
  • Add retry functionality to #'download-fie
  • Add string helper fns #'split-on-char
  • Add system helper fns #'window-os? #'linux-os? #'mac-os?
  • Add zip helper fns #'zip-file #'zip-entry #'zip-ls #'zip-cat #'unzip
  • Make #'defcgen globally accessible
  • Improve file-store fns. Add #'config-get #'config-set!
  • Change ~/.overtone structure - put logs in separate dir and also create assets dir.
  • Print user name on boot
  • Add #'create-buffer-data for generating buffer data
  • Add master mixer volume and input gain controls #'volume #input-gain
  • Set default port for external server to 57110
  • Add basic support for chord inversion #'inc-first #'dec-last #'invert-chord
  • Add beginnings of an asset management system for dealing with direct asset urls and zipped bundles.
  • Allow #'load-samples to take a list of strings of path partials as a param which it can stitch together using the correct path
  • Add #'server-sample-rate cached server info val.
  • Expand docstrign for definst
  • Add simple 2 channel recorder functionality available through #'start-recording and #'stop-recording
  • Add support for mapping control busses to a synth params
  • Automatically determine if a sample is stereo or mono and create the appropriate player
  • Add #'buffer-cue for streaming audio from disk. Also add supporting fn #'buffer-cue-pos
  • Add ability to query a metronome for its current bpm value by passing it a single arg :bpm
  • Make find-ugen more flexible - allow searches for SC name, lowecase and overtone names. Also rename *-ug ugen helper fns to *-ugen
  • Allow samples returned by #'sample to be used as buffers
  • Remember versions seen by the config by storing them in a set.
  • Illustrate that the mixer is receiving too high volumes by outputting pink noise in addition to printing warning messages (this bevaviour is likely to change in a future version).

New Instruments

  • Add sampled-piano (piano samples are linked to as an asset)


  • Add an example of mapping a control bus onto synth params
  • Add Schroeder-reverb example
  • Add feedback example
  • Festive Troika melody complete with fully synthesised bells


  • Fix cgens to deal with the case where arg names were overriden by the explicit bindings created with #'with-overloaded-ugens
  • Fix #'bus-set!
  • Fix #'nth-interval for the case where no scale is specified (defaults to diatonic)
  • Only run #'shutdown-server in JVM shutdown hook when the server is already connected.
  • Evaluate default vals passed to synths - allows the use of fars and fns to set default parms.
  • Fix #'buffer-save - choose defaults that actually work.
  • Refer to correct namespaced keyword for instrument
  • Fix sample re-loading on server boot
  • Add #'status alias for #'server-status
  • Fix :shutdown on-sync-event callback fn ::reset-cached-server-info
  • Fix hardcoded wav path with freesound asset.

Version 0.5 (17th Oct 2011)

New Committers

  • Nick Orton
  • Kevin Neaton
  • Jowl Gluth
  • Chris Ford
  • Philip Potter


  • Add new anti-ear-bleeding (TM) safety harness
  • Add noise TOO LOUD!!! warnings when output is above a safe threshold
  • Add fns to core and live
  • Rename await-promise! to deref!
  • Pull all Overtone synthdefs into a defonce statement so they don't get reloaded multiple times
  • Add glob capability to file manip fns
  • Teach file manip fns to resolve ~
  • Add #'load-samples to allow the loading of multiple samples via a globbing string
  • Allow uppercase B to be usable as a flat notation for notes.
  • Add volumes to mono and stereo sample players
  • Add canonical-pitch-class-name to return the canonical version of the specified pitch class
  • Free allocated id and throw exception if a sample isn't loaded correctly
  • Add docstrings for ugen done-action constants and default vars
  • sc-ugens can now take any map (such as buffer and bus) args and automagically map them to their :id vals.
  • ctl can now take buffer and bus args
  • Rename :n-frames to :size for buffer-info map to make the keys consistent with buffer maps
  • Massage Doubles to Floats in outgoing OSC messages
  • Ensure multiple shutdowns/boots can't happen simultaneously.
  • Teach scopes to only work with an internal server
  • Only allow #'buffer-data to work with an internal server
  • Clean up REPL output when starting/stopping servers
  • Add handy file downloading fns (for downloading samples)
  • Create gens namespace containing all ugens and cgens
  • Move more internals into
  • Rename #'server-info to connection-info
  • Add #'server-info which polls information directly from the server
  • Add individually cached server info fns (server-num-output-buses, server-num-audio-buses etc.)
  • Add #'deps-satisfied? and #'satisfied-deps query fns to examine the state of satisfied deps
  • Add wait-until-deps-satisfied fn which blocks the current thread till all specified deps have been satisfied
  • Allow longs as buffer ids
  • Make sc-osc-debug-on public (some users were reporting issues with /dumpOSC)
  • Add #'ensure-connected!
  • Make samples play at normal rate even when sample-rates differ
  • Add #'run - like #'demo but for testing non-audio synths
  • Ensure sc-ugens and numbers are allowed as ugen args
  • Ensure inst and synth player fns have similar calling semantics
  • Rename #'status -> #'server-status
  • Rename #'connected? and #'disconnected? -> #'server-connected? and #'server-disconnected? respectively


  • Add Pepijn's vocoder example


  • Remove await-promise as deref in Clojure 1.3 now accepts a timeout val.
  • out cgen doesn't support auto-rating so need to explicitly specify when we're outputting to a control bus


  • Fix minor niggling bugs in shell fns
  • Ensure osc lib fns are in scope withing server (fixes #'at macro)
  • (use :reload-all ' now works again
  • Ensure ugen arg docstrings don't lose their order
  • Fix THX example and make it sound more beefy
  • Fix drum loading
  • Fix ks1, ks1-demo, tb303 and whoahaha synths
  • Ensure #apply-at uses the playeor thread pool (fixes use of #'stop with temporal recursion)
  • Make sure a synth's param list consists of symbols not strings
  • Preserve an instrument's metadata - instrument docstrings are now honoured
  • Fix closing buffer scopes
  • Make scope draw with the correct orientation
  • Don't consistently redraw scope buffers (short-term fix for the scsynth-jna memory leak)
  • Various example fixes
  • Fix ls-file-names to only return the file names, not the full path
  • Only satisfy :synthdefs-loaded dep when all synthdefs have been loaded
  • Fix FAILURE /n_free Node not found warning after stopping a currently running demo
  • Fix ugen arg checking fns

Version 0.4 (25th Sept 2011)


  • Support for Clojure 1.3
  • Provide more separation between 'public' and 'private' APIs by moving non-public aspects of into
  • Similarly pull out 'private' machinery from into - now contains only public fns.
  • Create new helpers namespace for useful 'public' fns. overtone.util is now meant for internal/private util fns.
  • Define and use default Overtone at-at pool
  • Remove server dependence on studio.rig. Use #'boot-rig to boot and wait for rig to complete its initialisation
  • Improve doc for sin-osc-fb ugen
  • Improve doc for node-free
  • Clean up implementation of cgen macro
  • Rename boot to boot-server
  • Rename quit to kill-server
  • Make osc-validator check for actual types not the 'fuzzy' types Clojure uses
  • Add information about resolving collider ugen fns to collider docstrings
  • Teach resolve-degree about sharps and flats
  • Stop users from attempting to receive osc messages from the server when it's not connected
  • Various ugen metadata fixes
  • Various docstring improvements


  • Add piano piece - Gnossienne No. 1 by Erik Satie


  • Add some useful string manipulation fns
  • Add some file helper fns
  • Move splay-pan into helpers ns
  • Move sc-lang converter here


  • Add odoc - Overtone version of doc which gives information about ugen colliders
  • Add super rudimentary (but still pretty fun) shell fns ls and grep
  • Make find-ug and find-ug-doc macros so you can pass unquoted symbols as args
  • Allow ugen searches to also match the ugen name in addition to its full doc string
  • Teach find-ug to print the full docstring of the match if only one is returned


  • Support for vijual representation of node tree


  • Fix clear-ids in allocator
  • Don't explicitly free node id when freeing node as this is already handled by a callback
  • Fix resolve-gen-name
  • Fix cgen bug in arglist generation
  • Fix snare drum inst

Version 0.3 (12th Sept 2011)


  • Print ascii art on boot (for both internal and external servers)
  • Add :params key to ugen map
  • Make ugens store their Overtone name
  • Add Examples mechanism - defexamples - to store executable example documentation for ugens
  • Make all trig fns :kr by default
  • Update osc-clj to 0.6.2
  • Teach callable maps to identify themselves when printing
  • Make ugens print themselves nicely
  • Rename ugen type to sc-ugen to help differentiate between the low-level maps representing supercollider ugens and the ugen fns which generate those maps
  • Automatically capitilise ugen arg docstrings
  • Make pulse and impulse :kr by default
  • Create to store default vals such as the synth limits
  • Let both alloc-id and free-id take an optional action-fn which will be executed within the allocation/deallocation transaction. This allows fns with side-effects to have their execution tightly bound to the allocation mechanism such that they cannot be incorrectly interleaved within a concurrent context.
  • Add additional server sync fns - server-sync and with-server-self-sync and also allow a matcher-fn in recv
  • Update buffer fns with explicit consideration of concurrent contexts
  • Fix send-reply - it's now possible to send arbitrary information from the server via osc messages
  • Move handler keys to end of event param list to match osc-clj
  • Update and format event docstrings
  • Add summaries to ugens, cgens and examples
  • Re-organise namespaces
  • rename clear-handlers to remove-all-handlers to match osc-clj
  • Pull out spec generation code from ugen.clj to specs.clj
  • Add checking functionality to ugens. Now the :check fns in the metadata are honoured
  • Allow :check fns to be vecs of fns (will evaluate them all and aggregate any errors)
  • Throw friendly exception when user doesn't specify both the val and rate in synth params when using a vec
  • Add checks for nil args in control-proxy, sc-ugen and output-proxy
  • Add check fns for a few ugens (such as compander)
  • Add nil-arg-checker for ugen fns - throws an exception when a ugen fn is called with nil args
  • Print out :none in docstring if a ugen's arg has no default
  • Unify binary/unary-ugen and standard ugens. Now they are both callable maps and have the same calling semantics
  • Add docstrings to binary/unary-ugens
  • Add Overtone version number
  • Add at-at as an explicit dependency
  • Implement scope updating usign at-at
  • Implement music.time with at-at
  • Add lovely algorithmic piano example translated from Extempore example
  • Add other drives (D and E) to windows scsynth paths

New algo/music/repl fns

  • choose-n
  • cosr
  • sinr
  • tanr
  • rand-chord
  • find-ug
  • find-ug-doc
  • ug-doc

New cgens

  • sound-in
  • mix
  • splay

New Examples

  • dbrown
  • diwhite
  • dwhite
  • impulse
  • send-reply
  • compander


  • Fix piano inst - deal with 20 arg restriction by using apply
  • Fix missed references to :free (keywords are no longer allowed as param vals)
  • Fix ugen rate checker
  • Fix blues example
  • Pause thread booting Overtone until the boot has fully completed

Version 0.2.1 (4th August 2011)


  • Fix missing parens in drum and synth

Version 0.2 (3rd August 2011)


  • Added example implementation of MAD (Music as Data) notation
  • Add ugen arg rate checking - ensures ugen rates are <= parent rates for most cases
  • Add docstrings to pretty much all ugens now
  • Add :auto-rate option for ugen metadata to allow the default ugen automatically determine its rate
  • Make all :ir rated ugens :auto rated
  • Add list of arg names to synth map with the key :args
  • Add hybrid args/keyword-args calling strategy for ugens. Matches SCLang's behaviour
  • Unify synth and ugen hybrid args/keyword-args calling strategies
  • Separate option :target and :position keys to separate map when calling node. This is to stop them clashing with similarly named args
  • Add mda-piano ugen metadata and corresponding synth
  • Add stk ugen metadata
  • New instruments: tb303 mooger and others
  • New fx: rlpf, rhpf and others
  • Further work on pitch.clj functions
  • Make demo behave similarly to synth
  • Added translations for the majority of Chapter 1 of the new SuperCollider book
  • Clean up docstring generator. Two \n\n in a row are treated as a carriage return, single \n are treated as spaces
  • Add docstrings to defunks
  • Add information from scserver to buffer and sample maps in the key :info
  • Autoconvert any bus arguments to their :id val when passed as ugen args
  • Use namespaced keywords to represent bus types
  • Autoconvert any bus arguments to the :id val when passed as synths args
  • Add map-ctl to map a node's control param to the values in a given control bus
  • Replace java bitset allocator with Clojure ref-based one which can handle the allocation of sequential ids
  • Use new allocator to allocate sequential busses
  • Add limit for the number of audio busses
  • Create new helpers namespace for end-user helper fns. Create two sub-namespaces chance and scaling containing many useful fns
  • Allow synths to take :pos and :tgt in any order
  • Trimming of docstrings to be within 80 chars
  • Add new buffer fns for reading and writing to scsynth buffers
  • Add basic synthdef decompilation
  • Ensure :dr rate ugens only have :dr rate inputs
  • Add dubstep bass examples
  • Allow synth params to be passed as maps
  • Add support for bespoke envelope curve lists
  • Special case FFT ugen to allow :ar ugens to be passed as args
  • Add :param key to synths and insts storing the list of param maps
  • Add support for control ugens with rates other than :kr
  • Don't require console viz stuff as default
  • Print out nice Overtone ascii art and welcome message on boot
  • Add comparison binary ugens
  • Add OSC message validator system - checks all outgoing messages against a type signature
  • Add :append-string mode for ugen arg metadata - allows the use of string args for certain ugens
  • Fix dpoll and poll ugens
  • Don't send any unknown messages to the server
  • Add support for multiple paths to scsynth
  • Replace crude /done syncronisation mechanism with a more robust one based on /sync
  • Add cgens - composite ugens
  • Re-implement pseudo-ugens with cgens
  • Re-implement a number of demand ugens with cgens allowing to match the arg ordering of SCLang


  • Fix print-classpath to refer to the project's classpath
  • Freeing control bus previously freed an audio bus of the same name
  • Masses of ugen metadata fixes
  • Allow :kr ugens to be plugged into :dr ugens
  • Fix ugen :init behaviour
  • Fix klang and klank init fns to munge specs correctly
  • Increase APPLY-AHEAD time to 300ms to reduce perceived jitter when using the metronome
  • Synchronise creation of first studio group
Jump to Line
Something went wrong with that request. Please try again.