New Syntax: c+
(sharp), g-
(flat), n0+
(next note)
c d e f g a b
, numbered notes for custom tunings n0 n1 n2...
, and absolute cents 0c 700c -50.5c
. Rests are r
.[c e g]
, [n0 n4 n7]
, [0c 400c 700c]
.L4
(quarter note). Override per-note: c8
(8th note). Add .
for dotted notes (c4.
).V12
(0-15 range).K120
is default. K60
doubles duration, K240
halves it. Also works with ratios: K*3/2
.#
to comment out the rest of a line.o4
. Shift up/down with >
and <
. This works inside chords too: [c > c]
. The jump size depends on the active tuning (1200c for default, or the last interval for custom tunings).+
for sharp, -
for flat. E.g., c+
, gb
.c[+22.5]
, g[-10]
. Supports addition: c[200+200]
.c*3/2
or d/2
. Can be chained: c*3/2*3/2
.T0=[0, 200, 386, 702, 900]
(values are cents). Activate with U0
. Revert to 12-TET with U-1
.X+10
(cents), X=702
(cents), X*3/2
(ratio).S3#386
sets the 3rd degree to 386c. Supports #=+-*/
.~
to glide pitch and volume. E.g., v4 c8 ~ v15 e8
.I#={...}
and activate it with @#
.
I0={"oscillator":{"type":"sine"},"envelope":{...}}
I1={"type":"fm", "harmonicity":1.5, ...}
."envelope"
for the carrier (volume) and "modulationEnvelope"
for the modulator (timbre).c<{"volume":-20}>
or [ceg]<{"envelope":{"attack":0.5}}>
.M#={...}
and apply to a note with c{M#}
.
M0={"type":"pitch","frequency":6,"min":-15,"max":15}
M1={"type":"volume","curve":"linear","start":1,"end":0}