31 lines
685 B
Python
31 lines
685 B
Python
Pxo {
|
|
*new {
|
|
arg expression, divisor=1, repeats=inf;
|
|
var xoExp = Array.new(maxSize: expression.size);
|
|
expression.do({
|
|
arg char, i;
|
|
if (char == $x, {xoExp.add(1, i)}, {xoExp.add(Rest(), i)})
|
|
});
|
|
xoExp = xoExp.collect({arg item; item / divisor});
|
|
^Pseq.new(xoExp, repeats)
|
|
}
|
|
}
|
|
|
|
|
|
Ptx {
|
|
*new {
|
|
arg expression, repeats=inf;
|
|
var xoExp = Array.new(maxSize: expression.size);
|
|
expression.do({
|
|
arg char, i;
|
|
switch(char)
|
|
{$@} {xoExp.add(2, i)}
|
|
{$O} {xoExp.add(1, i)}
|
|
{$o} {xoExp.add(0.5, i)}
|
|
{$°} {xoExp.add(0.25, i)}
|
|
{} {xoExp.add(Rest(), i)};
|
|
});
|
|
^Pseq.new(xoExp, repeats)
|
|
}
|
|
}
|