- 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.
- Damion Junk
- Jacob Lee
- Fabian Steeg
- Michael Bernstein
- Ian Davies
overtone.sc.buffer/buffer-alloc-read
- read a audio file from path into a bufferovertone.sc.mixer/recording?
- returns true if Overtone is currently recording audioovertone.sc.buffer/buffer-info?
- determins whether the arg is buffer informationovertone.sc.sample/free-sample
- free buffer associated with a loaded sampleovertone.sc.sample/free-all-loaded-samples
- frees buffers associated with all loaded samplesovertone.sc.buffer/file-buffer?
- returns true if arg is a file bufferovertone.music.pitch/find-scale-name
- discover the name of a scaleovertone.music.pitch/find-note-name
- discover the name of a noteovertone.music.pitch/find-chord
- discover the name of a chordovertone.music.pitch/note-info
- return an info map representing a noteovertone.music.pitch/mk-midi-string
- returns a validated midi note stringovertone.lib.at-at/show-schedule
- displays a list of currently scheduled jobsovertone.sc.node/node-get-control
- get a set of named synth control valuesovertone.sc.node/node-get-control-range
- getn synth control values starting at a given control name or indexovertone.libs.freesound/freesound-search
search freesound.orgovertone.libs.freesound/freesound-searchm
search freesound.org and expand results at macro expansion timeovertone.libs.freesound/freesound-search-paths
search and download from freesound.orgovertone.sc.node/node-tree-zipper
- return a zipper over the node-treeovertone.sc.node/node-tree-seq
- return a seq of node-tree nodesovertone.sc.node/node-tree-matching-synth-ids
- return a seq of node-tree nodes matching a string or regexpovertone.studio.inst/inst-volume
- control the volume of a specific instovertone.studio.inst/inst-pan
- control the pan of a specific inst
buffer-cue-close
->buffer-stream-close
find-note-name
->find-pitch-class-name
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 toplay-buf
but auto-scales ratescaled-v-disk
- similar tov-disk-in
but auto-scales ratehold
- hold input source for set period of time, then stop safelylocal-buf
- now supports SCLang's argument ordering
- 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 valuectl
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
andcons
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
IMetronome
ISynthNode
ISynthGroup
ISynthBuffer
ISaveable
IControllableNode
IKillable
examples/piano_phase.clj
examples/row_row_row_your_boat.clj
- 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
- 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).
- 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.
- 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 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
- 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 '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
- 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
- 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
- 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
- choose-n
- cosr
- sinr
- tanr
- rand-chord
- find-ug
- find-ug-doc
- ug-doc
- sound-in
- mix
- splay
- 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
- Fix missing parens in drum and synth
- 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