This is the collidxr Reference Manual, version 0.8, generated automatically by Declt version 4.0 beta 2 "William Riker" on Fri May 15 12:10:38 2026 GMT+0.
The main system appears first, followed by any subsystem dependency.
collidxrA collection of syntax sugar and conveniences extending cl-collider, a Common Lisp interface to the SuperCollider sound synthesis server.
modula t.
(GIT git@github.com:defaultxr/collidxr.git)
MIT
0.8
mutility (system).
alexandria (system).
mutility (system).
trivial-types (system).
cl-collider (system).
vgplot (system).
package.lisp (file).
collidxr.lisp (file).
Files are sorted by type and then listed depth-first from the systems components trees.
collidxr/collidxr.lisppackage.lisp (file).
collidxr (system).
*ds-synth-package* (special variable).
body-plist-code (function).
fbnode (class).
find-proxy (function).
floatfy (method).
plot* (generic function).
standard-params (function).
Packages are listed by definition order.
collidxralexandria.
cl-collider.
common-lisp.
mutility.
trivial-types.
*ds-synth-package* (special variable).
body-plist-code (function).
fbnode (class).
find-proxy (function).
plot* (generic function).
standard-params (function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
"Define Node"–define a named node proxy. Similar to ‘cl-collider:proxy’, but with the following additional features:
- Provides a more concise syntax for writing proxies; BODY is simply a plist mapping variable names to their values. No ‘let*’ needed!
- PARAMS are inserted as ‘with-controls’.
- Without BODY, just returns the node.
- If not specified by the user, auto-inserts parameters for dur, tempo, pan, amp, and out with sensible defaults, marked as ignorable, to avoid warnings if they aren’t used.
- Bindings named - or _ are automatically declared ignorable.
- :pos binding can be used to specify the :pos of the node within its group (i.e. :head, :tail, etc).
- When :fx is the first element of PARAMS, allocate a 2-channel bus and bind sig to (in.ar BUS 2).
- If out is bound in BODY, its value is automatically used as the input for an ‘out.ar’.
- If there is no out in BODY but there is a sig, sig is automatically fed into a ‘b2’ inside an ‘out.ar’. In other words, the pan, amp, and out arguments will "just work".
- Can be provided as an :instrument in a ‘cl-patterns:pbind’ to set the parameters of the node.
- Can be provided as an :out in a ‘cl-patterns:pbind’ to send the output of triggered synths to the node (for use with :fx nodes).
Example:
;; (dn :echo (:fx (time 1.0) (decay 0.5))
;; :sig (comb-c.ar sig 1 time decay))
See also: ‘ds’
"Define Synth"; syntax sugar wrapping ‘defsynth’. It does the following:
- Provides a more concise syntax for writing synthdefs; BODY is simply a plist mapping variable names to their values. No ‘let*’ needed!
- If not specified by the user, auto-inserts parameters for dur, tempo, pan, amp, and out with sensible defaults, marked as ignorable, to avoid warnings if they aren’t used.
- Bindings named - or _ are automatically declared ignorable.
- If out is bound in BODY, its value is automatically used as the input for an ‘out.ar’.
- If there is no out in BODY but there is a sig, sig is automatically fed into a ‘b2’ inside an ‘out.ar’. In other words, the pan, amp, and out arguments will "just work".
Example:
;; (ds :foo ((gate 1) (freq 440))
;; :env (env-gen.kr (env-adsr 0.01 0.1 0.5 0.1) :gate gate :act :free)
;; :sig (pulse.ar freq)
;; :sig (rlpf.ar sig (* freq 2) 0.5)
;; :- (poll.kr (impulse.kr 1) sig)
;; :sig (pan2.ar sig pan (* amp env))
;; :out sig)
See also: ‘dn’
Get IN wrapped in a ‘pan2.ar’ or ‘balance2.ar’ as appropriate. In other words, if IN is mono, wrap it in ‘pan2.ar’, and if IN is stereo, wrap it in ‘balance2.ar’. PAN and LEVEL are the panning and amplitude arguments, respectively.
Create a ‘fbnode’ for doing feedback within synthdefs. NUM-CHANNELS is the number of channels of the internal delay buffer. MAX-DELAY-TIME is the length in seconds that the delay buffer should be allocated to, defaulting to the minimum delay possible (one block). INTERPOLATION is the type of interpolation to use when reading from the delay, as per ‘buf-rd.ar’.
Example:
;; (defsynth :echoed ((freq 440) (delay 0.5) (feed 0.5) (amp 0.5) (out 0))
;; (let* ((fbn (fbn 2 0.5))
;; (sig (var-saw.ar (+ (rand.ir -2.0 (list 2.0 2.0)) freq) 0 0.5 (env-gen.kr (perc 0.01 0.25))))
;; (sig (rlpf.ar (+ sig (* feed (fbn-read fbn delay)))
;; (* freq 0.9) 0.9)))
;; (fbn-write fbn sig)
;; (detect-silence.ar (leak-dc.ar sig) 1.0e-4 :time delay :act :free)
;; (out.ar out (* sig amp))))
See also: ‘fbnode’, ‘fbn-read’, ‘fbn-write’
Read from FBNODE at a time DELAY seconds from its input. DELAY defaults to the ‘fbnode”s max delay time.
See also: ‘fbnode’, ‘fbn’, ‘fbn-write’
Write INPUT to FBNODE.
See also: ‘fbnode’, ‘fbn’, ‘fbn-read’
Like ‘cl-collider:synth’, but can also start a synth variant. To specify a variant, NAME should be in the format NAME.VARIANT.
Synth variants are specified in the synthdef metadata. Set the metadata key :VARIANTS to a plist mapping the name of the variant to the plist of arguments to the synthdef.
Example:
;; ;; define the "noisy" variant for the :tb303 synth:
;; (setf (synthdef-metadata :tb303 :variants) (list :noisy (list :dist 1 :clip 1 :bias 1)))
;; ;; play the variant:
;; (synth-variant :tb303.noisy :freq 420 :dist 0)
;; ;; notice that you can override the arguments set in the variant.
See also: ‘cl-collider:synth’
The package that ‘ds’ will define synths in.
Convert BODY, a plist of keys and values a la ‘pbind’. Any key with the name _ or - is changed into a gensym. All gensyms and ignorable symbols are returned as a second value. Metadata such as synthdef variant information is provided as the third return value.
Get the node for the ‘proxy’ named NAME.
Get PARAMS, a ‘defsynth’ argument list, altered to include dur, tempo, amp, pan, and out arguments if they’re not already specified.
See also: ‘ds’
Plot INPUT with BACKEND. Typically you can just call ‘plot’ instead.
(eql :vgplot)) (list list) &rest args &key &allow-other-keys) ¶Feedback node, for creating feedback loops within synthdefs. It’s recommended to use ‘fbn’ to create an ‘fbnode’, and then ‘fbn-read’ and ‘fbn-write’ to read and write to it.
See also: ‘fbn’, ‘fbn-read’, ‘fbn-write’
1
:num-channels
cl-collider.
1024
:frames
common-lisp.
:phase
:max-delay-time
cl-collider.
:local-buf
2
:interpolation
| Jump to: | B D F G M P S |
|---|
| Jump to: | B D F G M P S |
|---|
| Jump to: | *
F I L M N P S |
|---|
| Jump to: | *
F I L M N P S |
|---|
| Jump to: | C F P S |
|---|
| Jump to: | C F P S |
|---|