overtone.sc.sclang namespace to interact with the sclang commands
and to use sclang generated synthdefs
sclang available on their machine,
as long as the resource was generated previously, it should work transparently:sclang-path config to set sclang executable locationat-offset as an addition to the at-at based scheduling APIsynth-loadresources directory is included in Overtone's jar and deps.edn path (adds overtone-logo.png back to class path)flatten single map arguments passed to ugens, use apply concat instead#557: envelope description array generators have line numbers for jump-to-definition purposes
fix double-eval for overtone.sc.server/at{-offset} macros
setup studio groups only after foundational groups
ensure later events in dep-state* go after earlier events in :history
Fix defsynth-load macro, handle arguments that aren't a string literal
overtone.music.pitch/scale : correctly handle scales that contain more than 8 notes
Support setting :beat or :start-time in note events
overtone.sc.ugen-collide/binary-div-op ugen has been renamed overtone.sc.ugen-collide//
with-overloaded-ugensovertone.studio.aux is now named aux-bus instead, can't have files named "AUX" on windows:align :wait)This release features a significant update of the Pattern Library introduced in 0.14. These changes make it more suitable for live programming, improving the behavior when patterns which are currently playing are being redefined. The pattern libary is still considered alpha and is liable to change, feedback is welcome.
There are a bunch of under the hood changes and quality of life improvements. There is now a small GUI window that will pop up when doing the OAuth authentication flow with Freesound, and since we now correctly refresh tokens hopefully you won't see that very often. A bunch of old bugs and issues have been addressed, as well as reflection and boxed math warnings, which should help with performance.
There are two breaking changes. The bitwise ugens have been renamed to
bit-{and,or,xor}, the old ones never worked correctly, so this is unlikely to
impact users.
The synths used to play samples have been changed to a more basic version, and currently do not support looping like the old ones did. On the flip side they can play a sample without an audible click at the end, which has been a decade old issue. The looping behavior may come back in a future version if we can reconcile the two.
{and,or,xor} ugens have been renamed bit-{and,or,xor}
with-overloaded-ugens and macros that use it (like def{inst,synth})
will no longer shadow/bind {and,or,xor} but will now shadow bit-{and,or,xor}clojure.core/bit-{and,or,xor} for numeric
arguments and are foldablemono-partial-player and
stereo-partial-player (the default synths used to play samples) to a more
basic version based on play-buf instead of buf-rd and phasor. The old
version has a long standing issue that it causes clicks at the end of the sample.mda-piano from sc3-pluginsovertone.live conflictinst-fx!aux-bus, aux-ctl)foo, foo-pause:- as a rest note, in addition to :_ and :rest:amp work:start and :bar-start, instead of just :bpmat-at threadpool to be overridden by a dynvar
(*current-pool*):sc-path in ~/.overtone/config.clj can now be a vector instead of a
string, for passing additional argumentsgrunge-bass : make the amp parameter do somethingpluck-strings to pick-string in docs. (#521)chord docstringfree-self UGen to take audio-rate signals (#515)overtone.sc.ugen-collide can now be safely required to access colliding
ugens explicitly.:amp arg, as per synth/inst conventionsclear-instruments now also frees the instruments on the serverdocs/event.md,
docs/event_reference.md, and docs/pattern_libary.mdloop-buf UGen, for looping samples (part of sc3-plugins "extras"):midi-device-connected /
:midi-device-disconnected / :midi-receiver-connected /
:midi-receiver-disconnectedbuffer-alloc-read-channel, like buffer-alloc-read (instruct the SC
server to load a sound file), but only reads a single channel. Corresponds
with the /b_allocReadChannel OSC message.:value atoms when re-evaluating a defsynth/definst, so that
your synth settings aren't lost after a changejack_lsp which may not be available, especially on
PipeWire-based systemsBufferInfo as a reader conditional + map, to make it clear it's a data objectThis is the first version without the internal SuperCollider server (libscsynth). See this mailing list post for the reasoning behind that change. This also means we could drop the bulk of our dependencies, making Overtone much lighter.
Our work continues to keep Overtone relevant for years to come. We've fixed a bunch of other long standing issues large and small, modernized the release tooling, and improved and added many docstrings.
Since Linux users in particular face a rather confusing audio landscape, we've added a Linux Audio Primer to the wiki, to help you get situated.
scsynthproject.clj, switch to full Clojure CLI based tooling (see bin/proj)at-at from Clojars, rather than inlining it herescynth with pw-jack, if it's availableovertone.inst.sampled-trumpet)set-fret and slide-string to overtone.synth.stringed (#287)freesound-sample-pack, for downloading a whole pack at oncelin-env for lin, for backwards compatibility:force-ugen argument as a hint to treat it as a ugen (#505)Thread/sleep implementation on newer JVMs (#502)overtone.inst.synth on Clojure 1.11 (#505)abs as a Clojure numerical function, to make sure it is treated as a UGen when its arguments are not numerical (#505)synth/defsynth and inst/definst take the same form of params (fixes regression, and makes synth/inst more useful)jack_lsp. Wayland based systems often don't have this command, in which case people can connect SuperCollider to their audio device manually, we should not fail for that.The first release in a number of years, and the first step in reviving Overtone, and keeping it relevant for years to come.
overtone.music.pitch/dec-last (#437)overtone.music.pitch/chordgrain-buf ugen (#470)overtone.linter) (#493)With thanks to contributors: Andréas Kündig, dvc, Hlöðver Sigurðsson, Lee Araneta, Markku Rontu, Matt Kelly, Nada Amin, Paulo Rafael Feodrippe, Perry Fraser, Phillip Mates, Wesley Merkel
index now available on :ir rate, but keeps defaulting to :kr.Overtone instead of SuperCollider #409load-samples now accepts many directory and/or file paths, this breaks the functionality of the previous varag sequence.add parameter added to var-sawovertone.music.pitch/rand-chord now vararg with inversions parametersampled-flute and sampled-piano now load faster from cacheovertone.sc.sample/load-samples-async works like load-samples a faster but unsafer alternative to load-samplesovertone.sc.vbap any? now called some-element? and doesn't rely on Clojure 1.9inst? has been renamed to instrument?overtone.algo.euclidean-rhythm Generates euclidean rhythms using bjorklund's algorithm.overtone.examples.midi.keyboard sustain-ding Creates an midi instrument with a sustain parameter.overtone is now running on clojure-1.9-alphafreesound gives better error message when file/sample is not found.overtone.sc.vbap uses clojure 1.9's clojure.core.any?, removes replace symbol warnings.use with :use for Clojure 1.9 compatability.connect-to-external-server logs correctly configured port numbercontrol-bus-set-range! arguments have been updated (to match OSC
API). start and len args have been removed and offest params have
been added.mono-play-buffer-partialstereo-play-buffer-partialdyn-klangdyn-klankdfm1distortion2varlagdel-tap-wrdel-tap-rdvbapgrain-fmsputter - probabilistic repetition of a list's elementsbuffer-mix-to-mono - create a new mono buffer by mixing a stereo bufferserver-radians-per-sampleserver-control-durserver-control-rateserver-sample-durcontrol-bus-get-channel - get the value of an individual channel of a control bus.control-bus-fill! - fill a sequence of control bus values with a specific value.env-adsr-ng non-gated ADSR envelopeAdd new internal server clock with control-rate resolution. Introduces the folloing functions:
server-clock-n-ticksserver-clock-uptimeserver-clock-timeserver-clock-driftAnd also a new group: foundation-timing-group which is at the head of
all groups. There's also a new two-channel global clock-bus:
server-clock-b.
*add-current-namespace-to-synth-name*- new dynamic var for switching off auto namespacing of a synthdef namecontrol-bus-get may now return a sequence of vals when passed a multi-channel control bus..aif is now a synonym for .aiff in list of supported audio filesSC-MAX-FLOAT-VAL - representing the maximum
whole number represented with scsynth's floats due to precision
constraints (2**24):ir rate control ugens with dashesnode-tree-seq now works correctly with no argsdefunk now handles nil correctly in argsVersion bump forced by Clojars missing a commit. Nothing new here.
apply-at has been renamed to apply-by which more
correctly represents its semantics as it applies the function before
the specified time. apply-at still exists, except it now applies the
fn at the specified time. To update, simply grep for all occurences of
apply-at and replace with apply-by.
When triggering synths it was possible to specify a position for the synth node to be executed in the node tree. This is important for ensuring that synth chains are correctly ordered such that any post-fx synths are executed after the source synth they are modifying. Prior to 0.9.0 this was possibly by prefixing the synth args with 'special' values:
(def my-g (group))
(my-synth :tgt my-g :freq 440)
Overtone figured out that the :tgt my-g key-val pair were special, and
used them to target the synth node, and not pass them as params to the
synth along with the :freq param. This was slightly magical and also
potentially clashed with a synth designer's ability to use the special
keywords as valid synth param names.
This syntax has now been deprecated and replaced with a more explicit vector-based syntax. If you wish to target your synth, you need to pass a vector as the first parameter. The vector should be a pair of:
[:target-specifier target]
Valid target specifiers are:
:head - places new synth node at the head of the target (group):tail - places new synth node at the tail of the target (group):before - places new synth node immediately before target (group/synth):after - places new synth node immediatedly after target (group/synth):replace - replaces target with new synth nodeTherefore, to place a new instance of my-synth at the head of my-g
you can issue the following:
(my-synth [:head my-g] :freq 440)
Currently, you'll get an exception if you use the old style syntax. This means that the old keywords are still unavailable to synth designs. This will be relaxed in a future version.
The MIDI API has been substantially revamped. This is in the Apple
tradition of actually reducing functionality with the aim of making the
surviving functionality easier to use. Essentially the underlying MIDI
library provided by the dependency overtone/midi-clj is no longer
available in the global API which is pulled in automatically to the
overtone.live and overtone.core namespaces. Of course, you're still
free to pull in the overtone.midi namespace, which is still on the
classpath should you need access to the old functions. However, if you
find yourself doing this - please let me know. The aim is for this not
to be necessary.
MIDI devices are now automatically detected on boot and auto-hooked up
to the event system. You have access to the list of detected devices
(and receivers) via the functions: midi-connected-devices and
midi-connected-receivers. Take a look at the example file
examples/midi/basic.clj for more a quick tour of the MIDI API.
If you're working on a sophisticated synth design, or just simply want
to have another perspective of a given synth's design, it's often useful
to be able to look at a visual representation. This is now possible with
the new Graphviz support. You can generate dot notation for an arbitrary
synth design with the function graphviz.
For example, given the synth:
(defsynth foo []
(out 0 (sin-osc 440)))
You can produce corresponding dot notation with:
(graphviz foo)
Which will return the following string:
digraph synthdef {
1 [label = "{{ <bus> bus 0.0|{{<signals___sin____osc___0>}|signals}} |<__UG_NAME__>out }" style="filled, bold, rounded" shape=record rankdir=LR];
0 [label = "{{ <freq> freq 440.0|<phase> phase 0.0} |<__UG_NAME__>sin-osc }" style="filled, bold, rounded" shape=record rankdir=LR];
0:__UG_NAME__ -> 1:signals___sin____osc___0 ;
}
You can then easily spit this out to a file and feed it into graphviz
to render an image/pdf etc manually. However, we also provide the
function show-graphviz-synth which will automatically call dot to
generate a pdf and then display it for you:
(show-graphviz-synth foo) ;;=> PDF pops up!
This has been exhaustively tested on OS X, so any pull requests for
minor niggles on Linux/Windows are happily
considered. show-graphviz-synth is currently pretty much guaranteed
not to work on Windows, but it would be awesome if it did.
One aspect of Overtone which is seeing active development is means with which to monitor the internal values within running synths. Overtone 0.9.0 now ships with a bus monitoring system which works with both audio and control busses.
Calling bus-monitor with a bus will return an atom containing the
current value of the bus. Note that this isn't the peak amplitude,
rather the direct value of the control bus. For multi-channel buses, an
offset may be specified. Current amplitude is updated within the
returned atom every 50 ms.
Overtone now supports a simple persistent key value store which is
essentially a Clojure map serialised as EDN in file with the path
~/.overtone/user-store.clj. Adding to the store is a matter of
store-set! and getting values from it is simply store-get. The store
is meant merely as a simple convenience mechanism for sharing data
between Overtone projects.
Overtone has long provided stop which kills all synths in the default
group. However, it doesn't clear out all the subgroups which is
sometimes wanted. This is now available with clear. Overtone also
provides an initial group structure with 'safe' groups both before and
after the default group. These are intended for longer-running synths
either feeding control signals to ephemeral synths or adding FX to
them. These 'safe' groups can now be stopped with stop-all and also
all the subgroups can be cleared out with clear-all. For more
information on the default group structure see the foundation-* fns.
It's now possible to register oneshot handler function for when specific
nodes are created, destroyed, paused or started with the new on-node-*
family of functions. For example to have a function execute every time a
node is started:
(defsynth foo [] (out 0 (sin-osc)))
(def f (foo))
(on-node-started f (fn [m] (println "Node" (-> m :node :id) "started!")))
(node-pause f)
(node-start f) ;;=> "Node 31 started!"
(node-pause f)
(node-start f) ;;=> "Node 31 started!"
It is possible to send information out of a specific synth and into
Overtone as an event via the send-trig ugen. This is now a little bit
easier with the new trigger handler functions. Firstly, there's
trig-id which will return you a unique id for use as a trigger id. You
can then feed that to your synth and also use it to register handler
functions to execute when data from that specific synth is received:
;; create new id
(def uid (trig-id))
;; define a synth which uses send-trig
(defsynth foo [t-id 0] (send-trig (impulse 10) t-id (sin-osc)))
;; register a handler fn
(on-trigger uid
(fn [val] (println "trig val:" val))
::debug)
;; create a new instance of synth foo with trigger id as a param
(foo uid)
Using envelopes effectively has long been a dark Overtone art. They have
a huge potential for powerful manipulation of synth internals to finely
control both pitch and timbre though time. The simplest approach to
using envelopes is using the env-gen helper fns such as perc and
adsr. These functions have supported keyword argument semantics
similar to the ugen functions given that they're used in the same
context. However, until this release, they haven't reported their param
list in the function argument list metadata. This is now fixed in this
release. In addition, to help ease discovery of these helper fns, they
are also now prefixed with env- so those using editors with
autocomplete can find them more easily. The helper functions provided in
0.9.0 are: env-triangle, env-sine, env-perc, env-lin,
env-cutoff, env-dadsr, env-adsr and env-asr.
The envelope function (which all the helper functions are written in
terms of) has also been improved. It is now possible to pass a
heterogeneous list of keywords and floats for the curves
parameter. This means that it's now possible to request different
keywords for different envelope segments. Take a look at the envelope
docstring for extensive information.
Karsten 'Toxi' Schmidt has kindly donated his resonate workshop
files to the examples folder. These can be found within
examples/workshops/resonate2013. Karsten is renowned for giving
awesome workshops, so it's wonderful to be able to ship with this
material for everyone to play.
Although it can be fairly argued that Overtone is still missing end-user documentation (something we're currently working hard at fixing) we have always had excellent internal documentation and this release continues with this tradition. All of our end-user functions have full docstrings and many of them have been improved and tweaked to make them more readable and understandable.
midi-find-connected-devices - list all auto-connected MIDI devicesmidi-find-connected-device - list all auto-connected MIDI devicesmidi-find-connected-receivers - list all auto-connected MIDI receiversmidi-find-connected-receiver - list all auto-connected MIDI receiversmidi-device-num - get the unique device num (for a specific MIDI make/model)midi-full-device-key - get the full device key used for the event systemcycle-fn - create a composite fn which cycles through a list of fns on applicationrotate - treat a list as a circular buffer and offset into itfill - fill a list with the values of another (cycling if necessary)trig-id - return a unique id for use with trigger ugenon-trigger - add handler for when a specific synth trigger event is receivedon-latest-trigger - similar to on-latest-event but for triggerson-sync-trigger - similar to on-sync-event but for triggersclear - stop all running synths in default group and remove all subgroupsstop-all - stop all running synths including within safe groups. Does not remove subgroups.clear-all - stop all rurnning synths including within safe groups and remove all subgroups.node-destroyed-event-key - returns the key used for node destroyed eventsnode-created-event-key - returns the key used for node created eventsnode-paused-event-key - returns the key used for node paused eventsnode-started-event-key - returns the key used for node-started eventson-node-destroyed - create a oneshot handler triggered when node is destroyedon-node-created - create a oneshot handler trigered when node is createdon-node-paused - create a oneshot handler triggered when node is pausedon-node-started - create a oneshot handler triggered when node is startedgraphviz - create a valid dot file representation of a synth designshow-graphviz-synth- show a PDF of the visual representation of a synth designfreesound - create a playable sample from a freesound idaudio-bus-monitor - returns an atom which is auto updated with the current bus valuecontrol-bus-monitor- returns an atom which is auto updated with the current bus valuebus-monitor - returns an atom which is auto updated with the current bus valuesynth-args - returns a seq of the synth's args as keywordssynth-arg-index - returns an integer index of synth's argstore-get - get value with key from persistent user storestore-set! - set value with key within user's persistent storestore - get full persistent store mapenv-triangle - duplicate of triangleenv-sine - duplicate of sineenv-perc - duplicate of percenv-lin - duplicate of linenv-cutoff - duplicate of cutoffenv-dadsr - duplicate of dadsrenv-adsr - duplicate of adsrenv-asr - duplicate of asrnode-get-control -> node-get-controlsbus-set! -> control-bus-set!bus-get -> control-bus-getbus-set-range -> control-bus-set-rangebus-get-range -> control-bus-get-rangeremove-handler -> remove-event-handlerremove-all-handlers -> remove-all-event-handlerslin-env -> linconnected-midi-devices -> midi-connected-devicesconnected-midi-receivers -> midi-connected-receiversapply-at -> apply-bymidi-devicesmidi-device?midi-portsmidi-sourcesmidi-sinksmidi-find-devicemidi-inmidi-outmidi-routemidi-shortmessage-statusmidi-sysexmessage-statusmidi-shortmessage-commandmidi-shortmessage-keysmidi-msgmidi-handle-eventsmidi-send-msghex-char-valuesmidi-mk-byte-arraymidi-playovertone.synth.sts/prophetovertone.synth.retro/tb-303bitcrusher -> fx-bitcrusher:num-control-busses in server-infoapply-at to apply-by and implement apply-at to apply the fn at the specified time, not before it.scale-rangefm synth about out-bus paramsampled-piano about amp and rate paramsAudioBus and ControlBus print formatter to print a default name and to label the attributes more clearly.RecurringJob and ScheduledJobs are now killablepan param to the sample playersnode-get-control now only accepts one arg and returns a value. Use new node-get-controls for old behaviour.sync-event to take a single map as an argument - similar to eventstore-get and store-set! for storing user values separate from the config within ~/.overtone/user-store.cljtieredStopAtLevel is set to 1MidiOutReceiver objects for all detected midi out receivers to enable comms.MAX-OSC-SAMPLES to work within the constraints of UDP packetson-latest-event hander-fnsreset-returning-prev!Group to support ISynthNode (given that groups are actually nodes).*, +, / etc.:spec key in sdefs for unification process. This allows sdefs read from binary scsynthdef files to also be correctly unified.at-at dependency to 1.2.0fs to take multiple txt strings (which will subsequently be separated with a space)find-note-name to handle nil arg - let nil flow throughUnsatisfiedLinkError when attempting to load native libs and print out error.stop-player or kill-player on the return obj from one of the scheduling fns such as periodic or after-delay now has correct behaviour.group-free to actually delete a grouppitch-shift arg name from window-cize to window-sizeindented-str-block to correctly count length of linestopological-sort-ugens*print-length* dynamic var to ensure all data is printed outbur-rd and buf-wr phase arg is at audio rate when ugen is also at audio rate.balance2vintage-bass inst to be audible(Some of these committers may have made contributions to previous versions, but this is the first time they're mentioned in this change log).
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.foundation-* fns below.overtone/sc/machinery/ugen/metadata/extras/README.md for progress.on-latest-event - Handles events with minimum latency - drops events it can't handle in timeevent-monitor-on - prints out all events to stdout (can be very noisy!)event-monitor-off - turns off event monitoringevent-monitor-timer - records incoming events for a specified period of timeevent-monitor - returns map of most recently recorded eventsevent-monitor-keys - returns seq of all keys of recently seen eventsmidi-capture-next-controller-key Returns the event key for the next modified controllerbuffer-write-relay - similar to buffer-write! but doesn't require native synth. Can be very slow for large amounts of data.chord-degree - Returns the notes constructed by picking thirds in the given note of a given scalefoundation-overtone-group - returns the group for the whole of the Overtone foundational infrastructurefoundation-output-group - returns the group for output synthsfoundation-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 activityfoundation-user-group - returns the container group for user activityfoundation-default-group - returns the default user group - use this group for your synthsfoundation-safe-group - returns the safe group - synths in here will not stop when #'stop is calledfoundation-safe-post-default-group - returns the safe group positioned before the default group - synths in here will not stop when #'stop is calledfoundation-safe-pre-default-group - returns the safe group positioned after the default group - synths in here will not stop when #'stop is callednode? - returns true if obj is a synth node or groupnode-live? - returns true if node is livenode-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 liveinactive-node-modification-error - Returns a keyword representing the current node-modification errors trategyinactive-buffer-modification-error - Returns a keyword representing the current buffer-modification error strategyblock-node-until-ready? - Returns true if the current message strategy is to block the current thread until the node you're attempting to communicate with is ready (i.e. live).pp-node-tree - pretty-print the node-tree to outinterspaced - calls a fn repeatedly with an interspacing of ms-period. i.e. the next call of the fn will happen ms-period ms after the completion of the previous call.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.without-node-blocking - Disables the blocking behaviour when attempting to communicate with a node that's not yet live.with-inactive-node-modification-error - Sets the error strategy for inactive node modification. Options are :exception, :warning and :silentwith-inactive-buffer-modification-error - Sets the error strategy for inactive buffer modification. Options are :exception, :warning and :silentwith-inactive-modification-error - Sets the error strategy for both inactive node and buffer modification. Options are :exception, :warning and :silenton-trigger - prefer event systemremove-trigger - prefer event systemremove-all-handlers - calling this removed Overtone's default handlers rendering the system useless.stop-midi-player -> midi-player-stop - It can now handle keyssupersawdance-kickquick-kickhaziti-clapdaf-basscs80leadsimple-fluteNew timing synths
triggercounterdividerStarted work porting synths from Ixi Lang (overtone/synth/ixi):
impulser
kick
kick2
kick3
snare
sampled-piano- now we also have a synth version of the sampled piano with support for :out-bus arg.
sum - Adds all inputs togethermix - Now divides the inputs signals by the number of number of inputsadd-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 rangepoll - now implemented via send-reply to print out via Overtone stdout and remove flushing latency./docs/sc-book)out-bus argument now added to a number of synths. This should be considered standard practice.tb303 inst now accepts :amp param#{"+" "-" "*" "/" "<" ">" "<=" ">=" "min" "max" "and" "or"}env-gen now defaults to control rate.:m7+9:data2-f and :velocity2-f storing floats between 0 and 1:force arg to load-sample:use-mmj~/.overtone/config.clj example documenting all config options. Found in docs/config.cljgroup-node-tree now knows how to handle a group as a paramextract-target-pos-args extraced for :tgt and :pos munging.ISynthNode and IControllableNode protocols/s_new could occasionally trigger the handler fn before the ide id is added to active-synth-nodes*synthdef-write to resolve tilde paths:osc-msg-received is now [:overtone :osc-msg-received]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).os-name and os-description helper fnsosc-clj dependency (which now supports nested OSC bundles in the macro in-osc-bundle) and move to using the new non-nested osc bundle macro in-unested-osc-bundle to explicitly not create OSC bundles for SC comms. However, the nested bundle functionality may be useful for communicating with other OSC servers which support this behaviour (which is in the OSC spec).overtone/examplesscsynthscsynth path is now discovered on Windows rather than hardcodedovertone.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 instbuffer-cue-close -> buffer-stream-closefind-note-name -> find-pitch-class-nametap- 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 ratescaled-v-disk - similar to v-disk-in but auto-scales ratehold - hold input source for set period of time, then stop safelylocal-buf - now supports SCLang's argument ordering:sc-args key in the config:log-levelconfig-get now supports a default valuectl can now handle a sequence of nodes to control as its first argument.overtone.live now consults the config to determine whether t* boot an internal or external synth~/.overtone.log with two separate rolling files of max 5mb each.demo - no more clicks or pops!buffer-cue now auto-allocates a bufferassoc and consdefsynth now supports cgen-like argument mapsIMetronomeISynthNodeISynthGroupISynthBufferISaveableIControllableNodeIKillableexamples/piano_phase.cljexamples/row_row_row_your_boat.cljbuffer-infobuffer-cuebuffer-write now handles start-idx argument correctlyweighted-chooseCan you improve this documentation? These fine people already did:
Arne Brasseur, Sam Aaron, hlolli, Ambrose Bonnaire-Sergeant, Paulo Rafael Feodrippe & Jeff RoseEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |