Skip to content

Latest commit

 

History

History
612 lines (527 loc) · 29.2 KB

CHANGELOG.md

File metadata and controls

612 lines (527 loc) · 29.2 KB

Overtone Change Log

Version 0.8.0 (23rd December 2012)

New Committers

  • Nada Amin
  • George Jahad
  • Colleen Twitty
  • Mikko Harju
  • Paul Sanwald
  • Roger Allen
  • Mikkel Gravgaard
  • J. Graeme Lingard
  • Chris Ford
  • Mat Schaffer

Major Features

  • New, all clojure, in-memory scsynth interface using clj-native
  • GUI widgets using seesaw and swing (see examples in overtone.examples.gui)
    • synth controls to adjust parameters (synth-controller, live-synth-controller)
    • mixer for instruments (mixer)
    • piano roll and two types of step sequencers (piano-roll, step-sequencer, stepinator)
    • x,y,z surface controller (surface)
    • wave-form and wave-table editors for wave-table synthesis (waveform-editor, wavetable-editor)
    • basic spectrogram showing frequency space representation (spectrogram)
  • New event handler on-latest-event which serially handles incoming events with the lowest latency by dropping events it hasn't had time to handle, yet always handling the last event seen.
  • Major progress has been made porting the metadata for the extra ugens not included by default in SuperCollider. See overtone/sc/machinery/ugen/metadata/extras/README.md for progress
  • Complete overhaul of the default group structure. See foundation-* fns below.

New fns

  • on-latest-event - Handles events with minimum latency - drops events it can't handle in time
  • event-monitor-on - prints out all events to stdout (can be very noisy!)
  • event-monitor-off - turns off event monitoring
  • event-monitor-timer - records incoming events for a specified period of time
  • event-monitor - returns map of most recently recorded events
  • event-monitor-keys - returns seq of all keys of recently seen events
  • midi-capture-next-controller-key Returns the event key for the next modified controller
  • buffer-write-relay - similar to buffer-write! but doesn't require native synth. Can be very slow.
  • chord-degree - Returns the notes constructed by picking thirds in the given note of a given scale
  • foundation-overtone-group - returns the group for the whole of the Overtone foundational infrastructure
  • foundation-output-group - returns the group for output synths
  • foundation-monitor-group - returns the group for the monitor synths (executed last)
  • foundation-input-group - returns the group for the input synths (executed first)
  • foundation-root-group - returns the main group for synth activity
  • foundation-user-group - returns the container group for user activity
  • foundation-default-group - returns the default user group - use this group for your synths
  • foundation-safe-group - returns the safe group - synths in here will not stop when #'stop is called
  • foundation-safe-post-default-group - returns the safe group positioned before the default group - synths in here will not stop when #'stop is called
  • foundation-safe-pre-default-group - returns the safe group positioned after the default group - synths in here will not stop when #'stop is called
  • node? - returns true if obj is a synth node or group
  • node-live? - returns true if node is live
  • node-loading? - returns true if node is loading (i.e. the server hasn't responded to say that it's loaded)
  • node-active? - returns true if node is either loading or live

New macros

  • with-no-ugen-checks - Disables ugen checks in containing form instead printing warning messages instead of raising exceptions. This is useful for the cases when the ugen checks are over zealous.
  • with-ugen-debugging - Prints debugging information for the ugens within the containing form.

Removed fns

  • on-trigger - prefer event system
  • remove-trigger - prefer event system
  • remove-all-handlers - calling this removes Overtone's default handlers rendering the system useless.

Renamed fns

  • stop-midi-player -> midi-player-stop - It can now handle keys

New Insts

  • supersaw
  • dance-kick
  • quick-kick
  • haziti-clap
  • daf-bass
  • cs80lead
  • simple-flute

New Synths

Started work porting synths from Ixi Lang (overtone/synth/ixi):

  • impulser
  • kick
  • kick2
  • kick3
  • sampled-piano Now we also have a synth version of the sampled piano with support for :out-bus arg.

cgens

  • sum - Adds all inputs together
  • mix - Now divides the inputs signals by the number of number of inputs
  • add-cents - Returns a frequency which is the result of adding n-cents to the src frequency.
  • mul-add now auto-determins the correct rate.
  • range-lin - maps ugens with default range of -1 to 1 to specified range
  • poll - now implemented via send-reply to print out via Overtone stdout and remove flushing latency.

User Visible Improvements

  • Further work on SuperCollider book translation (/docs/sc-book)
  • out-bus argument now added to a number of synths. This should be considered standard practice.
  • Overtone icon displayed on OS X systems
  • tb303 inst now accepts :amp param
  • Synth control proxies (args) can now accept a [default rate] vector i.e. [0 :kr]
  • Allow following ugens to be foldable (following Clojure's semantics): #{"+" "-" "*" "/" "<" ">" "<=" ">=" "min" "max" "and" "or"}
  • Teach certain binary ugens to behave appropriately if passed just one argument (unity).
  • Default scsynth memory size is now 256 (up from 8mb!)
  • env-gen now defaults to control rate.
  • Event stream now also gets a generic MIDI event with the value as a payload rather than as part of the key
  • Metronome now stores current bar
  • Add chord :m7+9
  • Buffer modifying fns now typically return the modified buffer
  • MIDI data map now includes keys :data2-f and :velocity2-f storing floats between 0 and 1
  • Add more scales
  • Ugen arity and keys are now checked with sensible error messages.
  • Allow samples to be forcefully reloaded - avoiding cache with via supplying the :force arg to load-sample
  • Midi poly player now sends both velocity (0-127) and amp (0-1)
  • Midi poly player can now be associated with specific MIDI devices
  • Midi poly player can now be created with a specific key allowing it to be removed independently

Internal Improvements

  • SCUGen now stores the ugen spec
  • SynthNodes now store the original synth design and arguments
  • SynthNodes and SynthGroups now print themselves succintly
  • Mixers are now part of studio
  • Many additional ugen checks
  • group-node-tree now knows how to handle a group as a param
  • extract-target-pos-args extraced for :tgt and :pos munging.
  • Allow for different JVM args per OS
  • Extend Integers to handle ISynthNode and IControllableNode protocols
  • Fixed race condition in node creation where /s_new could occasionally trigger the handler fn before the ide id is added to active-synth-nodes*
  • Synth names are now namespaced - allowing multiple synths to be defined with the same name but in different namespaces. Abbreviate safely to a 31 character limit.
  • Teach synthdef-write to resolve tilde paths
  • Internal event :osc-msg-received is now [:overtone :osc-msg-received]
  • Freeing node ids is delayed by 1 second to reduce the chance of a race condition occurring in the case where the id has been recycled and used before the node status has been set to :destroyed.
  • Add dynamic var overtone.sc.node/*inactive-node-modification-error* which may be bound to :silent, :warning or :exception to control the behaviour of the error created when an inactive node is either controlled or killed. (Default is :exception).

New Examples

  • Examples now locate in overtone/examples
  • Internal sequencer
  • Getting started video transcript
  • Jazz experiment
  • Internal metro
  • Clapping Music
  • Bass and drum funk

Bugfixes

  • Many, many many! See git history for full list.

Version 0.7.1 (27th June 2012)

Improvements

  • Improve booting of external server on Windows.
  • Working dir is now set on Windows machines for scsynth
  • scsynth path is now discovered on Windows rather than hardcoded
  • Users may set :sc-path in their config to point to their scsynth executable if it's not to be found in the default locations.

Version 0.7 (26th June 2012)

New Committers

  • Damion Junk
  • Jacob Lee
  • Fabian Steeg
  • Michael Bernstein
  • Ian Davies

New fns

  • overtone.sc.buffer/buffer-alloc-read - read a audio file from path into a buffer
  • overtone.sc.mixer/recording? - returns true if Overtone is currently recording audio
  • overtone.sc.buffer/buffer-info? - determins whether the arg is buffer information
  • overtone.sc.sample/free-sample - free buffer associated with a loaded sample
  • overtone.sc.sample/free-all-loaded-samples - frees buffers associated with all loaded samples
  • overtone.sc.buffer/file-buffer? - returns true if arg is a file buffer
  • overtone.music.pitch/find-scale-name - discover the name of a scale
  • overtone.music.pitch/find-note-name - discover the name of a note
  • overtone.music.pitch/find-chord - discover the name of a chord
  • overtone.music.pitch/note-info - return an info map representing a note
  • overtone.music.pitch/mk-midi-string - returns a validated midi note string
  • overtone.lib.at-at/show-schedule - displays a list of currently scheduled jobs
  • overtone.sc.node/node-get-control - get a set of named synth control values
  • overtone.sc.node/node-get-control-range - getn synth control values starting at a given control name or index
  • overtone.libs.freesound/freesound-search search freesound.org
  • overtone.libs.freesound/freesound-searchm search freesound.org and expand results at macro expansion time
  • overtone.libs.freesound/freesound-search-paths search and download from freesound.org
  • overtone.sc.node/node-tree-zipper - return a zipper over the node-tree
  • overtone.sc.node/node-tree-seq - return a seq of node-tree nodes
  • overtone.sc.node/node-tree-matching-synth-ids - return a seq of node-tree nodes matching a string or regexp
  • overtone.studio.inst/inst-volume - control the volume of a specific inst
  • overtone.studio.inst/inst-pan - control the pan of a specific inst

Renamed fns

  • buffer-cue-close -> buffer-stream-close
  • find-note-name -> find-pitch-class-name

New cgens

  • tap- Listen in to values flowing through scsynth and have them periodically update atoms associated with a synth instance for easy reading from Clojure.
  • scaled-play-buf - similar to play-buf but auto-scales rate
  • scaled-v-disk - similar to v-disk-in but auto-scales rate
  • hold - hold input source for set period of time, then stop safely
  • local-buf - now supports SCLang's argument ordering

Improvements

  • defsynths now no longer need only one root - therefore they now support side-effecting ugen trees.
  • Varied welcome messages
  • definsts and friends now accept a single arg map
  • Instruments are now stereo and panned with controls for each
  • You can supply a map of options for the scsynth binary as a :sc-args key in the config
  • Store and read default log level from config as :log-level
  • config-get now supports a default value
  • ctl can now handle a sequence of nodes to control as its first argument.
  • Log event debug messages on a separate thread to ensure logging doesn't interfere with event handling latency
  • Using overtone.live now consults the config to determine whether t* boot an internal or external synth
  • All midi events are now broadcasted on the event stream
  • Connected midi devices are automatically detected on boot
  • Add support for local buffers in synths through local-buf
  • Log output is now Clojure data
  • Update logging to log to ~/.overtone.log with two separate rolling files of max 5mb each.
  • Immigrate fns as vars, not vals - allows modifications to core fns to propogate immediately. Helpful for hacking on Overtone :-)
  • Add received OSC messages to debug output
  • Soften release of demo - no more clicks or pops!
  • Allow cgens to perform multichannel-expansion - similar to ugens
  • Increase amount of info stored in buffer-info and sample-info records
  • Improve interaction with external servers
  • buffer-cue now auto-allocates a buffer
  • Callable-maps now preserve metadata on assoc and cons
  • defsynth now supports cgen-like argument maps
  • New helper ns for internal helper fns
  • Safety system now uses a standard limiter
  • Groups may now be created with no params - defaulting to the tail of the root-group
  • Store names with groups and make them visible in node-tree
  • Add buffer size checking fns with sensible error messages.
  • Improve ugen error checking
  • Add additional SuperCollider paths for 3.5.1 version of SC

New protocols

  • IMetronome
  • ISynthNode
  • ISynthGroup
  • ISynthBuffer
  • ISaveable
  • IControllableNode
  • IKillable

New Examples

  • examples/piano_phase.clj
  • examples/row_row_row_your_boat.clj

Bugfixes

  • Sampled-piano link now points to a hopefully more persistent freesound version of samples
  • Allow creation of a buffer within the body of an at macro
  • Fix race condition by updating active-synth-nodes* before sending OSC message.
  • Fix divide-by-zero error in buffer-info
  • Only allow a-zA-Z0-9 chars in asset filenames. Fixes issue with bad filenames on Windows.
  • Fix startup race condition by thread-syncing retreival of in and out bus counts
  • Fix arg positioning in buffer-cue
  • Simplify safety system and fx using replace-out ugen correctly
  • Allocator now allows for the correct allocation of multi-channel busses.
  • buffer-write now handles start-idx argument correctly
  • Fix weighted-choose
  • Remove metronome glitches when changing bpm
  • Fix blues example
  • Fix issue caused by node not returning the synthdef
  • Fix OutputProxy printing errors by adding name field to record

Version 0.6 (19th Dec 2011)

New Committers

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

New

  • 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)

Examples

  • 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

Bugfixes

  • 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

New

  • Add new anti-ear-bleeding (TM) safety harness
  • Add noise TOO LOUD!!! warnings when output is above a safe threshold
  • Add repl.shell 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 overtone.sc.machinery
  • 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

Examples

  • Add Pepijn's vocoder example

Deprecated

  • 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

Bugfixes

  • Fix minor niggling bugs in shell fns
  • Ensure osc lib fns are in scope withing server (fixes #'at macro)
  • (use :reload-all 'overtone.live) 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)

New

  • Support for Clojure 1.3
  • Provide more separation between 'public' and 'private' APIs by moving non-public aspects of overtone.sc into overtone.sc.machinery
  • Similarly pull out 'private' machinery from overtone.sc.server into overtone.sc.machinery.server - overtone.sc.server 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

Examples

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

Helpers

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

REPL

  • 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

Deprecated

  • Support for vijual representation of node tree

Bugfixes

  • 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)

New

  • 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 overtone.sc.defaults 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

Bugfixes

  • 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)

Bugfixes

  • Fix missing parens in drum and synth

Version 0.2 (3rd August 2011)

New

  • 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

Bugfixes

  • 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