WIP
This commit is contained in:
@@ -260,10 +260,52 @@ pub const WORDS: &[Word] = &[
|
||||
Word {
|
||||
name: "@",
|
||||
stack: "(--)",
|
||||
desc: "Alias for emit",
|
||||
example: "\"kick\" s 0.5 at @ pop",
|
||||
desc: "Emit current sound, claim one time slot",
|
||||
example: "\"kick\" s @ @ @ @",
|
||||
compile: Alias("emit"),
|
||||
},
|
||||
Word {
|
||||
name: ".",
|
||||
stack: "(--)",
|
||||
desc: "Emit current sound, claim one time slot",
|
||||
example: "\"kick\" s . . . .",
|
||||
compile: Alias("emit"),
|
||||
},
|
||||
Word {
|
||||
name: "~",
|
||||
stack: "(--)",
|
||||
desc: "Silence, claim one time slot",
|
||||
example: "\"kick\" s @ ~ @ ~",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: ".!",
|
||||
stack: "(n --)",
|
||||
desc: "Emit current sound n times",
|
||||
example: "\"kick\" s 4 .!",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "div",
|
||||
stack: "(--)",
|
||||
desc: "Start a time subdivision scope",
|
||||
example: "div \"kick\" s . \"hat\" s . end",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "stack",
|
||||
stack: "(--)",
|
||||
desc: "Start a stacked subdivision scope (sounds stack/superpose)",
|
||||
example: "stack \"kick\" s . \"hat\" s . end",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "end",
|
||||
stack: "(--)",
|
||||
desc: "End a time subdivision scope",
|
||||
example: "div \"kick\" s . end",
|
||||
compile: Simple,
|
||||
},
|
||||
// Variables (prefix syntax: @name to fetch, !name to store)
|
||||
Word {
|
||||
name: "@<var>",
|
||||
@@ -538,88 +580,18 @@ pub const WORDS: &[Word] = &[
|
||||
compile: Simple,
|
||||
},
|
||||
// Time
|
||||
Word {
|
||||
name: "at",
|
||||
stack: "(pos --)",
|
||||
desc: "Position in time (push context)",
|
||||
example: "\"kick\" s 0.5 at emit pop",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "zoom",
|
||||
stack: "(start end --)",
|
||||
desc: "Zoom into time region",
|
||||
example: "0.0 0.5 zoom",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "scale!",
|
||||
stack: "(factor --)",
|
||||
desc: "Scale time context duration",
|
||||
desc: "Set weight of current time scope",
|
||||
example: "2 scale!",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "pop",
|
||||
stack: "(--)",
|
||||
desc: "Pop time context",
|
||||
example: "pop",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "div",
|
||||
stack: "(n --)",
|
||||
desc: "Subdivide time into n",
|
||||
example: "4 div",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "each",
|
||||
stack: "(--)",
|
||||
desc: "Emit at each subdivision",
|
||||
example: "4 div each",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "stack",
|
||||
stack: "(n --)",
|
||||
desc: "Create n subdivisions at same time",
|
||||
example: "3 stack",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "echo",
|
||||
stack: "(n --)",
|
||||
desc: "Create n subdivisions with halving durations (stutter)",
|
||||
example: "3 echo",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "necho",
|
||||
stack: "(n --)",
|
||||
desc: "Create n subdivisions with doubling durations (swell)",
|
||||
example: "3 necho",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "for",
|
||||
stack: "(quot --)",
|
||||
desc: "Execute quotation for each subdivision",
|
||||
example: "{ emit } 3 div for",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "loop",
|
||||
stack: "(n --)",
|
||||
desc: "Fit sample to n beats",
|
||||
example: "\"break\" s 4 loop emit",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
name: "|",
|
||||
stack: "(-- marker)",
|
||||
desc: "Start local cycle list",
|
||||
example: "| 60 62 64 |",
|
||||
example: "\"break\" s 4 loop @",
|
||||
compile: Simple,
|
||||
},
|
||||
Word {
|
||||
@@ -1543,12 +1515,8 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
|
||||
"ftom" => Op::Ftom,
|
||||
"?" => Op::When,
|
||||
"!?" => Op::Unless,
|
||||
"at" => Op::At,
|
||||
"zoom" => Op::Window,
|
||||
"~" => Op::Silence,
|
||||
"scale!" => Op::Scale,
|
||||
"pop" => Op::Pop,
|
||||
"div" => Op::Subdivide,
|
||||
"each" => Op::Each,
|
||||
"tempo!" => Op::SetTempo,
|
||||
"[" => Op::ListStart,
|
||||
"]" => Op::ListEnd,
|
||||
@@ -1556,10 +1524,6 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
|
||||
">>" => Op::ListEndPCycle,
|
||||
"adsr" => Op::Adsr,
|
||||
"ad" => Op::Ad,
|
||||
"stack" => Op::Stack,
|
||||
"for" => Op::For,
|
||||
"echo" => Op::Echo,
|
||||
"necho" => Op::Necho,
|
||||
"apply" => Op::Apply,
|
||||
"ramp" => Op::Ramp,
|
||||
"range" => Op::Range,
|
||||
@@ -1567,6 +1531,10 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
|
||||
"chain" => Op::Chain,
|
||||
"loop" => Op::Loop,
|
||||
"oct" => Op::Oct,
|
||||
"div" => Op::DivStart,
|
||||
"stack" => Op::StackStart,
|
||||
"end" => Op::DivEnd,
|
||||
".!" => Op::EmitN,
|
||||
_ => return None,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user