arg?
— optional arg; arg*
— zero or more args; arg+
— one or more args; argenv
— looked up in the environ; arg = val
— arg with default; :: type — argument type; [*-arg arg]
— default from environ values name-arg
followed by arg
word
to include a tag containing the word, -word
to
exclude. Prefix with m:
for modules, kind:(note|control|pitch|val)
for call kinds, or type:(val|generator|transformer)
for call types.
You can also search by %control
, arg default
(name-arg
), and call kind (note
,
control
, ...).
Search for calls with the browser's text search, "call --" to search by binding, "-- call" to search by name.
Common tags are documented at 'Derive.Call.Tags'.
x
bali.gangsa
(25 calls)'
-- ngoretbali.gangsa
: note generator'-
-- ngoret
'^
-- ngoret
'_
-- ngoret
'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
damp
:: time signal (default real) = .15s
[*-damp]
— Time that the grace note overlaps with this one. So the total duration is time+damp, though it will be clipped to the end of the current note.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
'n
-- ngoretbali.gangsa
: note generator'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.interval
:: Signal (Transposition, default diatonic) [*-interval]
— The grace note is this interval from the destination pitch.
time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
damp
:: time signal (default real) = .15s
[*-damp]
— Time that the grace note overlaps with this one. So the total duration is time+damp, though it will be clipped to the end of the current note.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
cancel-pasang
-- cancel-pasangbali.gangsa
: note transformercancel
call, except it also knows how to cancel out pasang instruments such that adjacent kotekan calls can have initial and final notes, but won't get doubled notes.final-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
f-
-- f-bali.gangsa
: note transformerfinal = f
. Kotekan calls won't emit a final note at the end time.
gnorot
-- gender-norotbali.gangsa
: note generatorkotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
i+
-- i+bali.gangsa
: note transformerinitial = t
. Kotekan calls will emit a note on the initial beat.
i-
-- i-bali.gangsa
: note transformerinitial = f
. Kotekan calls won't emit a note on the initial beat.
k
-- kotekanbali.gangsa
: note generatork^
-- kotekan
inst-polos
and inst-sangsih
. They line up at the end of the event but may also emit a note at the start of the event, so use cancel-pasang
to cancel the extra notes. Ngubeng kotekan is naturally suited to positive duration, while majalan is suited to negative duration.kernel
:: Str = k-12-1-21
[kernel, *-kernel]
— Polos part in transposition steps. This will be normalized to end on the destination pitch. It should consist of -
, 1
, and 2
. You can start with k
to avoid needing quotes. Starting with k
will also require the length to be a multiple of 4.
style
:: Str (telu pat) = telu
[style, *-style]
— Kotekan style.
sangsih
:: Maybe Str (u d) = _
[sangsih, *-sangsih]
— Whether sangsih is above or below polos. If not given, sangsih will be above if the polos ends on a low note or rest, below otherwise.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
k+
-- kempyungbali.gangsa
: note generatorkempyung
-- kempyung
polos-inst
below and sangsih-inst
above. If the sangsih would go out of range, it's forced into unison.
inst-top
env :: Maybe NotePitch = _
[inst-top]
— Top pitch this instrument can play. Normally the instrument sets it via the instrument environ.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
k+
-- kempyungbali.gangsa
: note transformerkempyung
-- kempyung
polos-inst
below and sangsih-inst
above. If the sangsih would go out of range, it's forced into unison.inst-top
env :: Maybe NotePitch = _
[inst-top]
— Top pitch this instrument can play. Normally the instrument sets it via the instrument environ.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
k-\
-- kotekanbali.gangsa
: note generatork//\\
-- kotekan
k_\
-- kotekan
inst-polos
and inst-sangsih
. They line up at the end of the event but may also emit a note at the start of the event, so use cancel-pasang
to cancel the extra notes. Ngubeng kotekan is naturally suited to positive duration, while majalan is suited to negative duration.style
:: Str (telu pat) = pat
[style, *-style]
— Kotekan style.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
k//
-- kotekanbali.gangsa
: note generatork\\
-- kotekan
inst-polos
and inst-sangsih
. They line up at the end of the event but may also emit a note at the start of the event, so use cancel-pasang
to cancel the extra notes. Ngubeng kotekan is naturally suited to positive duration, while majalan is suited to negative duration.style
:: Str (telu pat) = telu
[style, *-style]
— Kotekan style.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
k//2
-- kotekanbali.gangsa
: note generatork//^
-- kotekan
k\\2
-- kotekan
inst-polos
and inst-sangsih
. They line up at the end of the event but may also emit a note at the start of the event, so use cancel-pasang
to cancel the extra notes. Ngubeng kotekan is naturally suited to positive duration, while majalan is suited to negative duration.style
:: Str (telu pat) = telu
[style, *-style]
— Kotekan style.
sangsih
:: Maybe Str (u d) = _
[sangsih, *-sangsih]
— Whether sangsih is above or below polos. If not given, sangsih will be above if the polos ends on a low note or rest, below otherwise.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
ke
-- kotekanbali.gangsa
: note generatorpolos
:: Str [*-polos]
— Polos part.
sangsih
:: Str [*-sangsih]
— Sangsih part.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
kotekan
-- kotekanbali.gangsa
: note generatorinst-polos
and inst-sangsih
. They line up at the end of the event but may also emit a note at the start of the event, so use cancel-pasang
to cancel the extra notes. Ngubeng kotekan is naturally suited to positive duration, while majalan is suited to negative duration.rotation
:: Signal (integral) = 0
[*-rotation]
— Rotate kernel to make a different pattern.
style
:: Str (telu pat) = telu
[style, *-style]
— Kotekan style.
sangsih
:: Str (u d) = u
[sangsih, *-sangsih]
— Whether sangsih is above or below polos.
invert
env :: Str (f t) = f
[*-invert]
— Flip the pattern upside down.
kernel
env :: Str [kernel, *-kernel]
— Polos part in transposition steps. This will be normalized to end on the destination pitch. It should consist of -
, 1
, and 2
. You can start with k
to avoid needing quotes. Starting with k
will also require the length to be a multiple of 4.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
noltol
-- noltolbali.gangsa
: note transformer+mute
d copy of itself. This only happens if the duration of the note is at or below the kotekan-dur
.time
:: untyped signal = .1
[*-time]
— Play noltol if the time available exceeds this threshold.
damp-dyn
:: Signal = .65
[*-damp-dyn]
— Damped notes are multiplied by this dyn.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
norot
-- norotbali.gangsa
: note generatornt
-- norot
nt-
-- norot
nt<
-- norot
nt<-
-- norot
nt-
variant will suppress that. The nt<
variant will also emit a preparation at the note's start.style
:: Str (default diamond) = default
[*-style]
— Norot style.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
kotekan
env :: untyped signal = .15s
[kotekan]
— If note durations are below this, divide the parts between polos and sangsih.
inst-top
env :: Maybe NotePitch = _
[inst-top]
— Top pitch this instrument can play. Normally the instrument sets it via the instrument environ.
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
nyog
-- nyogbali.gangsa
: note generatorinst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
nyog
-- nyogbali.gangsa
: note transformerinst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
p+
-- p+bali.gangsa
: note generatorps+
-- ps+
s+
-- s+
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
p+
-- p+bali.gangsa
: note transformerps+
-- ps+
s+
-- s+
inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
realize-gangsa
-- realize-gangsabali.gangsa
: note transformerrealize-noltol | cancel-pasang $ | realize-ngoret
.
$
is lifted to be an argument of this macro.
final-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
realize-ngoret
-- realize-ngoretbali.gangsa
: note transformerngoret
call. This is necessary because it needs to know the positions and pitches of the previous and next notes, and those aren't necessarily available when evaluating the track. This call needs a hand
envron to figure out which which note follows which.realize-noltol
-- realize-noltolbali.gangsa
: note transformernoltol
.unison
-- unisonbali.gangsa
: note transformeronly=polos
and only sangsih if only=sangsih
.inst-polos
env :: Str [inst-polos]
— Polos instrument.
inst-sangsih
env :: Str [inst-sangsih]
— Sangsih instrument.
bali.gender
(4 calls)'
-- ngoretbali.gender
: note generator'-
-- ngoret
'^
-- ngoret
'_
-- ngoret
'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
damp
:: time signal (default real) = .5s
[*-damp]
— Time that the grace note overlaps with this one. So the total duration is time+damp, though it will be clipped to the end of the current note.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
'n
-- ngoretbali.gender
: note generator'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.interval
:: Signal (Transposition, default diatonic) [*-interval]
— The grace note is this interval from the destination pitch.
time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
damp
:: time signal (default real) = .5s
[*-damp]
— Time that the grace note overlaps with this one. So the total duration is time+damp, though it will be clipped to the end of the current note.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
realize-ngoret
-- realize-ngoretbali.gender
: note transformerngoret
call. This is necessary because it needs to know the positions and pitches of the previous and next notes, and those aren't necessarily available when evaluating the track. This call needs a hand
envron to figure out which which note follows which.weak
-- weakbali.gender
: note generatorstrength
:: Signal = .5
[strength]
— From low strength to high, omit the note, then play it muted, and then play it open but softly.
bali.gender.im
(1 calls)infer-damp-simple
-- infer-damp-simplebali.gender.im
: note transformer.15s
.insts
:: list of Str [*-insts]
— Apply damping to these instruments.
bali.gong
(5 calls)C
-- calungbali.gong
: note transformercalung
note with 'Derive.Flags.infer_duration' and the same pitch, transposed into the calung
range.octave
:: Str (u d) = d
[*-octave]
— If the pitch exists in multiple octaves, choose this one.
insts
env :: list of Str = (list calung-p calung-s)
[*-insts]
— Instruments.
cycle
-- cyclebali.gong
: note generatorstrokes
:: Str or list of Quoted [*-strokes]
— Cycle these strokes.
dur
:: Str (section w h q e s t32 t64 t128 t256) or Signal (Time, default score) [*-dur]
— Duration of each stroke. A string is taken as a timestep.
J
-- jegogbali.gong
: note transformerjegog
note with 'Derive.Flags.infer_duration' and the same pitch, transposed into the jegog
range.octave
:: Str (u d) = d
[*-octave]
— If the pitch exists in multiple octaves, choose this one.
insts
env :: list of Str = (list jegog-p jegog-s)
[*-insts]
— Instruments.
nruk
-- nrukbali.gong
: note transformerstart
:: Signal (Time) = 4s
[*-start]
— Start speed.
end
:: Signal (Time) = 19s
[*-end]
— End speed.
end-dyn
:: Signal = .15
[*-end-dyn]
— Dyn multiplier when the stroke duration reaches 0.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
pokok
-- pokokbali.gong
: note transformeroctave
:: Str (u d) = d
[*-octave]
— Which to choose if the pitch exists in multiple octaves.
insts
env :: list of Str [*-insts]
— Instruments.
bottom
env :: NotePitch [*-bottom]
— Bottom of the range.
top
env :: NotePitch [*-top]
— Top of the range.
bali.reyong
(24 calls)'
-- ngoretbali.reyong
: note generator'-
-- ngoret
'^
-- ngoret
'_
-- ngoret
'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
'n
-- ngoretbali.reyong
: note generator'^
, down for '_
, or is based on the previous note's pitch for '
.
realize-ngoret
postproc.interval
:: Signal (Transposition, default diatonic) [*-interval]
— The grace note is this interval from the destination pitch.
time
:: time signal (default real) = .1
[*-time]
— Time between the grace note start and the main note. If there isn't enough room after the previous note, it will be halfway between the previous note and this one.
dyn
:: Signal = .75
[*-dyn]
— The grace note's dyn will be this multiplier of the current dyn.
damp-threshold
env :: Signal (RealTime) = .15
[*-damp-threshold]
— A grace note with this much time will cause the previous note to be shortened to not overlap. Under the threshold, and the damping of the previous note will be delayed until the end of the grace note.
+
-- byutbali.reyong
: note generator-
-- byut-loose
/
-- cek-loose
//
-- cek-loose
O
-- byong
X
-- cek
XX
-- cek
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
:
-- pitchesbali.reyong
: note generator(list (pitch 4 2) (pitch 5 0))
. Really only for 4e
and 5i
for the penyorog.>kilit
-- reyongbali.reyong
: note generatork//\\
-- reyong
k_\
-- reyong
kilit
-- reyong
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
a
-- tumpuk-autobali.reyong
: note generatortumpuk
that randomly picks a pattern.place
env :: Signal (0 <= x <= 1) = 1
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
cancel-kotekan
-- cancel-kotekanbali.reyong
: note transformercancel
call, except it understands flags set by kotekan, and cancels based on reyong voice.final-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
hand-damp
-- hand-dampbali.reyong
: note transformerinsts
:: list of Str [*-insts]
— Apply damping to these instruments.
dur
:: realtime signal = .15s
[*-dur]
— There must be at least this much time between the end of a note and the start of the next to damp.
infer-damp
-- infer-dampbali.reyong
: note transformer+damped
attribute will force a damp, while +undamped
will prevent damping. The latter can cause a previously undamped note to become damped because the hand is now freed up.
+mute
and zero duration at note end.insts
:: list of Str [*-insts]
— Apply damping to these instruments.
dur
:: realtime signal = .15s
[*-dur]
— This is how fast the player is able to damp. A note is only damped if there is a hand available which has this much time to move into position for the damp stroke, and then move into position for its next note afterwards.
early
:: realtime signal = .025s
[*-early]
— Damp this much before the next note, if it would be simultaneous with the next start.
k
-- kotekanbali.reyong
: note generatork^
-- kotekan
cancel-kotekan
to cancel the extras.kernel
:: Str = k-12-1-21
[kernel, *-kernel]
— Transposition steps for the part that ends on the destination pitch. It should consist of -
, 1
, and 2
. You can start with k
to avoid needing quotes. Starting with k
will also require the length to be a multiple of 4.
dir
:: Str (u d) = u
[*-dir]
— Inferred part is above or below the explicit one.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
k//
-- kotekanbali.reyong
: note generatork\\
-- kotekan
cancel-kotekan
to cancel the extras.kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
lv
-- note with +undampedbali.reyong
: note generatorlv
-- note with +undampedbali.reyong
: note transformernorot
-- norotbali.reyong
: note generatornt
-- norot
prepare
:: Maybe Str (f t) = _
[*-prepare]
— Whether or not to prepare for the next pitch. If Nothing, infer based on the next note.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
nt-
-- norotbali.reyong
: note generatorprepare
:: Maybe Str (f t) = f
[*-prepare]
— Whether or not to prepare for the next pitch. If Nothing, infer based on the next note.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
nt>
-- norotbali.reyong
: note generatorprepare
:: Maybe Str (f t) = t
[*-prepare]
— Whether or not to prepare for the next pitch. If Nothing, infer based on the next note.
kotekan-dur
env :: Signal (ScoreTime) = "(ts s)
[kotekan-dur]
— Duration of derived notes.
initial
env :: Maybe Str (f t) = _
[initial]
— If true, include an initial note, which is the same as the final note. This is suitable for the start of a sequence of kotekan calls. If not given, infer false for negative duration, true for positive.
final
env :: Str (f t) = t
[final]
— If true, include the final note, at the event end.
voices
env :: list of Signal (integral) = (list)
[voices, *-voices]
— Only emit notes for these positions, from 1 to 4. Empty means all of them.
o
-- byongbali.reyong
: note generatorrealize-ngoret
-- realize-ngoretbali.reyong
: note transformerngoret
call. This is necessary because it needs to know the positions and pitches of the previous and next notes, and those aren't necessarily available when evaluating the track. This call needs a hand
envron to figure out which which note follows which.realize-reyong
-- realize-reyongbali.reyong
: note transformerinfer-damp $ $ | cancel-kotekan $ | realize-ngoret
.
$
is lifted to be an argument of this macro.
insts
:: list of Str [*-insts]
— Apply damping to these instruments.
dur
:: realtime signal = .15s
[*-dur]
— This is how fast the player is able to damp. A note is only damped if there is a hand available which has this much time to move into position for the damp stroke, and then move into position for its next note afterwards.
final-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
realize-trompong
-- realize-trompongbali.reyong
: note transformerhand-damp $ $ | realize-ngoret
.
$
is lifted to be an argument of this macro.
insts
:: list of Str [*-insts]
— Apply damping to these instruments.
dur
:: realtime signal = .15s
[*-dur]
— There must be at least this much time between the end of a note and the start of the next to damp.
t
-- tumpukbali.reyong
: note generatornotes
:: Str [*-notes]
— Articulations, from -.mnox
, pitches from edcba0123456789
, or a space for a rest.
dur
:: Signal (RealTime) = .1
[*-dur]
— Duration of each note.
place
env :: Signal (0 <= x <= 1) = 1
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
upper
-- upperbali.reyong
: note generator
t-oct=+1
and
"v"=2
. If reyong subtracks have v=+1
and v=+2
respectively, they'll wind up with the right voices.
upper
-- upperbali.reyong
: note transformer
t-oct=+1
and
"v"=2
. If reyong subtracks have v=+1
and v=+2
respectively, they'll wind up with the right voices.vv
-- lower-octave-notebali.reyong
: note transformerbali.reyong.solkattu
(1 calls)n1
-- solkattu-notebali.reyong.solkattu
: note generatorn14
-- solkattu-note
n2
-- solkattu-note
n3
-- solkattu-note
n4
-- solkattu-note
bali.sekar
(2 calls)sekar
-- sekarbali.sekar
: note generatorpattern
:: list of Str [*-pattern]
— If there is a list of patterns, they are for different numbers of notes, starting with 1. A single pattern is applied to all numbers though. The pattern is letters from a-z, where a
is the first note and z
is the 26th. Capital letters replace that note with a rest. Gaps in the input notes count as rest notes.
arrive
env :: Str (f t) = t
[*-arrive]
— If true, the last note of the pattern is aligned to the end of the event, and given {infer-duration}
.
sekar-e
-- sekarbali.sekar
: note generatorabcac
would divide into 3 parts). The melody is sampled at those points for note attacks, sustains, and rests, which are then rearranged by the pattern. Thus, the output is always notes in a regular tempo determined by the length of the pattern.pattern
:: Str [*-pattern]
— The pattern is letters from a-z, where a
is the first note and z
is the 26th. Capital letters replace that note with a rest. Gaps in the input notes count as rest notes.
arrive
env :: Str (f t) = t
[*-arrive]
— If true, the last note of the pattern is aligned to the end of the event, and given {infer-duration}
.
china.zheng
(4 calls)bent-string
-- bent-stringchina.zheng
: note transformerstring
variable.
attack
:: typed signal = .15
[*-attack]
— Time for a string to bend to its desired pitch. A fast attack sounds like a stopped string.
release
:: typed signal = .1
[*-release]
— Time for a string to return to its original pitch.
delay
:: typed signal = 0
[*-delay]
— If the string won't be used for the following note, it will be released after this delay.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
gliss
-- glisschina.zheng
: note generatortime
among the number of notes, while the -a (absolute) version gives time
to each note.
start
:: Signal (integral) [*-start]
— Start this many strings above or below the destination pitch.
time
:: Signal (Time, default real) = .075s
[*-time]
— Time between each note.
dyn
:: Maybe Signal = _
[*-dyn]
— Start at this dyn, and interpolate to the destination dyn. If not given, the dyn is constant.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
gliss-a
-- gliss-achina.zheng
: note generatortime
among the number of notes, while the -a (absolute) version gives time
to each note.
start
:: Signal (integral) [*-start]
— Start this many strings above or below the destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time in which to play the glissando.
dyn
:: Maybe Signal = _
[*-dyn]
— Start at this dyn, and interpolate to the destination dyn. If not given, the dyn is constant.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
tr
-- trchina.zheng
: note generatortr^
-- tr
tr_
-- tr
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
speed
:: time signal (default real) = 20
[*-speed]
— Alternate pitches at this speed.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
europe
(2 calls)chord
-- chordeurope
: note generatorchord^
-- chord
chord_
-- chord
name
:: Str = ''
[*-name]
— Chord name.
time
env :: Signal (Time, default real) = .08s
[*-time]
— Time between notes, if they aren't unison.
stack
-- stackeurope
: note generatorstack^
-- stack
stack_
-- stack
interval
* :: Pitch or Signal (integral) or Str []
— Relative intervals, starting from the base pitch. Can be absolute pitch, diatonic intervals, or a chromatic interval. Chromatic intervals are notated m3
, M3
, p4
for minor third, major third, and perfect fourth respectively.
time
env :: Signal (Time, default real) = .08s
[*-time]
— Time between notes, if they aren't unison.
idiom.string
(7 calls)bent-string
-- bent-stringidiom.string
: note transformerstring
variable.
attack
:: typed signal = .15
[*-attack]
— Time for a string to bend to its desired pitch. A fast attack sounds like a stopped string.
release
:: typed signal = .1
[*-release]
— Time for a string to return to its original pitch.
delay
:: typed signal = 0
[*-delay]
— If the string won't be used for the following note, it will be released after this delay.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
gliss
-- glissidiom.string
: note generatortime
among the number of notes, while the -a (absolute) version gives time
to each note.
start
:: Signal (integral) [*-start]
— Start this many strings above or below the destination pitch.
time
:: Signal (Time, default real) = .075s
[*-time]
— Time between each note.
dyn
:: Maybe Signal = _
[*-dyn]
— Start at this dyn, and interpolate to the destination dyn. If not given, the dyn is constant.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
gliss-a
-- gliss-aidiom.string
: note generatortime
among the number of notes, while the -a (absolute) version gives time
to each note.
start
:: Signal (integral) [*-start]
— Start this many strings above or below the destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time in which to play the glissando.
dyn
:: Maybe Signal = _
[*-dyn]
— Start at this dyn, and interpolate to the destination dyn. If not given, the dyn is constant.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
mute-end
-- mute-endidiom.string
: note transformer+ring
attr suppresses this.threshold
:: Signal (RealTime) [*-threshold]
— Mute if the string is free for this long.
dur
:: realtime signal [*-dur]
— Duration of mute note. If it's zero, its omitted and only the +mute note is emitted.
dyn
:: untyped signal [*-dyn]
— Dyn of mute note.
o
-- harmonicidiom.string
: note generatorfinger
:: Signal = .035
[*-finger]
— Weight of the finger touching the string, in newtons.
h1
:: Str (f t) = f
[*-h1]
— Ok to pick an open string as the 1st harmonic?
string
env :: Maybe Pitch = _
[string]
— Play on this string.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
on
-- harmonicidiom.string
: note generatorn
:: Signal (>0) = 1
[*-n]
— Play this harmonic.
finger
:: Signal = .035
[*-finger]
— Weight of the finger touching the string, in newtons.
string
env :: Pitch [string]
— Play on this string.
stopped-string
-- stopped-stringidiom.string
: note transformerbent-string
but for stopped strings, like the violin family, where strings instantly jump to their pitches.delay
:: typed signal = 0s
[*-delay]
— String release delay time.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
string
env :: Maybe Pitch = _
[string]
— Play on this string.
idiom.wind
(1 calls)wind-idiom
-- wind-idiomidiom.wind
: note transformerfundamentals
env :: list of Signal (NN) or Pitch = (list)
[fundamentals]
— Fundamentals for this instrument.
india.gamakam2
(3 calls)@
-- sequenceindia.gamakam2
: note generatorbegin ; middle1 ; middle2; ... ; end
phases. Calls are pitch generators, and are sequenced such that the middle calls stretch based on the duration of the note. The india.gamakam2.begin
, india.gamakam2.middle
, and india.gamakam2.end
modules are in scope during the begin, middle, and end phases. All calls below the india.gamakam2
module are designed for sequencing. This just means they emit samples at the beginning and end of their range, so the sequence call knows their extent. Normal pitch calls may not do that.
-<
and ->
calls: they have 0 duration, but are overlaid with their neighbors. This is so you can fade in or out without having to flatten the pitch.
arg
* :: Val []
— Expressions separated by ;
.
@
-- sequenceindia.gamakam2
: note transformerbegin ; middle1 ; middle2; ... ; end
phases. Calls are pitch generators, and are sequenced such that the middle calls stretch based on the duration of the note. The india.gamakam2.begin
, india.gamakam2.middle
, and india.gamakam2.end
modules are in scope during the begin, middle, and end phases. All calls below the india.gamakam2
module are designed for sequencing. This just means they emit samples at the beginning and end of their range, so the sequence call knows their extent. Normal pitch calls may not do that.
-<
and ->
calls: they have 0 duration, but are overlaid with their neighbors. This is so you can fade in or out without having to flatten the pitch.
arg
* :: Val []
— Expressions separated by ;
.
sahitya
-- sahityaindia.gamakam2
: note transformerindia.gamakam5
(1 calls)sahitya
-- sahityaindia.gamakam5
: note transformerindia.gamakam6
(1 calls)sahitya
-- sahityaindia.gamakam6
: note transformerindia.mridangam
(4 calls)8n
-- sequenceindia.mridangam
: note generatortk
-- sequence
tknk
-- sequence
dur
, and if the event is longer than the sequence, it is repeated to fill up available space. If a whole cycle doesn't fit, clip from the end for a positive event, or from the beginning for a negative one. If dur
is 0, then stretch to the sequence to fit the event.dur
:: Signal (ScoreTime, >=0) = 0t
[dur, *-dur]
— Duration for each letter in the sequence. If 0, the sequence will stretch to the event's duration.
p
-- patternindia.mridangam
: note generatorseq
, but pick a standard pattern.n
:: Maybe Signal (integral, >0) [*-n]
— Number of strokes. If not given, and dur > 0, then infer the number of strokes as the event_duration / dur.
var
:: Str = d
[var, *-var]
— Variation name. Possibilities are: d
, f567-0
, f567-1
, f567-2
, f567-3
, f567-4
, f567-5
, f567-6
, f567-7
, f567-8
, kt_kn_o
dur
:: Signal (ScoreTime, >=0) = 0t
[dur, *-dur]
— Duration for each letter in the sequence. If 0, the sequence will stretch to the event's duration.
seq
-- sequenceindia.mridangam
: note generatordur
, and if the event is longer than the sequence, it is repeated to fill up available space. If a whole cycle doesn't fit, clip from the end for a positive event, or from the beginning for a negative one. If dur
is 0, then stretch to the sequence to fit the event.sequence
:: Str [sequence]
— Single letter stroke names. _
or space is a rest.
dur
:: Signal (ScoreTime, >=0) = 0t
[dur, *-dur]
— Duration for each letter in the sequence. If 0, the sequence will stretch to the event's duration.
tir
-- tirindia.mridangam
: note generator{strong}
.sequence
:: Str [sequence]
— Single letter stroke names. _
or space is a rest.
karvai
:: Str = ''
[*-karvai]
— Separates each sequence. If it's empty or a single non-rest, then the gap can stretch to an integral number of matras.
dur
:: Signal (ScoreTime, >=0) = 0t
[dur, *-dur]
— Duration for each letter in the sequence. If 0, the sequence will stretch to the event's duration.
india.pakhawaj
(1 calls)bols
-- bolsindia.pakhawaj
: note generatorflam
:: Signal (ScoreTime) = .15
[*-flam]
— Time between flam type bols like kre
.
internal
(1 calls)capture-null-control
-- capture-null-controlinternal
: note generatorly
(64 calls)8va
-- ottavaly
: note generator8va 0
.
octave
:: Signal (integral) = 0
[*-octave]
— Transpose this many octaves up or down.
8va
-- ottavaly
: note transformer8va 0
.
octave
:: Signal (integral) = 0
[*-octave]
— Transpose this many octaves up or down.
clef
-- clefly
: note generatorclef
:: Str [*-clef]
— Should be bass
, treble
, etc.
clef
-- clefly
: note transformerclef
:: Str [*-clef]
— Should be bass
, treble
, etc.
dyn
-- dynly
: note generatordynamic
:: Str [*-dynamic]
— Should be p
, ff
, etc.
dyn
-- dynly
: note transformerdynamic
:: Str [*-dynamic]
— Should be p
, ff
, etc.
if-ly
-- if-lyly
: note generatoris-ly
:: Quoted [*-is-ly]
— Evaluated in lilypond mode.
not-ly
:: Quoted [*-not-ly]
— Evaluated when not in lilypond mode.
ly-
-- ly-articulationly
: note generator-articulation
to notes.
text
:: Str [*-text]
— Code to attach. A -
is prepended.
ly-
-- ly-articulationly
: note transformer-articulation
to notes.text
:: Str [*-text]
— Code to attach. A -
is prepended.
ly-!
-- ly-reminder-accidentally
: note generatorly-!
-- ly-reminder-accidentally
: note transformerly-(
-- ly-begin-slurly
: note generator(
isn't cutting it.
ly-(
-- ly-begin-slurly
: note transformer(
isn't cutting it.
ly-)
-- ly-end-slurly
: note generator(
isn't cutting it.
ly-)
-- ly-end-slurly
: note transformer(
isn't cutting it.
ly-<
-- ly-hairpinly
: note generatorly->
-- ly-hairpin
ly-<
-- ly-hairpinly
: note transformerly->
-- ly-hairpin
ly-<>
-- ly-crescendo-diminuendoly
: note generatorly-<>
-- ly-crescendo-diminuendoly
: note transformerly-?
-- ly-cautionary-accidentally
: note generatorly-?
-- ly-cautionary-accidentally
: note transformerly-[
-- ly-begin-beamly
: note generatorly-[
-- ly-begin-beamly
: note transformerly-]
-- ly-end-beamly
: note generatorly-]
-- ly-end-beamly
: note transformerly-^~
-- ly-tie-directionly
: note generatorly-^~
-- ly-tie-directionly
: note transformerly-_~
-- ly-tie-directionly
: note generatorly-_~
-- ly-tie-directionly
: note transformerly-attach
-- ly-attachly
: note generatorcode
:: Str [*-code]
— Attach this code.
pos
:: Str (chord-append-all chord-append-first chord-append-last chord-prepend-all chord-prepend-first chord-prepend-last note-append-all note-append-first note-append-last note-prepend-all note-prepend-first note-prepend-last) = chord-append-last
[*-pos]
— Where to put it: 'Derive.Call.Ly.CodePosition'.
ly-attach
-- ly-attachly
: note transformercode
:: Str [*-code]
— Attach this code.
pos
:: Str (chord-append-all chord-append-first chord-append-last chord-prepend-all chord-prepend-first chord-prepend-last note-append-all note-append-first note-append-last note-prepend-all note-prepend-first note-prepend-last) = chord-append-last
[*-pos]
— Where to put it: 'Derive.Call.Ly.CodePosition'.
ly-emit
-- ly-emitly
: note generatorcode
:: Str [*-code]
— Emit this code.
pos
:: Str (prepend append) = append
[*-pos]
— Where to put it: 'Derive.Call.Ly.CodePosition'.
ly-emit
-- ly-emitly
: note transformercode
:: Str [*-code]
— Emit this code.
pos
:: Str (prepend append) = append
[*-pos]
— Where to put it: 'Derive.Call.Ly.CodePosition'.
ly-global
-- ly-globally
: note transformerwhen-ly
, but also set the ly-global
instrument.ly-key
-- ly-keyly
: note generator=
does.
key
:: Str [*-key]
— You can use any of the keys from the Twelve scale.
ly-key
-- ly-keyly
: note transformer=
does.
key
:: Str [*-key]
— You can use any of the keys from the Twelve scale.
ly-post
-- ly-postly
: note generatorcode
:: Str [*-code]
— A leading \ will be prepended.
ly-post
-- ly-postly
: note transformercode
:: Str [*-code]
— A leading \ will be prepended.
ly-pre
-- ly-prely
: note generatorcode
:: Str [*-code]
— A leading \ will be prepended.
ly-pre
-- ly-prely
: note transformercode
:: Str [*-code]
— A leading \ will be prepended.
ly-span
-- ly-spanly
: note generatoraccel.
or cresc.
If it has a a zero duration, emit the start if the text is given, or the end if it's not.
text
:: Maybe Str [*-text]
— Text.
ly-span
-- ly-spanly
: note transformeraccel.
or cresc.
If it has a a zero duration, emit the start if the text is given, or the end if it's not.
text
:: Maybe Str [*-text]
— Text.
ly-sus
-- ly-susly
: note generatorstate
:: Str (f t ft) [*-state]
— t for \sustainOn, f for \sustainOff, ft for \sustainOff\sustainOn.
ly-sus
-- ly-susly
: note transformerstate
:: Str (f t ft) [*-state]
— t for \sustainOn, f for \sustainOff, ft for \sustainOff\sustainOn.
ly-track
-- ly-trackly
: note transformerly-tr~
-- ly-tr-spanly
: note generatorly-tr~
-- ly-tr-spanly
: note transformerly^
-- ly-textly
: note generatorly_
-- ly-text
text
:: Str [*-text]
— Text to attach.
ly^
-- ly-textly
: note transformerly_
-- ly-text
text
:: Str [*-text]
— Text to attach.
meter
-- meterly
: note generatorsubdivision
supports simultaneous different spellings.
meter
:: Str [*-meter]
— Should be 4/4
, 6/8
, etc. An ambiguous meter like 6/8
will default to 3+3, but you can explicitly set the subdivision, e.g. 2+2+2/8
.
meter
-- meterly
: note transformersubdivision
supports simultaneous different spellings.
meter
:: Str [*-meter]
— Should be 4/4
, 6/8
, etc. An ambiguous meter like 6/8
will default to 3+3, but you can explicitly set the subdivision, e.g. 2+2+2/8
.
movement
-- movemently
: note generatortitle
:: Str [*-title]
— Title of this movement.
movement
-- movemently
: note transformertitle
:: Str [*-title]
— Title of this movement.
not-ly-track
-- not-ly-trackly
: note transformerly-track
, evaluate the track only when not in lilypond mode. Only use it in the track title!subdivision
-- subdivisionly
: note generatormeter
, but it affects the subdivision for this instrument only, instead of setting the global meter. This is useful when instruments are playing cross-rhythms and should beam accordingly.
meter
:: Maybe Str [*-meter]
— Same as meter
call.
subdivision
-- subdivisionly
: note transformermeter
, but it affects the subdivision for this instrument only, instead of setting the global meter. This is useful when instruments are playing cross-rhythms and should beam accordingly.
meter
:: Maybe Str [*-meter]
— Same as meter
call.
tempo
-- tempoly
: note generatortext
:: Str [*-text]
— 4 = 120, etc.
tempo
-- tempoly
: note transformertext
:: Str [*-text]
— 4 = 120, etc.
unless-ly
-- unless-lyly
: note transformerarg
* :: Val []
— Call expression.
when-ly
-- when-lyly
: note transformerly-track
, this doesn't evaluate subtracks, so you can use it to emit an entirely different set of tracks.
arg
* :: Val []
— Call expression.
xstaff
-- xstaffly
: note generatorstaff
:: Str (u d) [*-staff]
— Switch to this staff.
xstaff
-- xstaffly
: note transformerstaff
:: Str (u d) [*-staff]
— Switch to this staff.
xstaff-a
-- xstaff-aroundly
: note generatorstaff
:: Str (u d) [*-staff]
— Switch to this staff.
xstaff-a
-- xstaff-aroundly
: note transformerstaff
:: Str (u d) [*-staff]
— Switch to this staff.
prelude
(101 calls)""
-- noteprelude
: note generatorNOTE
-- note
note-track
symbol, which is used internally by many other calls when they want a plain note. This is so you can bind "" to one of those other calls without getting recursion.
(
-- legatoprelude
: note generator^(
-- legato
_(
-- legato
%legato-overlap = .05 | %sus-abs = -.05
.
detach
and dyn
args.
^
and _
variants are the same in normal performance, but force lilypond slurs to go above or below, respectively.overlap
:: Signal (RealTime) = .1s
[*-overlap]
— All notes but the last have their durations extended by this amount.
detach
:: Maybe Signal (RealTime) = _
[*-detach]
— Shorten the final note by this amount, by setting %sus-abs
. The distinction between not given and 0 is important, because 0 will still override %sus-abs
, which you may not want.
dyn
:: Signal = 1
[*-dyn]
— Scale dyn for notes after the first one by this amount.
+
-- lengthenprelude
: note generator-
-- shorten
sus-abs
.
time
:: Signal = .15
[*-time]
— Subtract this duration.
+
-- lengthenprelude
: note transformer-
-- shorten
sus-abs
.
time
:: Signal = .15
[*-time]
— Subtract this duration.
.
-- note with +stacprelude
: note generatorm
-- note with +mute
{
-- note with +porta
pattern:attribute starting with `+` or `=`
-- note with +example-attr
.
-- note with +stacprelude
: note transformerm
-- note with +mute
{
-- note with +porta
<
-- track-integrateprelude
: note transformerkeep-controls
:: list of Control ([a-z][a-z0-9.-]*) = (list dyn)
[*-keep-controls]
— Keep only these controls. Transposers are always kept.
<<
-- block-integrateprelude
: note transformerkeep-controls
:: list of Control ([a-z][a-z0-9.-]*) = (list dyn)
[*-keep-controls]
— Keep only these controls. Transposers are always kept.
=
-- equalprelude
: note generatorlhs
:: Str []
— Assign to this. This looks like a Str, but can actualy contain any characters except =
, due to the special infix parsing for =
. Symbolic prefixes determine what is assigned, and the valid types for the rhs.
rhs
:: Val []
— Source of the assignment.
merge
:: Str = set
[*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
=
-- equalprelude
: note transformer_
: x = 42
or x = _
.
>>
- Create a note transformer, whose name will be prefixed with >
. This is used to set an instrument transformer, which can apply a transformer when an instrument is set by the title of a note track, as implemented by by note-track
.
-val
- Bind a val call.
^note
, *pitch
, .control
- Bind the respective call type generator.
^-note
, *-pitch
, .-control
- As above, but bind transformer.
>alias = >inst
- alias instrument name
^phrase = some-block
, note transformer: ^-mute = +mute+loose
, control transfomrer: .-i = t
, val call: -4c = (5c)
.
ky
file. It has more space available so it can use a more readable syntax.
^abc = "(a b c)
will create a abc
call, which is a macro for a b c
. The created call does not take arguments.
#
, e.g. # = (4c)
or # = 45nn
. Control signal assignment also supports the same merge functions as the control track: a = .5 add
or a = %b add
. However, the second example throws an error if %b
is a ControlFunction. a = .5 default
will combine with a
's default merge function. Assigning to _
unsets the control, and any ControlFunction.
=
operator can be suffixed with symbol, which will become the last argument, so %x=+1
becomes %x = 1 '+'
. Note that the order is backwards from the usual +=
, which is ultimately because the first word can have almost any character except space and =
. Also, x=-1
is ambiguous, and parsed as x =- 1
.lhs
:: Str []
— Assign to this. This looks like a Str, but can actualy contain any characters except =
, due to the special infix parsing for =
. Symbolic prefixes determine what is assigned, and the valid types for the rhs.
rhs
:: Val []
— Source of the assignment.
merge
:: Str = set
[*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
^
-- weakprelude
: note generatordyn
:: Signal = .35
[*-dyn]
— Multiply dynamic.
^
-- weakprelude
: note transformerdyn
:: Signal = .35
[*-dyn]
— Multiply dynamic.
`arp-down`
-- arpprelude
: note generator`arp-rnd`
-- arp
`arp-up`
-- arp
arp-up
, to the left for arp-down
, and randomly for arp-rnd
. Since it transforms score and not events, it doesn't know the pitches of the sub notes (they may not have a single pitch) so it's not actually "up" or "down".time
:: Signal = .1
[*-time]
— This much RealTime between each note.
random
:: Signal = .5
[*-random]
— Each note can vary randomly by +- time/2 * random
.
`mordent`
-- mordentprelude
: note generatorg
, but hardcoded to play pitch, neighbor, pitch.neighbor
:: Signal (Transposition, default diatonic) = 1d
[*-neighbor]
— Neighbor pitch.
grace-dyn
env :: Signal (>=0) = .5
[grace-dyn]
— Scale the dyn of the grace notes.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
place
env :: Signal (0 <= x <= 1) = 0
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
`rmordent`
-- mordentprelude
: note generatorg
, but hardcoded to play pitch, neighbor, pitch.neighbor
:: Signal (Transposition, default diatonic) = -1d
[*-neighbor]
— Neighbor pitch.
grace-dyn
env :: Signal (>=0) = .5
[grace-dyn]
— Scale the dyn of the grace notes.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
place
env :: Signal (0 <= x <= 1) = 0
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
add-flag
-- add-flagprelude
: note transformerflag
+ :: Str []
— Add these flags.
alt
-- alternateprelude
: note generatorexpr
+ :: Quoted []
— Expression to evaluate.
alt-t
-- alternate-tracksprelude
: note generatorweight
* :: Signal []
— Likelihood to choose each child track. Each number is a relative weight, and tracks without a number default to 1. It's an error to have more numbers than tracks.
alt-w
-- alternate-weightedprelude
: note generatorexpr
+ :: (Signal, Quoted) []
— (weight, expr) pairs.
ap
-- apprelude
: note generatorapply-attributes
-- apply-attributesprelude
: note transformerattr-
prefix. A control named attr-a-b
will, when non-zero, add the +a+b
attributes to its events.apply-start-offset
-- apply-start-offsetprelude
: note transformerstart-offset-val
env var. This is set by note deriver from the start-s
and start-t
controls, so if you want those controls to have an effect, you have to use this postproc.min-duration
:: Maybe Signal (RealTime) = _
[*-min-duration]
— If given, notes on the same hand won't be moved closer than this time. Otherwise, hand and instrument is ignored.
attr
-- noteprelude
: note generatorattr
* :: Str or Attributes []
— Set instrument or add attributes.
attr
-- noteprelude
: note transformerattr
* :: Str or Attributes []
— Set instrument or add attributes.
avoid-overlap
-- avoid-overlapprelude
: note transformertime
:: Signal (RealTime) = .1
[*-time]
— Ensure at least this much time between two notes of the same pitch.
cancel
-- cancelprelude
: note transformerfinal-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
cf-sample
-- cf-sampleprelude
: note transformercontrol
+ :: Control ([a-z][a-z0-9.-]*) []
— Sample these control functions.
Clip
-- Clipprelude
: note transformerclip
, but align the named block to the end of the event instead of the beginning. Events that then lie before the start are clipped.
clip
-- clipprelude
: note transformercycle
-- cycleprelude
: note generatortransformer
+ :: Quoted []
— Transformers to apply.
cycle-t
-- cycle-tprelude
: note generatortransformer
+ :: (Quoted, Signal) []
— Transformers to apply, and the ScoreTime duration for each transformer.
d
-- delayprelude
: note transformerecho
, abstract means it happens in the score, so events may not be delayed evenly if the tempo is changing.time
:: time signal (default real) = .1s
[*-time]
— Delay time.
debug
-- debugprelude
: note transformerLog.msg_data
of a log msg with the given tag.
tag
:: Str [*-tag]
— Log msg has this text.
default-merge
-- default-mergeprelude
: note transformermerge
:: Str [*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
control
+ :: Control ([a-z][a-z0-9.-]*) []
— Control names.
drop
-- dropprelude
: note transformerdyn
at the end of the note.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
Drop
-- Dropprelude
: note transformerLift
, but attack the note from a higher neighbor.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
e-echo
-- e-echoprelude
: note transformerdelay
:: untyped signal = 1s
[*-delay]
— Delay time.
feedback
:: untyped signal = .4
[*-feedback]
— The dyn of each echo is multiplied by this amount.
times
:: untyped signal = 1
[*-times]
— Number of echoes, not counting the original.
e-interpolate
-- e-interpolateprelude
: note generatornotes
:: Maybe Quoted = _
[*-notes]
— source deriver
model
:: Maybe Quoted = _
[*-model]
— rhythm model
at
:: untyped signal = 0
[at, *-at]
— interpolate position
echo
-- echoprelude
: note transformere-echo
.
delay
:: Signal (ScoreTime) = 1t
[*-delay]
— Delay time.
feedback
:: Signal = .4
[*-feedback]
— The %dyn of each echo is multiplied by this amount.
times
:: Signal (integral) = 1
[*-times]
— Number of echoes, not counting the original.
extend-duration
-- extend-durationprelude
: note transformer+stac
, which might already have their own built-in duration, and sound better when given as much time to ring as possible.attrs
:: list of Attributes [*-attrs]
— Extend durations of notes with these attrs.
dur
:: Signal (RealTime) = 2s
[*-dur]
— Extend to a minimum of this duration.
g
-- graceprelude
: note generator(
call, so they will overlap or apply a keyswitch, or do whatever (
does.pitch
* :: Pitch or Signal []
— Grace note pitches. If they are numbers, they are taken as transpositions and must all be the same type, defaulting to diatonic.
grace-dyn
env :: Signal (>=0) = .5
[grace-dyn]
— Scale the dyn of the grace notes.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
place
env :: Signal (0 <= x <= 1) = 0
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
g-
-- graceprelude
: note generatorg
, but doesn't use (
, and all notes are held to the duration of the event.pitch
* :: Pitch or Signal []
— Grace note pitches. If they are numbers, they are taken as transpositions and must all be the same type, defaulting to diatonic.
grace-dyn
env :: Signal (>=0) = .5
[grace-dyn]
— Scale the dyn of the grace notes.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
place
env :: Signal (0 <= x <= 1) = 0
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
g_
-- graceprelude
: note generatorpitch
* :: Pitch or Signal []
— Grace note pitches. If they are numbers, they are taken as transpositions and must all be the same type, defaulting to diatonic.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
place
env :: Signal (0 <= x <= 1) = 0
[place, *-place]
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
grace
-- basic-graceprelude
: note generatorpitches
:: list of Pitch or Signal []
— Grace note pitches. If they are numbers, they are taken as transpositions and must all be the same type, defaulting to diatonic.
dur
:: Signal (Time) []
— Duration of grace notes.
place
:: Signal (0 <= x <= 1) []
— At 0, grace notes fall before their base note. At 1, grace notes fall on the base note, and the base note is delayed.
transformer
:: Maybe Quoted = _
[]
— Apply a transformer to grace notes.
h
-- holdprelude
: note transformertime
:: Signal (Time, default real) = .25s
[*-time]
— Hold this long.
highlight
-- highlightprelude
: note transformerhighlight
:: Str (nohighlight notice warning error) [*-highlight]
— Highlight code.
highlight-out-of-range
-- highlight-out-of-rangeprelude
: note transformerinst-bottom
or above inst-top
. The range must be in NNs.
highlight-strings
-- highlight-stringsprelude
: note transformeropen-strings
.
open
env :: Str (f t) = f
[*-open]
— If true, put Info on open strings, else put Warning on non-open ones.
if-c<
-- if-c<prelude
: note generatorif-c>
-- if-c<
control
:: Control ([a-z][a-z0-9.-]*) [*-control]
— Test this control.
tests
+ :: Val []
— (value, expr) pairs.
if-e
-- if-eprelude
: note generatorname
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
true
:: Quoted [*-true]
— Eval if true.
false
:: Quoted [*-false]
— Eval if false.
import
-- importprelude
: note transformermodule
+ :: Str []
— Import these modules.
imports
-- import-symbolprelude
: note transformermodule
:: Str [*-module]
— Import this module.
symbol
+ :: Str []
— Import these symbols.
infer-dur
-- infer-durprelude
: note transformerinfer-hands
-- infer-handsprelude
: note transformerhand=l
and hand=r
for the two tracks explicitly named with the same instrument. >2 tracks is an error. This only sets hand
if it isn't already set.
infer-negative
-- infer-negativeprelude
: note transformerheuristic
:: Str = note
[*-heuristic]
— doc
final-duration
:: Signal (RealTime) = 1s
[final-duration]
— If there is no following note, infer this duration.
initialize
-- initializeprelude
: note transformerinst
:: Str [*-inst]
— Instrument to initialize.
control,val
* :: (Control ([a-z][a-z0-9.-]*), list of Signal or Pitch) []
— (control, val) pairs. If the val is a list, expect the instrument to have that many elements, and set the control for each element.
interpolate
-- interpolateprelude
: note generatorat
:: untyped signal = 0
[at, *-at]
— interpolate position
Lift
-- Liftprelude
: note transformern
pitch call, but it's a note call, and it fades in dyn
at the same time.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
lift
-- liftprelude
: note transformerdyn
at the end of the note. Same as the drop
note call, except it defaults to going up instead of down.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
log-seed
-- log-seedprelude
: note transformerseed=xyz
.
loop
-- loopprelude
: note transformerclip
, but when the called note runs out, it is repeated.
mapc
-- mapcprelude
: note transformercontrol
:: Control ([a-z][a-z0-9.-]*) or PControl (#[a-z][a-z0-9.-]*) [*-control]
— Apply to this control. Pitch signals start with #
.
transformer
:: Quoted [*-transformer]
— Transformer to apply.
multiple
-- multipleprelude
: note transformertransformer
+ :: Quoted []
— Derive under each transformer.
note-track
-- note-trackprelude
: note transformer>
. If there is a note transformer of the same name as the instrument, starting with >
, it will be called after setting the instrument. This way, you can set instrument-specific variables or transformations.
inst
:: Maybe Str = _
[]
— Set this instrument and run the transformer, if it exists.
o
-- harmonicprelude
: note generatortype
:: Maybe Str (nat art) = _
[*-type]
— Type of harmonic.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
string
env :: Maybe Pitch = _
[string]
— Play on this string.
harmonic-force-diamond
env :: Str (f t) = f
[harmonic-force-diamond]
— If true, use string+diamond notation even for the 2nd natural harmonic.
o
-- harmonicprelude
: note transformertype
:: Maybe Str (nat art) = _
[*-type]
— Type of harmonic.
open-strings
env :: list of Pitch = (list)
[open-strings]
— Pitches of open strings.
string
env :: Maybe Pitch = _
[string]
— Play on this string.
harmonic-force-diamond
env :: Str (f t) = f
[harmonic-force-diamond]
— If true, use string+diamond notation even for the 2nd natural harmonic.
omit
-- omitprelude
: note transformerchance
:: Signal = .5
[*-chance]
— Chance, from 0 to 1, that the transformed note will be omitted.
on-repeat
-- on-repeatprelude
: note generatorrepeat
variable, where an out of range index is clamped to be in range.
repeat
+ :: Quoted []
— Eval on nth repeat.
parallel
-- parallelprelude
: note generatorcall
+ :: Quoted []
— Generator calls.
pattern:attribute starting with `+` or `=`
-- note with +example-attrprelude
: note transformerpattern:block name
-- block (bid "example/block")prelude
: note generator/
, the default namespace is applied. If it starts with a -
, this is a relative call and the calling block's namespace and name are prepended.pizz-arp
-- pizz-arpprelude
: note transformer+pizz
. The order is arbitrary but probably in track order. TODO sort by pitch?time
:: Signal (RealTime) = .02s
[*-time]
— Insert this much time between each note.
randomize-start
-- randomize-startprelude
: note transformerapply-start-offset | equal start-s (cf-rnd-a $)
.
$
is lifted to be an argument of this macro.
range
:: Signal [*-range]
— Range this far from the center.
repeat
-- repeatprelude
: note transformertimes
:: Signal (integral, >0) [*-times]
— Repeat this many times.
reverse
-- reverseprelude
: note transformerroll
-- rollprelude
: note generatortrem
covers the afterwards case.times
:: Signal = 1
[*-times]
— Number of grace notes.
time
:: Signal (Time, default real) = .083s
[*-time]
— Time between the strokes.
dyn
:: Signal = .5
[*-dyn]
— Dyn scale for the grace notes.
scale
-- scaleprelude
: note transformerscale
:: Str [scale]
— Look up scale by name.
args
* :: Val []
— Scale arguments.
sequence
-- sequenceprelude
: note generatorcall
+ :: Quoted []
— Generator calls.
sequence-rt
-- sequence-rtprelude
: note generatorsequence
, each block gets its natural RealTime duration, rather than being normalized to 1 and then expanded to its ScoreTime duration. TODO I can't get the RealTime duration without deriving, at which point it's too late to stretch, so the event duration has no effect.
call
+ :: Quoted []
— Generator calls.
slur-dur
-- slur-durprelude
: note transformerdur
:: Signal (Time, default score) [*-dur]
— How long each group is.
offset
:: Signal (Time, default score) = 0t
[*-offset]
— Groups start at this time.
slur-n
-- slur-nprelude
: note transformergroup
:: Signal (integral) [*-group]
— How many notes in a group.
solo
-- soloprelude
: note transformerinst
is set to the given value. This is a specialized version of when-e
.
inst
:: Str [*-inst]
— Instrument.
strong
-- strongprelude
: note transformersus
-- susprelude
: note transformersus
.
amount
:: Signal = 1.5
[*-amount]
— Multiply the note's duration by this.
sus-a
-- sus-aprelude
: note transformersus-abs
.
time
:: Signal (Time, default real) = .25s
[*-time]
— Add this duration to the note.
t
-- tupletprelude
: note generatortup
-- tuplet
subtrack
* :: note deriver []
— Subtrack to stretch.
t-alt
-- tempo-alternateprelude
: note generatora 1/8 b 1/4 c
will play a
when an 8th note is between 0 and 1/8s, b
when it's between 1/8s and 1/4s, and c
when it's above 1/4s.
bottom
:: Quoted []
— Default alternate.
threshold,expr
* :: (Signal (RealTime), Quoted) []
— Evaluate the expr if the tempo is above the threshold. The thresholds should be in ascending order, so the fastest alternate is at the left.
timestep
env :: Str (section w h q e s t32 t64 t128 t256) = e
[*-timestep]
— Use the duration of this timestep, in seconds.
t-alt-c
-- tempo-alternate-continuousprelude
: note generatora 1/8 b 1/4 c
will play a
when an 8th note is between 0 and 1/8s, b
when it's between 1/8s and 1/4s, and c
when it's above 1/4s.
bottom
:: Quoted []
— Default alternate.
threshold,expr
* :: (Signal (RealTime), Quoted) []
— Evaluate the expr if the tempo is above the threshold. The thresholds should be in ascending order, so the fastest alternate is at the left.
timestep
env :: Str (section w h q e s t32 t64 t128 t256) = e
[*-timestep]
— Use the duration of this timestep, in seconds.
interval
env :: Str (section w h q e s t32 t64 t128 t256) = q
[*-interval]
— Switch between alternates at this time interval.
tile
-- tileprelude
: note transformerloop
, but it can start the looped call in its middle instead of starting from 0. The effect is as if the loop is tiled from the beginning of the called block, and is only "let through" during the tile
call. This is useful for patterns that are tied to the meter, but may be interrupted at arbitrary times, e.g. sarvalaghu patterns.
tr
-- trprelude
: note generator+trill+half
, +trill+whole
, or all the notes with +trill
, depending on the interval.neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-style
env :: Str (tr span tremolo) = tr
[tr-style]
— Notation variant: tr symbol, tr~, or tremolo.
tr-^
-- trprelude
: note generatortr-_
-- tr
+trill+half
, +trill+whole
, or all the notes with +trill
, depending on the interval.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-style
env :: Str (tr span tremolo) = tr
[tr-style]
— Notation variant: tr symbol, tr~, or tremolo.
tr^
-- trprelude
: note generatortr_
-- tr
+trill+half
, +trill+whole
, or all the notes with +trill
, depending on the interval.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-style
env :: Str (tr span tremolo) = tr
[tr-style]
— Notation variant: tr symbol, tr~, or tremolo.
tr^^
-- trprelude
: note generatortr^_
-- tr
tr_^
-- tr
tr__
-- tr
+trill+half
, +trill+whole
, or all the notes with +trill
, depending on the interval.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-style
env :: Str (tr span tremolo) = tr
[tr-style]
— Notation variant: tr symbol, tr~, or tremolo.
trem
-- tremprelude
: note generatorspeed
:: time signal (default real) = 10
[speed, *-speed]
— Repeat at this speed. If it's a RealTime, the value is the number of repeats per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of repeats per ScoreTime unit, and will stretch along with tempo changes.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
trem
-- tremprelude
: note transformerspeed
:: time signal (default real) = 10
[speed, *-speed]
— Repeat at this speed. If it's a RealTime, the value is the number of repeats per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of repeats per ScoreTime unit, and will stretch along with tempo changes.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
unless-c
-- when-cprelude
: note transformerwhen-c
-- when-c
%var
control to select among different variations.
val
:: Signal (integral) [*-val]
— Value.
control
:: Signal = 0
[*-control]
— Control.
unless-e
-- when-eprelude
: note transformerwhen-e
-- when-e
name
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
v
-- accentprelude
: note generatordyn
:: Signal = 1.5
[*-dyn]
— Multiply dynamic.
v
-- accentprelude
: note transformerdyn
:: Signal = 1.5
[*-dyn]
— Multiply dynamic.
weak
-- weakprelude
: note transformerzero-duration-mute
-- zero-duration-muteprelude
: note transformerattr
:: Attributes = +mute
[*-attr]
— Add this attribute.
dyn
:: Signal = .75
[*-dyn]
— Scale dynamic by this amount.
retune
(2 calls)realize-retune
-- retune-realizeretune
: note transformerretune
.retune
-- retuneretune
: note transformertime
:: Signal (RealTime) = .15
[*-time]
— RealTime to get to the intended pitch.
dist
:: Signal (NN) = .15
[*-dist]
— Out of tune distance, in NNs. Presumably this should be set to a control function with a bimodal distribution.
india.gamakam
(6 calls)^kam
-- kamindia.gamakam
: control generator^kam^
-- kam
^kam_
-- kam
_kam
-- kam
_kam^
-- kam
_kam_
-- kam
kam
-- kam
kam^
-- kam
kam_
-- kam
^
is high and _
is low, so ^kam_
starts on the upper note, and ends on the lower one. Otherwise, it starts on the unison note and ends on either.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate between 0 and this value.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .08s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[lilt, *-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
^nkam
-- nkamindia.gamakam
: control generator^nkam^
-- nkam
^nkam_
-- nkam
_nkam
-- nkam
_nkam^
-- nkam
_nkam_
-- nkam
nkam
-- nkam
nkam^
-- nkam
nkam_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate between 0 and this value.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
lilt
env :: Signal = 0
[lilt, *-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
transition
env :: Signal (RealTime) = .08s
[transition, *-transition]
— Time for each slide.
dip
-- dipindia.gamakam
: control generatordyn
on the second. This is useful when avoiding a swaram, since it doesn't necessarily emit the base pitch.
high
:: Signal = 1
[*-high]
— High interval.
low
:: Signal = -1
[*-low]
— Low interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
dyn
:: Signal = .5
[*-dyn]
— Multiply dyn by this amount.
transition
env :: Signal (RealTime) = .08s
[transition, *-transition]
— Time for each slide.
j)
-- j)india.gamakam
: control generatorinterval
+ :: Signal []
— Intervals from base pitch.
time
env :: Signal (RealTime) = .15s
[time, *-time]
— Time for each note.
transition
env :: Maybe Signal (RealTime) = _
[transition, *-transition]
— Time for each slide, defaults to time
.
j]
-- j]india.gamakam
: control generatorinterval
+ :: Signal []
— Intervals from base pitch.
time
env :: Signal (RealTime) = .15s
[time, *-time]
— Time for each note.
transition
env :: Maybe Signal (RealTime) = .075s
[transition, *-transition]
— Time for each slide.
sgr
-- jaruindia.gamakam
: control generatorjaru
hardcoded to [-1, 1]
.
time
:: Signal (RealTime) = .15s
[*-time]
— Time for each note.
transition
:: Maybe Signal (RealTime) = _
[*-transition]
— Time for each slide, defaults to time
.
india.gamakam5
(2 calls)dyn
-- dynindia.gamakam5
: control transformergamak
-- gamakindia.gamakam5
: control transformerindia.gamakam5.dyn
(1 calls)!
-- dyn-sequenceindia.gamakam5.dyn
: control generator.
- Move to dyn.
<
- Attack from 0.
=
- No movement.
>
- Decay to 0, with curve weights: (.8, 0)
T
- Set from dyn.
a
- Attack from previous value.
d
- Decay to 0, with curve weights: (0, .8)
sequence
:: Str [*-sequence]
— Dyn calls.
india.gamakam5.pitch
(1 calls)!
-- sequenceindia.gamakam5.pitch
: control generator-
and its following character is considered a single character, so -1
is a valid call or argument. Most of these calls represent a pitch movement:&
- Set from pitch to next. (dur 0)
-
- Negative relative motion.
.
- Postfix call that modifies the duration of the previous call. _
adds 1 to it, .
divides by 2. (dur 0)
0
- Relative motion.
1
- Relative motion.
2
- Relative motion.
3
- Relative motion.
4
- Relative motion.
5
- Relative motion.
6
- Relative motion.
7
- Relative motion.
8
- Relative motion.
9
- Relative motion.
<
- Set from pitch to previous. (dur 0)
=
- Hold flat pitch.
F
- Fast transition time. (dur 0)
M
- Medium transition time. (dur 0)
S
- Slow transition time. (dur 0)
T
- Set from pitch relative to swaram. (dur 0)
^
- Set from pitch to current. (dur 0)
_
- Postfix call that modifies the duration of the previous call. _
adds 1 to it, .
divides by 2. (dur 0)
a
- Negative relative motion.
b
- Negative relative motion.
c
- Negative relative motion.
e
- Pitch up by 1nn.
f
- Pitch down by 1nn.
g
- Pitch up by .5nn.
h
- Pitch down by .5nn.
n
- Pitch up by 1nn. (dur .5); Pitch down by 1nn. (dur .5)
u
- Pitch down by 1nn. (dur .5); Pitch up by 1nn. (dur .5)
v
- Absolute motion to next pitch.
sequence
:: Str [*-sequence]
— Pitch calls.
transition
env :: Signal (0 <= x <= 1) = .5
[transition, *-transition]
— Time for each pitch movement, in proportion of the total time available.
gamakam-above
env :: Str (f t) = f
[gamakam-above]
— Expect pitch and gamakam tracks above the note track.
india.gamakam6
(1 calls)gamak
-- gamakindia.gamakam6
: control transformerindia.gamakam6.pitch
(1 calls)!
-- sequenceindia.gamakam6.pitch
: control generatorPitch Duration | ']' Pitch | Alias
. A plain Pitch moves to that pitch, ]
Pitch sets the From running pitch to the given Pitch, but has zero duration, and Alias is a single letter, which is itself mapped to a sequence.
[=<>][+\^v]? | #?[-9-9a-d]? [+\^v]?
. =<>
are the running From pitch, Prev pitch, or Next pitch, and [+\^v] add or subtract 1nn, or .5nn, respectively. A number is steps from the current swaram, and a-d are shorthand for -1 to -4.
_
or .
, where each one doubles or halves the duration. :
and ;
stand for short or long absolute duration.
C
- ]0
N
- #0+.#0\
U
- #0\.#0+.
n
- #0^.#0v.
u
- #0v.#0^.
sequence
:: Str [*-sequence]
— Pitch calls.
transition
env :: Signal (0 <= x <= 1) = .5
[transition, *-transition]
— Time for each pitch movement, in proportion of the total time available.
prelude
(66 calls)'
-- set-prevprelude
: control generator->
-- redirectprelude
: control transformercontrol
:: Control ([a-z][a-z0-9.-]*) [*-control]
— Redirect to this control.
->+
-- redirectprelude
: control transformeradd
.control
:: Control ([a-z][a-z0-9.-]*) [*-control]
— Redirect to this control.
=
-- equalprelude
: control transformer_
: x = 42
or x = _
.
>>
- Create a note transformer, whose name will be prefixed with >
. This is used to set an instrument transformer, which can apply a transformer when an instrument is set by the title of a note track, as implemented by by note-track
.
-val
- Bind a val call.
^note
, *pitch
, .control
- Bind the respective call type generator.
^-note
, *-pitch
, .-control
- As above, but bind transformer.
>alias = >inst
- alias instrument name
^phrase = some-block
, note transformer: ^-mute = +mute+loose
, control transfomrer: .-i = t
, val call: -4c = (5c)
.
ky
file. It has more space available so it can use a more readable syntax.
^abc = "(a b c)
will create a abc
call, which is a macro for a b c
. The created call does not take arguments.
#
, e.g. # = (4c)
or # = 45nn
. Control signal assignment also supports the same merge functions as the control track: a = .5 add
or a = %b add
. However, the second example throws an error if %b
is a ControlFunction. a = .5 default
will combine with a
's default merge function. Assigning to _
unsets the control, and any ControlFunction.
=
operator can be suffixed with symbol, which will become the last argument, so %x=+1
becomes %x = 1 '+'
. Note that the order is backwards from the usual +=
, which is ultimately because the first word can have almost any character except space and =
. Also, x=-1
is ambiguous, and parsed as x =- 1
.lhs
:: Str []
— Assign to this. This looks like a Str, but can actualy contain any characters except =
, due to the special infix parsing for =
. Symbolic prefixes determine what is assigned, and the valid types for the rhs.
rhs
:: Val []
— Source of the assignment.
merge
:: Str = set
[*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
`ped`
-- pedalprelude
: control generatorped
-- pedal
val
:: Signal = 1
[*-val]
— Set to this value.
dur
env :: Signal (RealTime) = .05
[*-dur]
— Use this duration if the event duration is 0.
abs
-- absprelude
: control generatorval
:: Signal [*-val]
— Set to this value.
alt
-- alternateprelude
: control generatorexpr
+ :: Quoted []
— Expression to evaluate.
alt-w
-- alternate-weightedprelude
: control generatorexpr
+ :: (Signal, Quoted) []
— (weight, expr) pairs.
bp>
-- breakpointprelude
: control generatorval
+ :: Signal []
— Breakpoints are distributed evenly between this event and the next event.
bpm
-- bpmprelude
: control generatorbpm
:: Signal [*-bpm]
d
-- dprelude
: control generatorspeed
:: Signal = 1
[*-speed]
— Descend this amount per second.
limit
:: Signal = 0
[*-limit]
— Stop at this value.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
d
-- delayprelude
: control transformertime
:: Signal (Time, default real) = .1s
[*-time]
— Delay time.
default-merge
-- default-mergeprelude
: control transformermerge
:: Str [*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
control
+ :: Control ([a-z][a-z0-9.-]*) []
— Control names.
df
-- dfprelude
: control generatord
with from
, but more convenient to write.
from
:: Signal = 1
[*-from]
— Start at this value.
speed
:: Signal = 1
[*-speed]
— Descend this amount per second.
limit
:: Signal = 0
[*-limit]
— Stop at this value.
dyn-f
-- fprelude
: control generatordyn
control, so a part can override the dynamic in scope.
val
:: Signal = .75
[*-val]
— Set to this value.
dyn-ff
-- ffprelude
: control generatordyn
control, so a part can override the dynamic in scope.
val
:: Signal = .95
[*-val]
— Set to this value.
dyn-mf
-- mfprelude
: control generatordyn
control, so a part can override the dynamic in scope.
val
:: Signal = .5
[*-val]
— Set to this value.
dyn-p
-- pprelude
: control generatordyn
control, so a part can override the dynamic in scope.
val
:: Signal = .25
[*-val]
— Set to this value.
dyn-pp
-- ppprelude
: control generatordyn
control, so a part can override the dynamic in scope.
val
:: Signal = .05
[*-val]
— Set to this value.
e
-- exponprelude
: control generatorto
:: Signal [*-to]
— Destination value.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
e<<
-- expon-prev-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
e>
-- expon-nextprelude
: control generatorto
:: Signal [*-to]
— Destination value.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
e>>
-- expon-next-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
h
-- holdprelude
: control transformertime
:: Signal (Time, default real) = .25s
[*-time]
— Hold this long.
i
-- linearprelude
: control generatorto
:: Signal [*-to]
— Destination value.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
i<<
-- linear-prev-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
i>
-- linear-nextprelude
: control generatorto
:: Signal [*-to]
— Destination value.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
i>>
-- linear-next-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
if-c<
-- if-c<prelude
: control generatorif-c>
-- if-c<
control
:: Control ([a-z][a-z0-9.-]*) [*-control]
— Test this control.
tests
+ :: Val []
— (value, expr) pairs.
if-e
-- if-eprelude
: control generatorname
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
true
:: Quoted [*-true]
— Eval if true.
false
:: Quoted [*-false]
— Eval if false.
import
-- importprelude
: control transformermodule
+ :: Str []
— Import these modules.
imports
-- import-symbolprelude
: control transformermodule
:: Str [*-module]
— Import this module.
symbol
+ :: Str []
— Import these symbols.
log-seed
-- log-seedprelude
: control transformerseed=xyz
.
n
-- neighborprelude
: control generatorneighbor
:: Signal = 1
[*-neighbor]
— Start at this value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time taken to get to 0.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
omit
-- omitprelude
: control transformerchance
:: Signal = .5
[*-chance]
— Chance, from 0 to 1, that the transformed note will be omitted.
on-repeat
-- on-repeatprelude
: control generatorrepeat
variable, where an out of range index is clamped to be in range.
repeat
+ :: Quoted []
— Eval on nth repeat.
p
-- portaprelude
: control generatori>>
, but intended to be higher level, in that instruments or scores can override it to represent an idiomatic portamento.
to
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
place
:: Signal (0 <= x <= 1) = 1
[place, *-place]
— Placement, from before to after the call.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
pattern:block name
-- control-blockprelude
: control generator%
. The signal from that track will be substituted.
pattern:numbers and hex
-- setprelude
: control generator`0x`xx
. The hex is divided by 255, so they represent a number between 0 and 1.
pattern:numbers and hex
-- setprelude
: control transformerquantize
-- quantizeprelude
: control transformerval
:: Signal [*-val]
— Quantize to multiples of this value.
s
-- sigmoidprelude
: control generatorto
:: Signal [*-to]
— Destination value.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
s<<
-- sigmoid-prev-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
s>
-- sigmoid-nextprelude
: control generatorto
:: Signal [*-to]
— Destination value.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
s>>
-- sigmoid-next-constprelude
: control generatorto
:: Signal [*-to]
— Destination value.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
saw
-- sawprelude
: control generatorfrom
and to
.
speed
:: time signal (default real) = 10
[speed, *-speed]
— Repeat at this speed. If it's a RealTime, the value is the number of repeats per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of repeats per ScoreTime unit, and will stretch along with tempo changes.
from
:: Signal = 1
[*-from]
— Start from this value.
to
:: Signal = 0
[*-to]
— End at this value.
scale
-- scaleprelude
: control transformerscale
:: Str [scale]
— Look up scale by name.
args
* :: Val []
— Scale arguments.
set
-- setprelude
: control generatorto
:: Signal [*-to]
— Destination value.
sh
-- shprelude
: control transformerspeed
:: time signal (default real) = 10
[speed, *-speed]
— Repeat at this speed. If it's a RealTime, the value is the number of repeats per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of repeats per ScoreTime unit, and will stretch along with tempo changes.
sine
-- sineprelude
: control generatorsine+
-- sine
sine-
-- sine
offset
, and the +
and -
variants are above and below it, respectively.
speed
:: time signal (default real) = 1s
[*-speed]
— Frequency.
amp
:: Signal = 1
[*-amp]
— Amplitude, measured center to peak.
offset
:: Signal = 0
[*-offset]
— Center point.
slew
-- slewprelude
: control transformerslope
:: Signal [*-slope]
— Maximum allowed slope, per second.
smooth
-- smoothprelude
: control transformertime
:: Signal (Time, default real) [*-time]
— Amount of time to reach to the next sample. If negative, it will end on the destination sample rather than start on it. The time will be compressed if the samples are too close, so unlike slew
, this will always reach the samples in the source.
curve
:: PFunction = curve-linear
[*-curve]
— Curve function.
swell
-- swellprelude
: control generatorval
:: Signal [*-val]
— Start value.
peak
:: Signal = 1
[*-peak]
— Interpolate to this value.
bias
:: Signal = .5
[*-bias]
— 0 puts the peak at the start, 1 at the end.
tr
-- trprelude
: control generatorneighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr-^
-- trprelude
: control generatortr-_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr^
-- trprelude
: control generatortr_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr^^
-- trprelude
: control generatortr^_
-- tr
tr_^
-- tr
tr__
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
trs
-- trprelude
: control generatorneighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs-^
-- trprelude
: control generatortrs-_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs^
-- trprelude
: control generatortrs_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs^^
-- trprelude
: control generatortrs^_
-- tr
trs_^
-- tr
trs__
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
neighbor
:: untyped signal = 1
[*-neighbor]
— Alternate with this value.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
u
-- uprelude
: control generatorspeed
:: Signal = 1
[*-speed]
— Ascend this amount per second.
limit
:: Maybe Signal = _
[*-limit]
— Stop at this value.
from
env :: Maybe Signal = _
[from, *-from]
— Start from this value. If unset, use the previous value.
control-gt-0
env :: Str (f t) = f
[control-gt-0]
— Whether or not to limit to 1 by default.
uf
-- ufprelude
: control generatorfrom
:: Signal = 0
[*-from]
— Start at this value.
speed
:: Signal = 1
[*-speed]
— Ascend this amount per second.
limit
:: Signal = 1
[*-limit]
— Stop at this value.
unless-c
-- when-cprelude
: control transformerwhen-c
-- when-c
%var
control to select among different variations.
val
:: Signal (integral) [*-val]
— Value.
control
:: Signal = 0
[*-control]
— Control.
unless-e
-- when-eprelude
: control transformerwhen-e
-- when-e
name
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
xcut
-- xcutprelude
: control generatorxcut-h
-- xcut
-h
variant holds the value at the beginning of each transition.
fst
:: Signal = 1
[*-fst]
— First value.
snd
:: Signal = 0
[*-snd]
— Second value.
speed
:: time signal (default real) = 14
[*-speed]
— Speed.
china.zheng
(1 calls)tr
-- trchina.zheng
: pitch generatortr^
-- tr
tr_
-- tr
pitch
:: Pitch [*-pitch]
— Base pitch.
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
speed
:: time signal (default real) = 20
[*-speed]
— Alternate pitches at this speed.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
india.gamakam
(4 calls)^kam
-- kamindia.gamakam
: pitch generator^kam^
-- kam
^kam_
-- kam
_kam
-- kam
_kam^
-- kam
_kam_
-- kam
kam
-- kam
kam^
-- kam
kam_
-- kam
pitch
:: Pitch [*-pitch]
— Base pitch.
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .08s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[lilt, *-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
dip
-- dipindia.gamakam
: pitch generatordyn
on the second. This is useful when avoiding a swaram, since it doesn't necessarily emit the base pitch.
pitch
:: Pitch [*-pitch]
— Base pitch.
high
:: Signal (Transposition, default diatonic) = 1d
[*-high]
— High interval.
low
:: Signal = -1
[*-low]
— Low interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
dyn
:: Signal = .5
[*-dyn]
— Multiply dyn by this amount.
transition
env :: Signal (RealTime) = .08s
[transition, *-transition]
— Time for each slide.
jaru
-- jaruindia.gamakam
: pitch generatorpitch
:: Pitch [*-pitch]
— Base pitch.
interval
+ :: Signal (Transposition, default diatonic) []
— Intervals from base pitch.
time
env :: Signal (RealTime) = .15s
[time, *-time]
— Time for each note.
transition
env :: Maybe Signal (RealTime) = _
[transition, *-transition]
— Time for each slide, defaults to time
.
sgr
-- jaruindia.gamakam
: pitch generatorjaru
hardcoded to [-1, 1]
.
pitch
:: Pitch [*-pitch]
— Base pitch.
time
:: Signal (RealTime) = .15s
[*-time]
— Time for each note.
transition
:: Maybe Signal (RealTime) = _
[*-transition]
— Time for each slide, defaults to time
.
india.gamakam2
(13 calls)cur
-- fromindia.gamakam2
: pitch generatorcur<
-- from
from
:: Maybe Pitch or Signal (Transposition) = _
[*-from]
— Come from this pitch, or the previous one.
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination.
to
:: Maybe Pitch or Signal (Transposition) = _
[*-to]
— Go to this pitch, or the current one.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
fade-in
-- fadeindia.gamakam2
: pitch generatortime
:: Signal (Time, default real) = .15s
[*-time]
— Time to fade.
fade-out
-- fadeindia.gamakam2
: pitch generatortime
:: Signal (Time, default real) = .15s
[*-time]
— Time to fade.
flat
-- flatindia.gamakam2
: pitch generatorpitch
:: Maybe Pitch or Signal (Transposition) = _
[*-pitch]
— Emit this pitch, or continue the previous pitch if not given.
flat-end
-- flat-endindia.gamakam2
: pitch generatorflat-start
-- flat-start
pitch
:: Maybe Pitch or Signal (Transposition) = _
[*-pitch]
— Emit this pitch, or continue the previous pitch if not given.
time
:: Signal (Time, default real) = .15s
[*-time]
— Pitch lasts for this duration.
jaru
-- jaruindia.gamakam2
: pitch generatorjaru0
-- jaru
interval
+ :: Signal (Transposition, default diatonic) []
— Intervals from base pitch.
time
env :: Signal (Time, default real) = .12s
[time, *-time]
— Time for each note.
transition
env :: Maybe Signal (RealTime) = _
[transition, *-transition]
— Time for each slide, defaults to time
.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
kam
-- kamindia.gamakam2
: pitch generatorkam^
-- kam
kam_
-- kam
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
kam2
-- kamindia.gamakam2
: pitch generatorkam2^
-- kam
kam2_
-- kam
pitch1
:: transpose signal (default nn) = 0
[*-pitch1]
— First interval.
pitch2
:: transpose signal (default nn) = 1
[*-pitch2]
— Second interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
nkam
-- nkamindia.gamakam2
: pitch generatornkam^
-- nkam
nkam_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
nkam2
-- nkamindia.gamakam2
: pitch generatornkam2^
-- nkam
nkam2_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
pitch1
:: transpose signal (default nn) = 0
[*-pitch1]
— First interval.
pitch2
:: transpose signal (default nn) = 1
[*-pitch2]
— Second interval.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
prev
-- fromindia.gamakam2
: pitch generatorprev<
-- from
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination.
to
:: Maybe Pitch or Signal (Transposition) = _
[*-to]
— Go to this pitch, or the current one.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
set-pitch
-- set-pitchindia.gamakam2
: pitch generatorto
-- toindia.gamakam2
: pitch generatorto>
-- to
pitch
:: Pitch or Signal (Transposition) [*-pitch]
— Go to this pitch or interval.
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination pitch.
india.gamakam2.begin
(5 calls)-
-- flat-startindia.gamakam2.begin
: pitch generatorpitch
:: Maybe Pitch or Signal (Transposition) = _
[*-pitch]
— Emit this pitch, or continue the previous pitch if not given.
time
:: Signal (Time, default real) = .15s
[*-time]
— Pitch lasts for this duration.
-<
-- fadeindia.gamakam2.begin
: pitch generatortime
:: Signal (Time, default real) = .15s
[*-time]
— Time to fade.
c
-- fromindia.gamakam2.begin
: pitch generatorc<
-- from
from
:: Maybe Pitch or Signal (Transposition) = _
[*-from]
— Come from this pitch, or the previous one.
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination.
to
:: Maybe Pitch or Signal (Transposition) = _
[*-to]
— Go to this pitch, or the current one.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
J
-- jaruindia.gamakam2.begin
: pitch generatorj
-- jaru
interval
+ :: Signal (Transposition, default diatonic) []
— Intervals from base pitch.
time
env :: Signal (Time, default real) = .12s
[time, *-time]
— Time for each note.
transition
env :: Maybe Signal (RealTime) = _
[transition, *-transition]
— Time for each slide, defaults to time
.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
p
-- fromindia.gamakam2.begin
: pitch generatorp<
-- from
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination.
to
:: Maybe Pitch or Signal (Transposition) = _
[*-to]
— Go to this pitch, or the current one.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
india.gamakam2.end
(3 calls)-
-- flat-endindia.gamakam2.end
: pitch generatorpitch
:: Maybe Pitch or Signal (Transposition) = _
[*-pitch]
— Emit this pitch, or continue the previous pitch if not given.
time
:: Signal (Time, default real) = .15s
[*-time]
— Pitch lasts for this duration.
->
-- fadeindia.gamakam2.end
: pitch generatortime
:: Signal (Time, default real) = .15s
[*-time]
— Time to fade.
t
-- toindia.gamakam2.end
: pitch generatort>
-- to
pitch
:: Pitch or Signal (Transposition) [*-pitch]
— Go to this pitch or interval.
transition
:: Signal (Time, default real) = .12s
[*-transition]
— Time to destination pitch.
india.gamakam2.middle
(7 calls)-
-- flatindia.gamakam2.middle
: pitch generatorpitch
:: Maybe Pitch or Signal (Transposition) = _
[*-pitch]
— Emit this pitch, or continue the previous pitch if not given.
k
-- kamindia.gamakam2.middle
: pitch generatork^
-- kam
k_
-- kam
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
k2
-- kamindia.gamakam2.middle
: pitch generatork2^
-- kam
k2_
-- kam
pitch1
:: transpose signal (default nn) = 0
[*-pitch1]
— First interval.
pitch2
:: transpose signal (default nn) = 1
[*-pitch2]
— Second interval.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
nk
-- nkamindia.gamakam2.middle
: pitch generatornk^
-- nkam
nk_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
neighbor
:: transpose signal (default nn) = 1
[*-neighbor]
— Alternate with a pitch at this interval.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
nk2
-- nkamindia.gamakam2.middle
: pitch generatornk2^
-- nkam
nk2_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
pitch1
:: transpose signal (default nn) = 0
[*-pitch1]
— First interval.
pitch2
:: transpose signal (default nn) = 1
[*-pitch2]
— Second interval.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
no*
-- nkamindia.gamakam2.middle
: pitch generatorno^
-- nkam
no_
-- nkam
kam
with a set number of cycles. The speed adjusts to fit the cycles in before the next event.
k
variants:
o^
touches the swaram from above, like k2^ 1 0
.
o_
touches the swaram from below, like k2_ -1 0
.
o*
avoids the swaram, like k2_ -1 1
.
cycles
:: Signal (>0) = 1
[*-cycles]
— Number of cycles.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
o*
-- kamindia.gamakam2.middle
: pitch generatoro^
-- kam
o_
-- kam
k
variants:
o^
touches the swaram from above, like k2^ 1 0
.
o_
touches the swaram from below, like k2_ -1 0
.
o*
avoids the swaram, like k2_ -1 1
.
speed
:: time signal (default real) = 6
[*-speed]
— Alternate pitches at this speed.
transition
:: Signal (RealTime) = .12s
[transition, *-transition]
— Time for each slide.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
lilt
env :: Signal = 0
[*-lilt]
— Lilt is a horizontal bias to the vibrato. A lilt of 1 would place each neighbor on top of the following unison, while -1 would place it on the previous one. So it should range from -1 < lilt < 1.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
prelude
(54 calls)'
-- set-prevprelude
: pitch generator*
-- multiplyprelude
: pitch generatorpitch
:: Pitch [*-pitch]
— Source pitch.
interval
:: Signal or Str = 0
[*-interval]
— Multiply this interval with the note's frequency. Negative numbers divide, so while 3/2
goes up a fifth, -3/2
goes down a fifth. Can be either a ratio or a symbol drawn from: M2
, M2-
, M3
, M6
, M7
, P4
, P5
, m2
, m2-
, m3
, m6
, m7
, tt
, tt11
, tt7+
, tt7-
, wolf
=
-- equalprelude
: pitch transformer_
: x = 42
or x = _
.
>>
- Create a note transformer, whose name will be prefixed with >
. This is used to set an instrument transformer, which can apply a transformer when an instrument is set by the title of a note track, as implemented by by note-track
.
-val
- Bind a val call.
^note
, *pitch
, .control
- Bind the respective call type generator.
^-note
, *-pitch
, .-control
- As above, but bind transformer.
>alias = >inst
- alias instrument name
^phrase = some-block
, note transformer: ^-mute = +mute+loose
, control transfomrer: .-i = t
, val call: -4c = (5c)
.
ky
file. It has more space available so it can use a more readable syntax.
^abc = "(a b c)
will create a abc
call, which is a macro for a b c
. The created call does not take arguments.
#
, e.g. # = (4c)
or # = 45nn
. Control signal assignment also supports the same merge functions as the control track: a = .5 add
or a = %b add
. However, the second example throws an error if %b
is a ControlFunction. a = .5 default
will combine with a
's default merge function. Assigning to _
unsets the control, and any ControlFunction.
=
operator can be suffixed with symbol, which will become the last argument, so %x=+1
becomes %x = 1 '+'
. Note that the order is backwards from the usual +=
, which is ultimately because the first word can have almost any character except space and =
. Also, x=-1
is ambiguous, and parsed as x =- 1
.lhs
:: Str []
— Assign to this. This looks like a Str, but can actualy contain any characters except =
, due to the special infix parsing for =
. Symbolic prefixes determine what is assigned, and the valid types for the rhs.
rhs
:: Val []
— Source of the assignment.
merge
:: Str = set
[*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
`mordent`
-- mordentprelude
: pitch generatorg
, but hardcoded to play pitch, neighbor, pitch.pitch
:: Pitch [*-pitch]
— Base pitch.
neighbor
:: Signal (Transposition, default diatonic) = 1d
[*-neighbor]
— Neighbor pitch.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
`rmordent`
-- mordentprelude
: pitch generatorg
, but hardcoded to play pitch, neighbor, pitch.pitch
:: Pitch [*-pitch]
— Base pitch.
neighbor
:: Signal (Transposition, default diatonic) = -1d
[*-neighbor]
— Neighbor pitch.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
a
-- approachprelude
: pitch generatortime
:: Signal (Time, default real) = .2s
[*-time]
— Time to get to destination.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
ad
-- approach-dynprelude
: pitch generatorapproach
, slide to the next pitch, but also drop the dyn
.time
:: Signal (Time, default real) = .2s
[*-time]
— Time to get to destination pitch and dyn.
dyn
:: Signal = .25
[*-dyn]
— Drop dyn
by this factor.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
alt
-- alternateprelude
: pitch generatorexpr
+ :: Quoted []
— Expression to evaluate.
alt-w
-- alternate-weightedprelude
: pitch generatorexpr
+ :: (Signal, Quoted) []
— (weight, expr) pairs.
d
-- downprelude
: pitch generatorslope
:: Signal (Transposition) = 1c
[*-slope]
— Descend this many steps per second.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
d
-- delayprelude
: pitch transformertime
:: Signal (Time, default real) = .1s
[*-time]
— Delay time.
default-merge
-- default-mergeprelude
: pitch transformermerge
:: Str [*-merge]
— Merge operator. This can be default
to use the default for the control, set
to replace the old signal, or one of the operators from 'Derive.Deriver.Monad.mergers': add
, mul
, scale
, set
, sub
. There are also symbolic aliases, to support =+
syntax: {"*": "mul", "+": "add", "-": "sub", "@": "scale"}
control
+ :: Control ([a-z][a-z0-9.-]*) []
— Control names.
drop
-- dropprelude
: pitch generatordyn
.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
e
-- exponprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
e<<
-- expon-prev-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
e>
-- expon-nextprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
e>>
-- expon-next-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
expon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
g
-- graceprelude
: pitch generatorg (c) (a) (b)
produces a b c
.pitch
:: Pitch [*-pitch]
— Base pitch.
pitch
* :: Pitch or Signal []
— Grace note pitches. If they are numbers, they are taken as transpositions and must all be the same type, defaulting to diatonic.
dur
env :: Signal (Time, default real) = .083s
[dur, *-dur]
— Duration of grace notes.
h
-- holdprelude
: pitch transformertime
:: Signal (Time, default real) = .25s
[*-time]
— Hold this long.
i
-- linearprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
i<<
-- linear-prev-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
i>
-- linear-nextprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
i>>
-- linear-next-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
if-c<
-- if-c<prelude
: pitch generatorif-c>
-- if-c<
control
:: Control ([a-z][a-z0-9.-]*) [*-control]
— Test this control.
tests
+ :: Val []
— (value, expr) pairs.
if-e
-- if-eprelude
: pitch generatorname
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
true
:: Quoted [*-true]
— Eval if true.
false
:: Quoted [*-false]
— Eval if false.
import
-- importprelude
: pitch transformermodule
+ :: Str []
— Import these modules.
imports
-- import-symbolprelude
: pitch transformermodule
:: Str [*-module]
— Import this module.
symbol
+ :: Str []
— Import these symbols.
lift
-- liftprelude
: pitch generatordyn
. This is the same as drop
, except that it defaults to going up instead of down.interval
:: Signal (Transposition) or Pitch = 7c
[*-interval]
— Interval or destination pitch.
time
:: Signal (Time, default real) = .25s
[*-time]
— Time to the destination pitch.
fade
:: Maybe Signal (Time, default real) = _
[*-fade]
— Time to fade from or to nothing. If the fade is longer than the pitch time, the pitch will finish moving before the dyn has faded out.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
log-seed
-- log-seedprelude
: pitch transformerseed=xyz
.
n
-- neighborprelude
: pitch generatorpitch
:: Pitch [*-pitch]
— Destination pitch.
neighbor
:: Signal (Transposition) = 1c
[*-neighbor]
— Neighobr interval.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to get to destination.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
omit
-- omitprelude
: pitch transformerchance
:: Signal = .5
[*-chance]
— Chance, from 0 to 1, that the transformed note will be omitted.
on-repeat
-- on-repeatprelude
: pitch generatorrepeat
variable, where an out of range index is clamped to be in range.
repeat
+ :: Quoted []
— Eval on nth repeat.
p
-- portaprelude
: pitch generatori>>
, but intended to be higher level, in that instruments or scores can override it to represent an idiomatic portamento.
pitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
place
:: Signal (0 <= x <= 1) = 1
[place, *-place]
— Placement, from before to after the call.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
s
-- sigmoidprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
s<<
-- sigmoid-prev-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination, starting before the event.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
s>
-- sigmoid-nextprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
s>>
-- sigmoid-next-constprelude
: pitch generatorpitch
:: Pitch or Signal (Transposition) [*-pitch]
— Destination pitch, or a transposition from the previous one.
time
:: Signal (Time, default real) = .1s
[*-time]
— Time to reach destination.
w1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
scale
-- scaleprelude
: pitch transformerscale
:: Str [scale]
— Look up scale by name.
args
* :: Val []
— Scale arguments.
set
-- setprelude
: pitch generatorpitch
:: Signal (NN) or Pitch [*-pitch]
— Set this pitch.
set
-- setprelude
: pitch transformerpitch
:: Signal (NN) or Pitch [*-pitch]
— Set this pitch.
set-or-move
-- set-or-moveprelude
: pitch generatorpitch
:: Signal (NN) or Pitch [*-pitch]
— Set this pitch.
time
:: Signal (Time, default real) = .15s
[*-time]
— Time to move to the pitch.
sh
-- shprelude
: pitch transformerspeed
:: time signal (default real) = 10
[speed, *-speed]
— Repeat at this speed. If it's a RealTime, the value is the number of repeats per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of repeats per ScoreTime unit, and will stretch along with tempo changes.
tr
-- trprelude
: pitch generatornote
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr-^
-- trprelude
: pitch generatortr-_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr^
-- trprelude
: pitch generatortr_
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
tr^^
-- trprelude
: pitch generatortr^_
-- tr
tr_^
-- tr
tr__
-- tr
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
tr-transition
env :: untyped signal = 0
[tr-transition]
— Take this long to reach the neighbor, as a proportion of time available.
trs
-- trsprelude
: pitch generatortr
, but with defaults for smooth transitions.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs-^
-- trsprelude
: pitch generatortrs-_
-- trs
tr
, but with defaults for smooth transitions.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-start
env :: Maybe Str (high low) = _
[tr-start]
— Which note the trill starts with. If not given, it will start the unison note, which means it may move up or down.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs^
-- trsprelude
: pitch generatortrs_
-- trs
tr
, but with defaults for smooth transitions.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
tr-end
env :: Maybe Str (high low) = _
[tr-end]
— Which note the trill ends with. If not given, it can end with either.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
trs^^
-- trsprelude
: pitch generatortrs^_
-- trs
trs_^
-- trs
trs__
-- trs
tr
, but with defaults for smooth transitions.
^
suffix makes the trill starts on the higher value, while _
makes it start on the lower value. A second suffix causes it to end on the higher or lower value, e.g. ^_
starts high and ends low. -_
has start unspecified, and ends low. No suffix causes it to obey the settings in scope.
note
:: Pitch [*-note]
— Base pitch.
neighbor
:: transpose signal (default diatonic) or Pitch = 1
[*-neighbor]
— Alternate with an interval or pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Trill at this speed. If it's a RealTime, the value is the number of cycles per second, which will be unaffected by the tempo. If it's a ScoreTime, the value is the number of cycles per ScoreTime unit, and will stretch along with tempo changes. In either case, this will emit only whole notes, i.e. it will end sooner to avoid emitting a cut-off note at the end.
hold
env :: Signal (Time, default real) = 0s
[hold, *-hold]
— Time to hold the first note.
adjust
env :: Str (shorten stretch) = shorten
[adjust, *-adjust]
— How to adjust a trill to fulfill its start and end pitch restrictions.
tr-bias
env :: Signal (-1 <= x <= 1) = 0
[tr-bias]
— Offset every other transition by this amount.
u
-- upprelude
: pitch generatorslope
:: Signal (Transposition) = 1c
[*-slope]
— Ascend this many steps per second.
from
env :: Maybe Pitch = _
[from, *-from]
— Start from this pitch. If unset, use the previous pitch.
curve
env :: PFunction = curve-linear
[curve, *-curve]
— Curve function.
unless-c
-- when-cprelude
: pitch transformerwhen-c
-- when-c
%var
control to select among different variations.
val
:: Signal (integral) [*-val]
— Value.
control
:: Signal = 0
[*-control]
— Control.
unless-e
-- when-eprelude
: pitch transformerwhen-e
-- when-e
name
:: Str [*-name]
— Environ key.
value
:: Maybe Val = _
[*-value]
— Environ value. If not given, require only that the environ key is set.
xcut
-- xcutprelude
: pitch generatorxcut-h
-- xcut
-h
variant holds the value at the beginning of each transition.
fst
:: PSignal [*-fst]
— First pitch.
snd
:: PSignal [*-snd]
— Second pitch.
speed
:: time signal (default real) = 14
[*-speed]
— Speed.
prelude
(35 calls)ts
-- timestepprelude
: val valrank
:: Str (section w h q e s t32 t64 t128 t256) [*-rank]
— Emit a duration of this rank.
steps
:: Signal (integral) = 1
[*-steps]
— This number of steps of that rank.
rt
-- realtimeprelude
: val valval
:: Signal []
st
-- scoretimeprelude
: val valval
:: Signal []
nn
-- nnprelude
: val val[a-g]s?[-1-9]
.
val
:: Pitch or Signal or Str [*-val]
hz
-- hzprelude
: val val[a-g]s?[-1-9]
. If the octave isn't given, it defaults to 0. This is useful for %just-base
, which ignores the octave.
val
:: Pitch or Str or Signal [*-val]
bpm
-- bpmprelude
: val valbpm
:: Signal [*-bpm]
#
-- pcontrol-refprelude
: val val#name
syntax suffices, but if you want to give a default pitch, you need this call. This is because pitches are calls, and while %c,1
can be parsed as-is, #p,(4c)
needs an evaluation.
name
:: Str [*-name]
— Name of pitch signal.
default
:: Maybe Pitch = _
[*-default]
— Default pitch, if the signal is not set.
pitch
-- pitchprelude
: val valoct
:: Signal (integral) or Str or Pitch = 0
[]
— Octave, or a pitch name or pitch. If it's a pitch name or pitch, the pc
and accs
args must be 0.
pc
:: Signal (integral) = 0
[]
— Pitch class.
accs
:: Signal (integral) = 0
[]
— Accidentals.
list
-- listprelude
: val valval
* :: Val []
— Value.
psignal
-- psignalprelude
: val valbreakpoints
* :: (Signal (RealTime), Pitch) []
— Breakpoints.
signal
-- signalprelude
: val valtype
? :: Str = ''
[]
— Type code.
breakpoints
* :: (Signal (RealTime), Signal) []
— Breakpoints.
e>
-- exp-nextprelude
: val valexp
:: Signal = 2
[*-exp]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
bp
+ :: Val []
— Breakpoints are distributed evenly between the event start and the next event. They can be all numbers, or all pitches.
i>
-- linear-nextprelude
: val valbp
+ :: Val []
— Breakpoints are distributed evenly between the event start and the next event. They can be all numbers, or all pitches.
1/
-- reciprocalprelude
: val valnum
:: Signal [*-num]
<-#
-- pitchprelude
: val valcontrol
:: PControl (#[a-z][a-z0-9.-]*) = ''
[*-control]
— The default pitch if empty, otherwise, get the named pitch.
df
-- down-fromprelude
: val valfrom
:: Signal = 1
[*-from]
— Start at this value.
speed
:: Signal = 1
[*-speed]
— Descend this amount per second.
env
-- envprelude
: val valname
:: Str [*-name]
— Look up the value of this key.
default
:: Maybe Val = _
[*-default]
— If given, this is the default value when the key isn't present. If not given, a missing key will throw an exception. The presence of a default will also make the lookup expect the same type as the default.
lrange
-- rangeprelude
: val valstart
:: Signal [*-start]
— Start value.
step
:: Signal [*-step]
— Step.
count
:: Signal [*-count]
— Number of values.
ts/
-- timestep-reciprocalprelude
: val valtimestep
except it returns the reciprocal. This is useful for e.g. trills which take cycles per second rather than duration.
rank
:: Str (section w h q e s t32 t64 t128 t256) [*-rank]
— Emit a duration of this rank.
steps
:: Signal (integral) = 1
[*-steps]
— This number of steps of that rank.
cf-swing
-- cf-swingprelude
: val valstart-s
. The curve is a sine wave, from trough to trough.rank
:: Str (section w h q e s t32 t64 t128 t256) = q
[*-rank]
— The time steps are on the beat, and midway between offset by the given amount.
amount
:: Val = %swing,.333
[*-amount]
— Swing amount, multiplied by the rank duration / 2.
cf-clamp
-- cf-clampprelude
: val valcf
:: CFunction [*-cf]
— Control function.
low
:: Signal = 0
[*-low]
— Low value.
high
:: Signal = 1
[*-high]
— High value.
curve-expon
-- curve-exponprelude
: val valexpon
:: Signal = 2
[*-expon]
— Slope of an exponential curve. Positive n
is taken as x^n
and will generate a slowly departing and rapidly approaching curve. Negative -n
is taken as x^1/n
, which will generate a rapidly departing and slowly approaching curve.
curve-linear
-- curve-linearprelude
: val valcurve-sigmoid
-- curve-sigmoidprelude
: val valw1
:: Signal = .5
[*-w1]
— Start weight.
w2
:: Signal = .5
[*-w2]
— End weight.
curve-jump
-- curve-jumpprelude
: val valcurve-const
-- curve-constprelude
: val valcf-rnd-a
-- cf-rnd-aprelude
: val valcf-rnd-a*
-- cf-rnd-a
cf-rnd-a+
-- cf-rnd-a
+
and *
variants add to and multiply with it.range
:: Signal [*-range]
— Range this far from the center.
center
:: Signal = 0
[*-center]
— Center of the range.
distribution
env :: Str (uniform normal bimodal) = normal
[*-distribution]
— Random distribution.
cf-rnd
-- cf-rndprelude
: val valcf-rnd*
-- cf-rnd
cf-rnd+
-- cf-rnd
+
and *
variants add to and multiply with it.low
:: Signal [*-low]
— Low end of the range.
high
:: Signal [*-high]
— High end of the range.
distribution
env :: Str (uniform normal bimodal) = normal
[*-distribution]
— Random distribution.
cf-rnd01
-- cf-rnd01prelude
: val val(cf-clamp (cf-rnd+ ..) 0 1)
.low
:: Signal [*-low]
— Low end of the range.
high
:: Signal [*-high]
— High end of the range.
distribution
env :: Str (uniform normal bimodal) = normal
[*-distribution]
— Random distribution.
>
-- next-valprelude
: val valnext-event
-- next-eventprelude
: val val<
-- prev-valprelude
: val valrange
-- rangeprelude
: val vallow
:: Signal = 0
[*-low]
— Bottom of range, inclusive.
high
:: Signal = 1
[*-high]
— Top of range, inclusive.
alt
-- alternateprelude
: val valval
+ :: Val []
— Value of any type.
alt-w
-- alternate-weightedprelude
: val valval
+ :: (Signal, Val) []
— (weight, val) pairs.