What's new?
Version 2.0
Teletype version 2.0 represents a large rewrite of the Teletype code base. There are many new language additions, some small breaking changes and a lot of under the hood enhancements.
Breaking changes
Removed the need for the
IIOP.For example,
II MP.PRESET 1will become justMP.PRESET 1.Merge
MUTEandUNMUTEOPs toMUTE x/MUTE x y.See the documentation for
MUTEfor more information.Remove unused Meadowphysics
OPs.Removed:
MP.SYNC,MP.MUTE,MP.UNMUTE,MP.FREEZE,MP.UNFREEZE.Rename Ansible Meadowphysics
OPs to start withME.This was done to avoid conflicts with the Meadowphysics
OPs.
WARNING: If you restore your scripts from a USB memory stick, please manually fix any changes first. Alternatively, incorrect commands (due to the above changes) will be skipped when imported, please re-add them.
Major new features
Sub commands
e.g. IF X: CV 1 N 60 TR.PULSE 1.
See the section on "Sub commands" for more information.
Aliases
For example, use TR.P 1 instead of TR.PULSE 1, and use + 1 1, instead of ADD 1 1.
See the section on "Aliases" for more information.
PN versions of every P OP
There are now PN versions of every P OP. For example, instead of:
P.I 0
P.START 0
P.I 1
P.START 10
You can use:
PN.START 0 0
PN.START 1 10
TELEXi and TELEXo OPs
Lots of OPs have been added for interacting with the wonderful TELEXi input expander and TELEXo output expander. See their respective sections in the documentation for more information.
New keybindings
The function keys can now directly trigger a script.
The <tab> key is now used to cycle between live, edit and pattern modes, and there are now easy access keys to directly jump to a mode.
Many new text editing keyboard shortcuts have been added.
See the "Modes" documentation for a listing of all the keybindings.
USB memory stick support
You can now save you scenes to USB memory stick at any time, and not just at boot up. Just insert a USB memory stick to start the save and load process. Your edit scene should not be effected.
It should also be significantly more reliable with a wider ranger of memory sticks.
WARNING: Please backup the contents of your USB stick before inserting it. Particularly with a freshly flashed Teletype as you will end up overwriting all the saved scenes with blank ones.
Other additions
- Limited script recursion now allowed (max recursion depth is 8) including self recursion.
- Metro scripts limited to 25ms, but new
M!op to set it as low as 2ms (at your own risk), see "Metronome"OPsection for more.
Known issues
Visual glitches
The cause of these is well understood, and they are essentially harmless. Changing modes with the <tab> key will force the screen to redraw. A fix should hopefully be coming in version 2.1.
Tables in the PDF documentation
Unfortunately the tables in the PDF documentation are somewhat hard to read due to the lack of horizontal lines between rows.
Modes
Global key bindings
These bindings work everywhere.
| Key | Action |
|---|---|
<tab> |
change modes, live to edit to pattern and back |
<esc> |
preset read mode, or return to last mode |
alt-<esc> |
preset write mode |
win-<esc> |
clear delays, stack and slews |
<alt>-? |
help text, or return to last mode |
<F1> to <F8> |
run corresponding script |
<F9> |
run metro script |
<F10> |
run init script |
alt-<F1> to alt-<F8> |
edit corresponding script |
alt-<F9> |
edit metro script |
alt-<F10> |
edit init script |
<numpad-1> to <numpad-8> |
run corresponding script |
<num lock> / <F11> |
jump to pattern mode |
<print screen> / <F12> |
jump to live mode |
Text editing
These bindings work when entering text or code.
In most cases, the clipboard is shared between live, edit and the 2 preset modes.
| Key | Action |
|---|---|
<left> / ctrl-b |
move cursor left |
<right> / ctrl-f |
move cursor right |
<home> / ctrl-a |
move to beginning of line |
<end> / ctrl-e |
move to end of line |
<backspace> / ctrl-h |
backwards delete one character |
<delete> / ctrl-d |
forwards delete one character |
shift-<backspace> / ctrl-u |
delete from cursor to beginning |
shift-<delete> / ctrl-e |
delete from cursor to end |
alt-<backspace> / ctrl-w |
delete from cursor to beginning of word |
ctrl-x / alt-x |
cut to clipboard |
ctrl-c / alt-c |
copy to clipboard |
ctrl-v / alt-v |
paste to clipboard |
Live mode
| Key | Action |
|---|---|
<down> / C-n |
history next |
<up> / C-p |
history previous |
<enter> |
execute command |
[ / ] |
switch to edit mode |
Edit mode
| Key | Action |
|---|---|
<down> / C-n |
line down |
<up> / C-p |
line up |
[ |
previous script |
] |
next script |
<enter> |
enter command |
shift-<enter> |
insert command |
Pattern mode
The pattern mode clipboard is independent of text and code clipboard.
| Key | Action |
|---|---|
<down> |
move down |
alt-<down> |
move a page down |
<up> |
move up |
alt-<up> |
move a page up |
<left> |
move left |
alt-<left> |
move to the very left |
<right> |
move right |
alt-<right> |
move to the very right |
[ |
decrement by 1 |
] |
increment by 1 |
<backspace> |
delete a digit |
shift-<backspace> |
delete an entry, shift numbers up |
<enter> |
move down (increase length only if on the entry immediately after the current length) |
shift-<enter> |
duplicate entry and shift downwards (increase length as <enter>) |
alt-x |
cut value (n.b. ctrl-x not supported) |
alt-c |
copy value (n.b. ctrl-c not supported) |
alt-v |
paste value (n.b. ctrl-v not supported) |
shift-alt-v |
insert value |
shift-l |
set length to current position |
alt-l |
go to current length entry |
shift-s |
set start to current position |
alt-s |
go to start entry |
shift-e |
set end to current position |
alt-e |
go to end entry |
- |
negate value |
<space> |
toggle non-zero to zero, and zero to 1 |
0 to 9 |
numeric entry |
Preset read mode
| Key | Action |
|---|---|
<down> / C-n |
line down |
<up> / C-p |
line up |
<left> / [ |
preset down |
<right> / ] |
preset up |
<enter> |
load preset |
Preset write mode
| Key | Action |
|---|---|
<down> / C-n |
line down |
<up> / C-p |
line up |
[ |
preset down |
] |
preset up |
<enter> |
enter text |
alt-<enter> |
save preset |
Help mode
| Key | Action |
|---|---|
<down> / C-n |
line down |
<up> / C-p |
line up |
<left> / [ |
previous page |
<right> / ] |
next page |
OPs and MODs
Variables
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
A |
A x |
get / set the variable A, default 1 |
|
B |
B x |
get / set the variable B, default 2 |
|
C |
C x |
get / set the variable C, default 3 |
|
D |
D x |
get / set the variable D, default 4 |
|
DRUNK |
DRUNK x |
changes by -1, 0, or 1 upon each read saving its state, setting will give it a new value for the next read |
|
DRUNK.MIN |
DRUNK.MIN x |
set the lower bound for DRUNK, default 0 |
|
DRUNK.MAX |
DRUNK.MAX x |
set the upper bound for DRUNK, default 255 |
|
DRUNK.WRAP |
DRUNK.WRAP x |
should DRUNK wrap around when it reaches it's bounds, default 0 |
|
FLIP |
FLIP x |
returns inverted state (0 or 1) on each read (also settable) |
|
I |
I x |
get / set the variable I, this variable is overwritten by L, but can be used freely outside an L loop |
|
O |
O x |
auto-increments after each access, can be set, starting value 0 |
|
O.INC |
O.INC x |
how much to increment O by on each invocation, default 1 |
|
O.MIN |
O.MIN x |
the lower bound for O, default 0 |
|
O.MAX |
O.MAX x |
the upper bound for O, default 63 |
|
O.WRAP |
O.WRAP x |
should O wrap when it reaches its bounds, default 1 |
|
T |
T x |
get / set the variable T, typically used for time, default 0 |
|
TIME |
TIME x |
timer value, counts up in ms., wraps after 32s, can be set | |
TIME.ACT |
TIME.ACT x |
enable or disable timer counting, default 1 |
|
X |
X x |
get / set the variable X, default 0 |
|
Y |
Y x |
get / set the variable Y, default 0 |
|
Z |
Z x |
get / set the variable Z, default 0 |
DRUNK
DRUNK/DRUNK x
Changes by -1, 0, or 1 upon each read, saving its state. Setting DRUNK will give it a new value for the next read, and drunkedness will continue on from there with subsequent reads.
Setting DRUNK.MIN and DRUNK.MAX controls the lower and upper bounds (inclusive) that DRUNK can reach. DRUNK.WRAP controls whether the value can wrap around when it reaches it's bounds.
O
O/O x
Auto-increments by O.INC after each access. The initial value is 0. The lower and upper bounds can be set by O.MIN (default 0) and O.MAX (default 63). O.WRAP controls if the value wraps when it reaches a bound (default is 1).
Example:
O => 0
O => 1
X O
X => 2
O.INC 2
O => 3 (O increments after it's accessed)
O => 5
O.INC -2
O 2
O => 2
O => 0
O => 63
O => 61
Hardware
The Teletype trigger inputs are numbered 1-8, the CV and trigger outputs 1-4. See the Ansible documentation for details of the Ansible output numbering when in Teletype mode.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
CV x |
CV x y |
CV target value | |
CV.OFF x |
CV.OFF x y |
CV offset added to output | |
CV.SET x |
Set CV value | ||
CV.SLEW x |
CV.SLEW x y |
Get/set the CV slew time in ms | |
IN |
Get the value of IN jack (0-16383) | ||
PARAM |
PRM |
Get the value of PARAM knob (0-16383) | |
TR |
TR |
Set trigger output x to y (0-1) | |
TR.POL x |
TR.POL x y |
Set polarity of trigger output x to y (0-1) | |
TR.TIME x |
TR.TIME x y |
Set the pulse time of trigger x to y ms | |
TR.TOG x |
Flip the state of trigger output x | ||
TR.PULSE x |
TR.P |
Pulse trigger output x | |
MUTE x |
MUTE x y |
Disable trigger input x | |
STATE x |
Read the current state of input x |
CV
CV x/CV x y
Get the value of CV associated with output x, or set the CV output of x to y.
CV.OFF
CV.OFF x/CV.OFF x y
Get the value of the offset added to the CV value at output x. The offset is added at the final stage. Set the value of the offset added to the CV value at output x to y.
CV.SET
CV.SET x
Set the CV value at output x bypassing any slew settings.
CV.SLEW
CV.SLEW x/CV.SLEW x y
Get the slew time in ms associated with CV output x. Set the slew time associated with CV output x to y ms.
IN
IN
Get the value of the IN jack. This returns a valuue in the range 0-16383.
PARAM
PARAM- alias:
PRM
Get the value of the PARAM knob. This returns a valuue in the range 0-16383.
TR
TR/TR
Get the current state of trigger output x. Set the state of trigger output x to y (0-1).
TR.POL
TR.POL x/TR.POL x y
Get the current polarity of trigger output x. Set the polarity of trigger output x to y (0-1). When TR.POL = 1, the pulse is 0 to 1 then back to 0. When TR.POL = 0, the inverse is true, 1 to 0 to 1.
TR.TIME
TR.TIME x/TR.TIME x y
Get the pulse time of trigger output x. Set the pulse time of trigger output x to yms.
TR.TOG
TR.TOG x
Flip the state of trigger output x.
TR.PULSE
TR.PULSE x- alias:
TR.P
Pulse trigger output x.
MUTE
MUTE x/MUTE x y
Mute the trigger input on x (0-7) when y is non-zero.
STATE
STATE x
Read the current state of trigger input x (0=low, 1=high).
Patterns
Patterns facilitate musical data manipulation– lists of numbers that can be used as sequences, chord sets, rhythms, or whatever you choose. Pattern memory consists four banks of 64 steps. Functions are provided for a variety of pattern creation, transformation, and playback.
New in teletype 2.0, a second version of all Pattern ops have been added. The original P ops (P, P.L, P.NEXT, etc.) act upon the ‘working pattern’ as defined by P.N. By default the working pattern is assigned to pattern 0 (P.N 0), in order to execute a command on pattern 1 using P ops you would need to first reassign the working pattern to pattern 1 (P.N 1).
The new set of ops, PN (PN, PN.L, PN.NEXT, etc.), include a variable to designate the pattern number they act upon, and don’t effect the pattern assignment of the ‘working pattern’ (ex: PN.NEXT 2 would increment pattern 2 one index and return the value at the new index). For simplicity throughout this introduction we will only refer to the P ops, but keep in mind that they now each have a PN counterpart (all of which are detailed below)
Both patterns and their arrays of numbers are indexed from 0. This makes the first pattern number 0, and the first value of a pattern is index 0. The pattern index (P.I) functions like a playhead which can be moved throughout the pattern and/or read using ops: P, P.I, P.HERE, P.NEXT, and P.PREV. You can contain pattern movements to ranges of a pattern and define wrapping behavior using ops: P.START, P.END, P.L, and P.WRAP.
Values can be edited, added, and retrieved from the command line using ops: P, P.INS, P.RM, P.PUSH, P.HERE, P.NEXT, and P.PREV. Some of these ops will additionally impact the pattern length upon their execution: P.INS, P.RM, P.PUSH, and P.POP.
To see your current pattern data use the <tab> key to cycle through live mode, edit mode, and pattern mode. In pattern mode each of the 4 patterns is represented as a column. You can use the arrow keys to navigate throughout the 4 patterns and their 64 values. For reference a key of numbers runs the down the lefthand side of the screen in pattern mode displaying 0-63.
From a blank set of patterns you can enter data by typing into the first cell in a column. Once you hit <enter> you will move to the cell below and the pattern length will become one step long. You can continue this process to write out a pattern of desired length. The step you are editing is always the brightest. As you add steps to a pattern by editing the value and hitting <enter> they become brighter than the unused cells. This provides a visual indication of the pattern length.
The start and end points of a pattern are represented by the dotted line next to the column, and the highlighted dot in this line indicates the current pattern index for each of the patterns. See the key bindings for an extensive list of editing shortcuts available within pattern mode.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
P.N |
P.N x |
get/set the pattern number for the working pattern, default 0 |
|
P x |
P x y |
get/set the value of the working pattern at index x |
|
PN x y |
PN x y z |
get/set the value of pattern x at index y |
|
P.L |
P.L x |
get/set pattern length of the working pattern, non-destructive to data | |
PN.L x |
PN.L x y |
get/set pattern length of pattern x. non-destructive to data | |
P.WRAP |
P.WRAP x |
when the working pattern reaches its bounds does it wrap (0/1), default 1 (enabled) |
|
PN.WRAP x |
PN.WRAP x y |
when pattern x reaches its bounds does it wrap (0/1), default 1 (enabled) |
|
P.START |
P.START x |
get/set the start location of the working pattern, default 0 |
|
PN.START x |
PN.START x y |
get/set the start location of pattern x, default 0 |
|
P.END |
P.END x |
get/set the end location of the working pattern, default 63 |
|
PN.END x |
PN.END x y |
get/set the end location of the pattern x, default 63 |
|
P.I |
P.I x |
get/set index position for the working pattern. | |
PN.I x |
PN.I x y |
get/set index position for pattern x |
|
P.HERE |
P.HERE x |
get/set value at current index of working pattern | |
PN.HERE x |
PN.HERE x y |
get/set value at current index of pattern x |
|
P.NEXT |
P.NEXT x |
increment index of working pattern then get/set value | |
PN.NEXT x |
PN.NEXT x y |
increment index of pattern x then get/set value |
|
P.PREV |
P.PREV x |
decrement index of working pattern then get/set value | |
PN.PREV x |
PN.PREV x y |
decrement index of pattern x then get/set value |
|
P.INS x y |
insert value y at index x of working pattern, shift later values down, destructive to loop length |
||
PN.INS x y z |
insert value z at index y of pattern x, shift later values down, destructive to loop length |
||
P.RM x |
delete index x of working pattern, shift later values up, destructive to loop length |
||
PN.RM x y |
delete index y of pattern x, shift later values up, destructive to loop length |
||
P.PUSH x |
insert value x to the end of the working pattern (like a stack), destructive to loop length |
||
PN.PUSH x y |
insert value y to the end of pattern x (like a stack), destructive to loop length |
||
P.POP |
return and remove the value from the end of the working pattern (like a stack), destructive to loop length | ||
PN.POP x |
return and remove the value from the end of pattern x (like a stack), destructive to loop length |
P.N
P.N/P.N x
get/set the pattern number for the working pattern, default 0. All P ops refer to this pattern.
P
P x/P x y
get/set the value of the working pattern at index x. All positive values (0-63) can be set or returned while index values greater than 63 clip to 63. Negative x values are indexed backwards from the end of the pattern length of the working pattern.
Example:
with a pattern length of 6 for the working pattern:
P 10 retrieves the working pattern value at index 6
P.I -2 retrieves the working pattern value at index 4
This applies to PN as well, except the pattern number is the first variable and a second variable specifies the index.
P.WRAP
P.WRAP/P.WRAP x
when the working pattern reaches its bounds does it wrap (0/1). With PN.WRAP enabled (1), when an index reaches its upper or lower bound using P.NEXT or P.PREV it will wrap to the other end of the pattern and you can continue advancing. The bounds of P.WRAP are defined through P.L, P.START, and P.END.
If wrap is enabled (P.WRAP 1) a pattern will begin at its start location and advance to the lesser index of either its end location or the end of its pattern length
Examples:
With wrap enabled, a pattern length of 6, a start location of 2 , and an end location of 8.
P.WRAP 1; P.L 6; P.START 2; P.END 8
The pattern will wrap between the indexes 2 and 5.
With wrap enabled, a pattern length of 10, a start location of 3, and an end location of 6.
P.WRAP 1; P.L 10; P.START 3; P.END 6
The pattern will wrap between the indexes 3 and 6.
If wrap is disabled (P.WRAP 0) a pattern will run between its start and end locations and halt at either bound.
This applies to PN.WRAP as well, except the pattern number is the first variable and a second variable specifies the wrap behavior (0/1).
P.I
P.I/P.I x
get/set index position for the working pattern. all values greater than pattern length return the first step beyond the pattern length. negative values are indexed backwards from the end of the pattern length.
Example:
With a pattern length of 6 (P.L 6), yielding an index range of 0-5:
P.I 3
moves the index of the working pattern to 3
P.I 10
moves the index of the working pattern to 6
P.I -2
moves the index of the working pattern to 4
This applies to PN.I, except the pattern number is the first variable and a second variable specifics the index.
Control flow
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
IF x: ... |
if x is not zero execute command |
||
ELIF x: ... |
if all previous IF / ELIF fail, and x is not zero, execute command |
||
ELSE: ... |
if all previous IF / ELIF fail, excute command |
||
L x y: ... |
run the command sequentially with I values from x to y |
||
PROB x: ... |
potentially execute command with probability x (0-100) |
||
SCRIPT x |
execute script x (1-8), recursion allowed |
||
SCENE x |
load scene x (0-31) |
||
KILL |
clears stack, clears delays, cancels pulses, cancels slews |
IF
IF x: ...
If x is not zero execute command
Advanced IF / ELIF / ELSE usage
Intermediate statements always run
SCRIPT 1: IF 0: 0 => do nothing TR.P 1 => always happens ELSE: TR.P 2 => else branch runs because of the previous IFELSEwithout anIFSCRIPT 1: ELSE: TR.P 1 => never runs, as there is no preceding IFELIFwithout anIFSCRIPT 1: ELIF 1: TR.P 1 => never runs, as there is no preceding IFIndependent scripts
SCRIPT 1: IF 1: TR.P 1 => pulse output 1 SCRIPT 2: ELSE: TR.P 2 => never runs regardless of what happens in script 1 (see example 2)Dependent scripts
SCRIPT 1: IF 0: TR.P 1 => do nothing SCRIPT 2 => will pulse output 2 SCRIPT 2: ELSE: TR.P 2 => will not pulse output 2 if called directly, but will if called from script 1
L
L x y: ...
Run the command sequentially with I values from x to y.
For example:
L 1 4: TR.PULSE I => pulse outputs 1, 2, 3 and 4
L 4 1: TR.PULSE I => pulse outputs 4, 3, 2 and 1
SCRIPT
SCRIPT x
Execute script x (1-8), recursion allowed.
There is a limit of 8 for the maximum number of nested calls to SCRIPT to stop infinite loops from locking up the Teletype.
SCENE
SCENE x
Load scene x (0-31).
Does not execute the I script.
WARNING: You will lose any unsaved changes to your scene.
Maths
Logical operators such as EQ, OR and LT return 1 for true, and 0 for false.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
ADD x y |
+ |
add x and y together |
|
SUB x y |
- |
subtract y from x |
|
MUL x y |
* |
multiply x and y together |
|
DIV x y |
/ |
divide x by y |
|
MOD x y |
% |
find the remainder after division of x by y |
|
RAND x |
generate a random number between 0 and x inclusive |
||
RRAND x y |
generate a random number between x and y inclusive |
||
TOSS |
randomly return 0 or 1 |
||
MIN x y |
return the minimum of x and y |
||
MAX x y |
return the maximum of x and y |
||
LIM x y z |
limit the value x to the range y to z inclusive |
||
WRAP x y z |
limit the value x to the range y to z inclusive, but with wrapping |
||
QT x y |
round x to the closest multiple of y (quantise) |
||
AVG x y |
the average of x and y |
||
EQ x y |
== |
does x equal y |
|
NE x y |
!= , XOR |
x is not equal to y |
|
LT x y |
< |
x is less than y |
|
GT x y |
> |
x is greater than y |
|
LTE x y |
<= |
x is less than or equal to y |
|
GTE x y |
>= |
x is greater than or equal to y |
|
EZ x |
! |
x is 0, equivalent to logical NOT |
|
NZ x |
x is not 0 |
||
LSH x y |
<< |
left shift x by y bits, in effect multiply by 2 to the power of x |
|
RSH x y |
>> |
right shift x by y bits, in effect divide by 2 to the power of x |
|
ABS x |
absolute value of x |
||
AND x y |
&& |
logical AND of x and y |
|
OR x y |
|| |
logical OR of x and y |
|
JI x y |
just intonation helper, precision ratio divider normalised to 1V | ||
SCALE a b x y i |
scale i from range a to b to range x to y, i.e. i * (y - x) / (b - a) |
||
ER f l i |
Euclidean rhythm, f is fill (1-32), l is length (1-32) and i is step (any value), returns 0 or 1 |
||
N x |
converts an equal temperament note number to a value usable by the CV outputs (x in the range -127 to 127) |
||
V x |
converts a voltage to a value usable by the CV outputs (x between 0 and 10) |
||
VV x |
converts a voltage to a value usable by the CV outputs (x between 0 and 1000, 100 represents 1V) |
||
EXP x |
exponentiation table lookup. 0-16383 range (V 0-10) |
AND
AND x y- alias:
&&
Logical AND of x and y. Returns 1 if both x and y are greater than 0, otherwise it returns 0.
OR
OR x y- alias:
||
Logical OR of x and y. Returns 1 if either x or y are greater than 0, otherwise it returns 0.
ER
ER f l i
Euclidean rhythm helper, as described by Godfried Toussaint in his 2005 paper "The Euclidean Algorithm Generates Traditional Musical Rhythms"1. From the abstract:
fis fill (1-32) and should be less then or equal to lengthlis length (1-32)iis the step index, and will work with negative as well as positive numbers
If you wish to add rotation as well, use the following form:
ER f l SUB i r
where r is the number of step of forward rotation you want.
For more info, see the post on samdoshi.com
N
N x
The N OP converts an equal temperament note number to a value usable by the CV outputs.
Examples:
CV 1 N 60 => set CV 1 to middle C, i.e. 5V
CV 1 N RAND 24 => set CV 1 to a random note from the lowest 2 octaves
Metronome
An internal metronome executes the M script at a specified rate (in ms). By default the metronome is enabled (M.ACT 1) and set to 1000ms (M 1000). The metro can be set as fast as 25ms (M 25). An additional M! op allows for setting the metronome to experimental rates as high as 2ms (M! 2). WARNING: when using a large number of i2c commands in the M script at metro speeds beyond the 25ms teletype stability issues can occur.
Access the M script directly with alt-<F10> or run the script once using <F10>.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
M |
M x |
get/set metronome interval to x (in ms), default 1000, minimum value 25 |
|
M! |
M! x |
get/set metronome to experimental interval x (in ms), minimum value 2 |
|
M.ACT |
M.ACT x |
get/set metronome activation to x (0/1), default 1 (enabled) |
|
M.RESET |
hard reset metronome count without triggering |
Delay
The DEL delay op allow commands to be sheduled for execution after a defined interval by placing them into a buffer which can hold up to 8 commands. Commands can be delayed by up to 16 seconds
In LIVE mode, the second icon (an upside-down U) will be lit up when there is a command in the DEL buffer.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
DEL x: ... |
Delay command by x ms |
||
DEL.CLR |
Clear the delay buffer |
DEL
DEL x: ...
Delay the command following the colon by x ms by placing it into a buffer. The buffer can hold up to 8 commands. If the buffer is full, additional commands will be discarded.
DEL.CLR
DEL.CLR
Clear the delay buffer, cancelling the pending commands.
Stack
These operators manage a last in, first out, stack of commands, allowing them to be memorised for later execution at an unspecified time. The stack can hold up to 8 commands. Commands added to a full stack will be discarded.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
S: ... |
Place a command onto the stack | ||
S.CLR |
Clear all entries in the stack | ||
S.ALL |
Execute all entries in the stack | ||
S.POP |
Execute the most recent entry | ||
S.L |
Get the length of the stack |
S
S: ...
Add the command following the colon to the top of the stack. If the stack is full, the command will be discarded.
S.CLR
S.CLR
Clear the stack, cancelling all of the commands.
S.ALL
S.ALL
Execute all entries in the stack (last in, first out), clearing the stack in the process.
S.POP
S.POP
Pop the most recent command off the stack and execute it.
S.L
S.L
Get the number of entries in the stack.
Queue
These operators manage a first in, first out, queue of values. The queue can hold up to 16 values. The length of the queue can be dynamically changed and the contents will be preserved. There is also an averaging operator which is useful for smoothing input values.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
Q |
Q x |
Modify the queue entries | |
Q.N |
Q.N x |
The queue length | |
Q.AVG |
Q.AVG x |
Return the average of the queue |
Q
Q/Q x
Gets the output value from the queue, or places x into the queue.
Q.N
Q.N/Q.N x
Gets/sets the length of the queue.
Q.AVG
Q.AVG/Q.AVG x
Getting the value the average of the values in the queue. Setting x sets the value of each entry in the queue to x.
Ansible
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
KR.PRE |
KR.PRE x |
return current preset / load preset x |
|
KR.PERIOD |
KR.PERIOD x |
get/set internal clock period | |
KR.PAT |
KR.PAT x |
get/set current pattern | |
KR.SCALE |
KR.SCALE x |
get/set current scale | |
KR.POS x y |
KR.POS x y z |
get/set position z for track z, parameter y |
|
KR.L.ST x y |
KR.L.ST x y z |
get loop start for track x, parameter y / set to z |
|
KR.L.LEN |
KR.L.LEN |
get length of trrack x, parameter y / set to z |
|
KR.RES x y |
reset to loop start for track x, parameter y |
||
ME.PRE |
ME.PRE x |
return current preset / load preset x |
|
ME.SCALE |
ME.SCALE x |
get/set current scale | |
ME.PERIOD |
ME.PERIOD x |
get/set internal clock period | |
ME.STOP x |
stop channel x (0 = all) |
||
ME.RES x |
reset channel x (0 = all), also used as "start" |
||
LV.PRE |
LV.PRE x |
return current preset / load preset x |
|
LV.RES x |
reset, 0 for soft reset (on next ext. clock), 1 for hard reset |
||
LV.POS |
LV.POS x |
get/set current position | |
LV.L.ST |
LV.L.ST x |
get/set loop start | |
LV.L.LEN |
LV.L.LEN x |
get/set loop length | |
LV.L.DIR |
LV.L.DIR x |
get/set loop direction | |
LV.CV x |
get the current CV value for channel x |
||
CY.PRE |
CY.PRE x |
return current preset / load preset x |
|
CY.RES x |
reset channel x (0 = all) |
||
CY.POS x |
CY.POS x y |
get / set position of channel x (x = 0 to set all), position between 0-255 |
|
CY.REV x |
reverse channel x (0 = all) |
||
CY.CV x |
get the current CV value for channel x |
||
MID.SLEW t |
set pitch slew time in ms (applies to all allocation styles except FIXED) | ||
MID.SHIFT o |
shift pitch CV by standard Teletype pitch value (e.g. N 6, V -1, etc) |
||
ARP.HLD h |
0 disables key hold mode, other values enable |
||
ARP.STY y |
set base arp style [0-7] | ||
ARP.GT v g |
set voice gate length [0-127], scaled/synced to course divisions of voice clock | ||
ARP.SLEW v t |
set voice slew time in ms | ||
ARP.RPT v n s |
set voice pattern repeat, n times [0-8], shifted by s semitones [-24, 24] |
||
ARP.DIV v d |
set voice clock divisor (euclidean length), range [1-32] | ||
ARP.FIL v f |
set voice euclidean fill, use 1 for straight clock division, range [1-32] | ||
ARP.ROT v r |
set voice euclidean rotation, range [-32, 32] | ||
ARP.ER v f d r |
set all euclidean rhythm | ||
ARP.RES v |
reset voice clock/pattern on next base clock tick | ||
ARP.SHIFT v o |
shift voice cv by standard tt pitch value (e.g. N 6, V -1, etc) |
KR.POS
KR.POS x y/KR.POS x y z
Set position to z for track x, parameter y.
A value of 0 for x means all tracks.
A value of 0 for y means all parameters
Parameters:
0= all1= trigger2= note3= octave4= length
White Whale
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
WW.PRESET x |
Recall preset (0-7) | ||
WW.POS x |
Cut to position (0-15) | ||
WW.SYNC x |
Cut to position (0-15) and hard-sync the clock (if clocked internally) | ||
WW.START x |
Set the loop start position (0-15) | ||
WW.END x |
Set the loop end position (0-15) | ||
WW.PMODE x |
Set the loop play mode (0-5) | ||
WW.PATTERN x |
Change pattern (0-15) | ||
WW.QPATTERN x |
Change pattern (0-15) after current pattern ends | ||
WW.MUTE1 x |
Mute trigger 1 (0 = on, 1 = mute) | ||
WW.MUTE2 x |
Mute trigger 2 (0 = on, 1 = mute) | ||
WW.MUTE3 x |
Mute trigger 3 (0 = on, 1 = mute) | ||
WW.MUTE4 x |
Mute trigger 4 (0 = on, 1 = mute) | ||
WW.MUTEA x |
Mute CV A (0 = on, 1 = mute) | ||
WW.MUTEB x |
Mute CV B (0 = on, 1 = mute) |
WW.PRESET
WW.PRESET x
Set White Whale to preset x (0-7). This takes effect immediately. The current playback position is not changed.
WW.POS
WW.POS x
Cut immediately to position (0-15) in the currently playing pattern.
WW.SYNC
WW.SYNC x
Cut to position (0-15) in the currently playing pattern. If White Whale is being clocked internaly, this also hard-syncs the clock.
WW.START
WW.START x
Set the loop start position (0-15). This does not impact the current playback position. If the playback position is outside of the defined loop it will continue to step until it enters the loop. If the start position is after the end position, the loop will wrap around the ends of the grid.
WW.END
WW.END x
Set the loop end position (0-15). This does not impact the current playback position. If the playback position is outside of the defined loop it will continue to step until it enters the loop. If the end position is before the end position, the loop will wrap around the ends of the grid.
WW.PMODE
WW.PMODE x
Set the loop play mode. The available modes are: 0 - forward, 1 - reverse, 2 - drunk, 3 - random, 4 - pingpong, 5 - pingpong with repeated end points.
WW.PATTERN
WW.PATTERN x
Change pattern. This does not impact the current playback position.
WW.QPATTERN
WW.QPATTERN x
Change pattern (0-15) after current pattern ends
WW.MUTE1
WW.MUTE1 x
Mute trigger 1 (0 = on, 1 = mute).
WW.MUTE2
WW.MUTE2 x
Mute trigger 2 (0 = on, 1 = mute).
WW.MUTE3
WW.MUTE3 x
Mute trigger 3 (0 = on, 1 = mute).
WW.MUTE4
WW.MUTE4 x
Mute trigger 4 (0 = on, 1 = mute).
WW.MUTEA
WW.MUTEA x
Mute CV A (0 = on, 1 = mute).
WW.MUTEB
WW.MUTEB x
Mute CV B (0 = on, 1 = mute).
Meadowphysics
For use on the original Meadowphysics module with version 2 firmware. Reference the Ansible ops for using Meadowphysics on the Ansible module.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
MP.PRESET x |
set Meadowphysics to preset x (indexed from 0) |
||
MP.RESET x |
reset countdown for channel x (0 = all, 1-8 = individual channels) |
||
MP.STOP x |
reset channel x (0 = all, 1-8 = individual channels) |
Earthsea
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
ES.PRESET x |
Recall preset x (0-7) |
||
ES.MODE x |
Set pattern clock mode. (0=normal, 1=II clock) | ||
ES.CLOCK x |
If II clocked, next pattern event | ||
ES.RESET x |
Reset pattern to start (and start playing) | ||
ES.PATTERN x |
Select playing pattern (0-15) | ||
ES.TRANS x |
Transpose the current pattern | ||
ES.STOP x |
Stop pattern playback. | ||
ES.TRIPLE x |
Recall triple shape (1-4) | ||
ES.MAGIC x |
Magic shape (1= halfspeed, 2=doublespeed, 3=linearize) |
ES.PRESET
ES.PRESET x
Recall the preset in location x. This will stop the currently playing pattern.
ES.MODE
ES.MODE x
Sets the pattern clock mode. Setting x to 0 sets Earthsea to use it's internal clock. Setting x to 1 clocks Earthsea via the ES.CLOCK command.
ES.CLOCK
ES.CLOCK x
If Earthsea is II clocked (see ES.MODE), and x is non-zero, advance to the next pattern event.
ES.RESET
ES.RESET x
If x is non-zero, reset the position in the current pattern to the start and start playing.
ES.PATTERN
ES.PATTERN x
Select pattern (0-15) from the current preset.
ES.TRANS
ES.TRANS x
Apply a transposition relative to the current 'root' position. Integer divisions of x shift the root note up or down a row, x modulo 5 will shift the position left or right up to 4 notes.
ES.STOP
ES.STOP x
If x is non-zero, stop pattern playback, or stop record if currently recording.
ES.TRIPLE
ES.TRIPLE x
Recall triple shape (1-4).
ES.MAGIC
ES.MAGIC x
Apply one of the magic shapes, (1= halfspeed, 2=doublespeed, 3=linearize). Other shapes are not currently available via II ops.
Orca
Remote commands for Orca (alternative WW firmware). For detailed info and tips on usage please refer to the Orca manual.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
OR.CLK x |
Advance track x (1-4) |
||
OR.RST x |
Reset track x (1-4) |
||
OR.GRST x |
Global reset (x can be any value) |
||
OR.TRK x |
Choose track x (1-4) to be used by OR.DIV, OR.PHASE, OR.WGT or OR.MUTE |
||
OR.DIV x |
Set divisor for selected track to x (1-16) |
||
OR.PHASE x |
Set phase for selected track to x (0-16) |
||
OR.WGT x |
Set weight for selected track to x (1-8) |
||
OR.MUTE x |
Mute trigger selected by OR.TRK (0 = on, 1 = mute) |
||
OR.SCALE x |
Select scale x (1-16) |
||
OR.BANK x |
Select preset bank x (1-8) |
||
OR.PRESET x |
Select preset x (1-8) |
||
OR.RELOAD x |
Reload preset or bank (0 - current preset, 1 - current bank, 2 - all banks) |
||
OR.ROTS x |
Rotate scales by x (1-15) |
||
OR.ROTW x |
Rotate weights by x (1-3) |
||
OR.CVA x |
Select tracks for CV A where x is a binary number representing the tracks |
||
OR.CVB x |
Select tracks for CV B where x is a binary number representing the tracks |
OR.CLK
OR.CLK x
Gives you the ability to clock individual tracks. The master clock will still advance all 4 tracks.
OR.SCALE
OR.SCALE x
Value of 1-16 will select scale for both CV A and CV B. To select individual scales append their numbers, for instance, 105 will select scale 1 for CV A and scale 5 for CV B, and 1005 will select scale 10 for CV A and scale 5 for CV B.
OR.RELOAD
OR.RELOAD x
Abandons any unsaved changes and reloads selected presets/banks from flash. Could be useful in I script.
OR.ROTS
OR.ROTS x
Rotates scales up. To rotate them down set x to 16 minus the amount.
OR.ROTW
OR.ROTW x
Rotates weights up. To rotate them down set x to 4 minus the amount.
OR.CVA
OR.CVA x
Convert a binary number representing selected tracks (so 1001 will select tracks 1 and 4, for instance) and set x to that.
OR.CVB
OR.CVB x
Convert a binary number representing selected tracks (so 1001 will select tracks 1 and 4, for instance) and set x to that.
TELEXi Teletype Input Expander
The TELEXi (or TXi) is an input expander that adds 4 IN jacks and 4 PARAM knobs to the Teletype. There are jumpers on the back so you can hook more than one TXi to your Teletype simultaneously.
Inputs added to the system by the TELEX modules are addressed sequentially: 1-4 are on your first module of any type, 5-8 are on the second, 9-12 on the third, and so on. A few of the commands reference the module by its unit number – but those are rare.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
TI.PARAM x |
TI.PRM |
reads the value of PARAM knob x; default return range is from 0 to 16383; return range can be altered by the TI.PARAM.MAP command |
|
TI.PARAM.QT x |
TI.PRM.QT |
return the quantized value for PARAM knob x using the scale set by TI.PARAM.SCALE; default return range is from 0 to 16383 |
|
TI.PARAM.N x |
TI.PRM.N |
return the quantized note number for PARAM knob x using the scale set by TI.PARAM.SCALE |
|
TI.PARAM.SCALE x |
TI.PRM.SCALE |
select scale # y for PARAM knob x; scales listed in full description |
|
TI.PARAM.MAP x y z |
TI.PRM.MAP |
maps the PARAM values for input x across the range y - z (defaults 0-16383) |
|
TI.IN x |
reads the value of IN jack x; default return range is from -16384 to 16383 - representing -10V to +10V; return range can be altered by the TI.IN.MAP command |
||
TI.IN.QT x |
return the quantized value for IN jack x using the scale set by TI.IN.SCALE; default return range is from -16384 to 16383 - representing -10V to +10V |
||
TI.IN.N x |
return the quantized note number for IN jack x using the scale set by TI.IN.SCALE |
||
TI.IN.SCALE x |
select scale # y for IN jack x; scales listed in full description |
||
TI.IN.MAP x y z |
maps the IN values for input jack x across the range y - z (default range is -16384 to 16383 - representing -10V to +10V) |
||
TI.PARAM.INIT x |
TI.PRM.INIT |
initializes PARAM knob x back to the default boot settings and behaviors; neutralizes mapping (but not calibration) |
|
TI.IN.INIT x |
initializes IN jack x back to the default boot settings and behaviors; neutralizes mapping (but not calibration) |
||
TI.INIT d |
initializes all of the PARAM and IN inputs for device number d (1-8) |
||
TI.PARAM.CALIB x y |
TI.PRM.CALIB |
calibrates the scaling for PARAM knob x; y of 0 sets the bottom bound; y of 1 sets the top bound |
|
TI.IN.CALIB x y |
calibrates the scaling for IN jack x; y of -1 sets the -10V point; y of 0 sets the 0V point; y of 1 sets the +10V point |
||
TI.STORE d |
stores the calibration data for TXi number d (1-8) to its internal flash memory |
||
TI.RESET d |
resets the calibration data for TXi number d (1-8) to its factory defaults (no calibration) |
TI.PARAM.SCALE
TI.PARAM.SCALE x- alias:
TI.PRM.SCALE
Quantization Scales
- Equal Temperament [DEFAULT]
- 12-tone Pythagorean scale
- Vallotti & Young scale (Vallotti version) also known as Tartini-Vallotti (1754)
- Andreas Werckmeister's temperament III (the most famous one, 1681)
- Wendy Carlos' Alpha scale with perfect fifth divided in nine
- Wendy Carlos' Beta scale with perfect fifth divided by eleven
- Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty
- Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'
- Carlos Super Just
- Kurzweil "Empirical Arabic"
- Kurzweil "Just with natural b7th", is Sauveur Just with 7/4
- Kurzweil "Empirical Bali/Java Harmonic Pelog"
- Kurzweil "Empirical Bali/Java Slendro, Siam 7"
- Kurzweil "Empirical Tibetian Ceremonial"
- Harry Partch's 43-tone pure scale
- Partch's Indian Chromatic, Exposition of Monophony, 1933.
- Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white
TI.PARAM.MAP
TI.PARAM.MAP x y z- alias:
TI.PRM.MAP
If you would like to have a PARAM knob values over a specific range, you can offload the processing for this to the TXo by mapping the range of the potentiometer using the MAP command. It works a lot like the MAP operator, but does the heavy lifting on the TXi, saving you space in your code and cycles on your processor.
For instance, let's have the first knob return a range from 0 to 100.
TI.PARAM.MAP 1 0 100
You can reset the mapping by either calling the map command with the default range or by using the INIT command (TO.PARAM.INIT 1).
TI.IN.SCALE
TI.IN.SCALE x
Quantization Scales
- Equal Temperament [DEFAULT]
- 12-tone Pythagorean scale
- Vallotti & Young scale (Vallotti version) also known as Tartini-Vallotti (1754)
- Andreas Werckmeister's temperament III (the most famous one, 1681)
- Wendy Carlos' Alpha scale with perfect fifth divided in nine
- Wendy Carlos' Beta scale with perfect fifth divided by eleven
- Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty
- Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'
- Carlos Super Just
- Kurzweil "Empirical Arabic"
- Kurzweil "Just with natural b7th", is Sauveur Just with 7/4
- Kurzweil "Empirical Bali/Java Harmonic Pelog"
- Kurzweil "Empirical Bali/Java Slendro, Siam 7"
- Kurzweil "Empirical Tibetian Ceremonial"
- Harry Partch's 43-tone pure scale
- Partch's Indian Chromatic, Exposition of Monophony, 1933.
- Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white
TI.PARAM.CALIB
TI.PARAM.CALIB x y- alias:
TI.PRM.CALIB
You can calibrate your PARAM knob by using this command. The steps for full calibration are as follows:
- Turn the PARAM knob
xall the way to the left - Send the command 'TI.PARAM.CALIBRATE x 0'
- Turn the PARAM knob
xall the way to the right - Send the command 'TI.PARAM.CALIBRATE x 1'
Don't forget to call the TI.STORE command to save your calibration between sessions.
TI.IN.CALIB
TI.IN.CALIB x y
You can calibrate your IN jack to external voltages by using this command. The steps for full calibration are as follows:
- Send a
-10Vsignal to the inputx - Send the command 'TI.IN.CALIBRATE x -1'
- Send a
0Vsignal to the inputx - Send the command 'TI.IN.CALIBRATE x 0'
- Send a
10Vsignal to the inputx - Send the command 'TI.IN.CALIBRATE x 1'
Don't forget to call the TI.STORE command to save your calibration between sessions.
TELEXo Teletype Output Expander
The TELEXo (or TXo) is an output expander that adds an additional 4 Trigger and 4 CV jacks to the Teletype. There are jumpers on the back so you can hook more than one TXo to your Teletype simultaneously.
Outputs added to the system by the TELEX modules are addressed sequentially: 1-4 are on your first module of any type, 5-8 are on the second, 9-12 on the third, and so on. A few of the commands reference the module by its unit number – but those are rare.
Unlike the Teletype's equivalent operators, the TXo does not have get commands for its functions. This was intentional as these commands eat up processor and bus-space. While they may be added in the future, as of now you cannot poll the TXo for the current state of its various operators.
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
TO.TR x y |
sets the TR value for output x to y (0/1) |
||
TO.TR.TOG x |
toggles the TR value for output x |
||
TO.TR.PULSE x |
TO.TR.P |
pulses the TR value for output x for the duration set by TO.TR.TIME/S/M |
|
TO.TR.PULSE.DIV x y |
TO.TR.P.DIV |
sets the clock division factor for TR output x to y |
|
TO.TR.PULSE.MUTE x y |
TO.TR.P.MUTE |
mutes or un-mutes TR output x; y is 1 (mute) or 0 (un-mute) |
|
TO.TR.TIME x y |
sets the time for TR.PULSE on output n; y in milliseconds |
||
TO.TR.TIME.S x y |
sets the time for TR.PULSE on output n; y in seconds |
||
TO.TR.TIME.M x y |
sets the time for TR.PULSE on output n; y in minutes |
||
TO.TR.WIDTH x y |
sets the time for TR.PULSE on output n based on the width of its current metronomic value; y in percentage (0-100) |
||
TO.TR.POL x y |
sets the polarity for TR output n |
||
TO.TR.M.ACT x y |
sets the active status for the independent metronome for output x to y (0/1); default 0 (disabled) |
||
TO.TR.M x y |
sets the independent metronome interval for output x to y in milliseconds; default 1000 |
||
TO.TR.M.S x y |
sets the independent metronome interval for output x to y in seconds; default 1 |
||
TO.TR.M.M x y |
sets the independent metronome interval for output x to y in minutes |
||
TO.TR.M.BPM x y |
sets the independent metronome interval for output x to y in Beats Per Minute |
||
TO.TR.M.COUNT x y |
sets the number of repeats before deactivating for output x to y; default 0 (infinity) |
||
TO.TR.M.MUL x y |
multiplies the M rate on TR output x by y; y defaults to 1 - no multiplication |
||
TO.TR.M.SYNC x |
synchronizes the PULSE for metronome on TR output number x |
||
TO.M.ACT d y |
sets the active status for the 4 independent metronomes on device d (1-8) to y (0/1); default 0 (disabled) |
||
TO.M d y |
sets the 4 independent metronome intervals for device d (1-8) to y in milliseconds; default 1000 |
||
TO.M.S d y |
sets the 4 independent metronome intervals for device d to y in seconds; default 1 |
||
TO.M.M d y |
sets the 4 independent metronome intervals for device d to y in minutes |
||
TO.M.BPM d y |
sets the 4 independent metronome intervals for device d to y in Beats Per Minute |
||
TO.M.COUNT d y |
sets the number of repeats before deactivating for the 4 metronomes on device d to y; default 0 (infinity) |
||
TO.M.SYNC d |
synchronizes the 4 metronomes for device number d (1-8) |
||
TO.CV x |
CV target output x; y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.CV.SLEW x y |
set the slew amount for output x; y in milliseconds |
||
TO.CV.SLEW.S x y |
set the slew amount for output x; y in seconds |
||
TO.CV.SLEW.M x y |
set the slew amount for output x; y in minutes |
||
TO.CV.SET x y |
set the CV for output x (ignoring SLEW); y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.CV.OFF x y |
set the CV offset for output x; y values are added at the final stage |
||
TO.CV.QT x y |
CV target output x; y is quantized to output's current CV.SCALE |
||
TO.CV.QT.SET x y |
set the CV for output x (ignoring SLEW); y is quantized to output's current CV.SCALE |
||
TO.CV.N x y |
target the CV to note y for output x; y is indexed in the output's current CV.SCALE |
||
TO.CV.N.SET x y |
set the CV to note y for output x; y is indexed in the output's current CV.SCALE (ignoring SLEW) |
||
TO.CV.SCALE x y |
select scale # y for CV output x; scales listed in full description |
||
TO.CV.LOG x y |
translates the output for CV output x to logarithmic mode y; y defaults to 0 (off); mode 1 is for 0-16384 (0V-10V), mode 2 is for 0-8192 (0V-5V), mode 3 is for 0-4096 (0V-2.5V), etc. |
||
TO.OSC x y |
targets oscillation for CV output x to y with the portamento rate determined by the TO.OSC.SLEW value; y is 1v/oct translated from the standard range (1-16384); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.SET x y |
set oscillation for CV output x to y (ignores CV.OSC.SLEW); y is 1v/oct translated from the standard range (1-16384); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.QT x y |
targets oscillation for CV output x to y with the portamento rate determined by the TO.OSC.SLEW value; y is 1v/oct translated from the standard range (1-16384) and quantized to current OSC.SCALE; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.QT.SET x y |
set oscillation for CV output x to y (ignores CV.OSC.SLEW); y is 1v/oct translated from the standard range (1-16384) and quantized to current OSC.SCALE; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.N x y |
targets oscillation for CV output x to note y with the portamento rate determined by the TO.OSC.SLEW value; see quantization scale reference for y; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.N.SET x y |
sets oscillation for CV output x to note y (ignores CV.OSC.SLEW); see quantization scale reference for y; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.FQ x y |
targets oscillation for CV output x to frequency y with the portamento rate determined by the TO.OSC.SLEW value; y is in Hz; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.FQ x y |
sets oscillation for CV output x to frequency y (ignores CV.OSC.SLEW); y is in Hz; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.LFO x y |
targets oscillation for CV output x to LFO frequency y with the portamento rate determined by the TO.OSC.SLEW value; y is in mHz (millihertz: 10^-3 Hz); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.LFO.SET x y |
sets oscillation for CV output x to LFO frequency y (ignores CV.OSC.SLEW); y is in mHz (millihertz: 10^-3 Hz); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.CYC x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in milliseconds |
||
TO.OSC.CYC.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in milliseconds |
||
TO.OSC.CYC.S x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in seconds |
||
TO.OSC.CYC.S.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in seconds |
||
TO.OSC.CYC.M x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in minutes |
||
TO.OSC.CYC.M.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in minutes |
||
TO.OSC.SCALE x y |
select scale # y for CV output x; scales listed in full description |
||
TO.OSC.WAVE x y |
set the waveform for output x to y; y values range 0-4999; values translate to sine (0), triangle (1000), saw (2000), pulse (3000), or noise (4000); oscillator shape between values is a blend of the pure waveforms |
||
TO.OSC.RECT x y |
rectifies the polarity of the oscillator for output x to y; range for y is -2 to 2; default is 0 (no rectification); 1 & -1 are partial rectification - omitting all values on the other side of the sign; 2 & -2 are full rectification - inverting values from the other pole |
||
TO.OSC.WIDTH x y |
sets the width of the pulse wave on output x to y; y is a percentage of total width (0 to 100); only affects waveform 3000 |
||
TO.OSC.SYNC x |
resets the phase of the oscillator on CV output x (relative to TO.OSC.PHASE) |
||
TO.OSC.PHASE x y |
sets the phase offset of the oscillator on CV output x to y (0 to 16383); y is the range of one cycle |
||
TO.OSC.SLEW x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in milliseconds |
||
TO.OSC.SLEW.S x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in seconds |
||
TO.OSC.SLEW.M x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in minutes |
||
TO.OSC.CTR x y |
centers the oscillation on CV output x to y; y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.ENV.ACT x y |
activates/deactivates the AD envelope generator for the CV output x; y turns the envelope generator off (0 - default) or on (1); CV amplitude is used as the peak for the envelope and needs to be > 0 for the envelope to be perceivable |
||
TO.ENV.TRIG x |
triggers the envelope at CV output x to cycle; CV amplitude is used as the peak for the envelope and needs to be > 0 for the envelope to be perceivable |
||
TO.ENV.ATT x y |
set the envelope attack time to y for CV output x; y in milliseconds (default 12 ms) |
||
TO.ENV.ATT.S x y |
set the envelope attack time to y for CV output x; y in seconds |
||
TO.ENV.ATT.M x y |
set the envelope attack time to y for CV output x; y in minutes |
||
TO.ENV.DEC x y |
set the envelope decay time to y for CV output x; y in milliseconds (default 250 ms) |
||
TO.ENV.DEC.S x y |
set the envelope decay time to y for CV output x; y in seconds |
||
TO.ENV.DEC.M x y |
set the envelope decay time to y for CV output x; y in minutes |
||
TO.ENV.EOR x n |
fires a PULSE at the End of Rise to the unit-local trigger output 'n' for the envelope on CV output x; n refers to trigger output 1-4 on the same TXo as CV output 'y' |
||
TO.ENV.EOC x n |
fires a PULSE at the End of Cycle to the unit-local trigger output 'n' for the envelope on CV output x; n refers to trigger output 1-4 on the same TXo as CV output 'y' |
||
TO.ENV.LOOP x y |
causes the envelope on CV output x to loop for y times; a y of 0 will cause the envelope to loop infinitely; setting y to 1 (default) disables looping and (if currently looping) will cause it to finish its current cycle and cease |
||
TO.TR.INIT x |
initializes TR output x back to the default boot settings and behaviors; neutralizes metronomes, dividers, pulse counters, etc. |
||
TO.CV.INIT x |
initializes CV output x back to the default boot settings and behaviors; neutralizes offsets, slews, envelopes, oscillation, etc. |
||
TO.INIT d |
initializes all of the TR and CV outputs for device number d (1-8) |
||
TO.KILL d |
cancels all TR pulses and CV slews for device number d (1-8) |
TO.TR.PULSE.DIV
TO.TR.PULSE.DIV x y- alias:
TO.TR.P.DIV
The pulse divider will output one trigger pulse every y pulse commands. For example, setting the DIV factor to 2 like this:
TO.TR.P.DIV 1 2
Will cause every other TO.TR.P 1 command to emit a pulse.
Reset it to one (TO.TR.P.DIV 1 1) or initialize the output (TO.TR.INIT 1) to return to the default behavior.
TO.TR.WIDTH
TO.TR.WIDTH x y
The actual time value for the trigger pulse when set by the WIDTH command is relative to the current value for TO.TR.M. Changes to TO.TR.M will change the duration of TR.PULSE when using the WIDTH mode to set its value. Values for y are set in percentage (0-100).
For example:
TO.TR.M 1 1000
TO.TR.WIDTH 1 50
The length of a TR.PULSE is now 500ms.
TO.TR.M 1 500
The length of a TR.PULSE is now 250ms. Note that you don't need to use the width command again as it automatically tracks the value for TO.TR.M.
TO.TR.M.ACT
TO.TR.M.ACT x y
Each TR output has its own independent metronome that will execute a TR.PULSE at a specified interval. The ACT command enables (1) or disables (0) the metronome.
TO.TR.M.COUNT
TO.TR.M.COUNT x y
This allows for setting a limit to the number of times TO.TR.M will PULSE when active before automatically disabling itself. For example, let's set it to pulse 5 times with 500ms between pulses:
TO.TR.M 1 500
TO.TR.M.COUNT 1 5
Now, each time we activate it, the metronome will pulse 5 times - each a half-second apart.
TO.TR.M.ACT 1 1
PULSE ... PULSE ... PULSE ... PULSE ... PULSE.
The metronome is now disabled after pulsing five times. If you call ACT again, it will emit five more pulses.
To reset, either set your COUNT to zero (TO.TR.M.COUNT 1 0) or call init on the output (TO.TR.INIT 1 1).
TO.TR.M.MUL
TO.TR.M.MUL x y
The following example will cause 2 against 3 patterns to pulse out of TO.TR outputs 3 and 4.
TO.TR.M.MUL 3 2
TO.TR.M.MUL 4 3
L 3 4: TO.TR.M.ACT I 1
TO.M.SYNC
TO.M.SYNC d
This command causes the TXo at device d to synchronize all of its independent metronomes to the moment it receives the command. Each will then continue to pulse at its own independent M rate.
TO.CV.SCALE
TO.CV.SCALE x y
Quantization Scales
- Equal Temperament [DEFAULT]
- 12-tone Pythagorean scale
- Vallotti & Young scale (Vallotti version) also known as Tartini-Vallotti (1754)
- Andreas Werckmeister's temperament III (the most famous one, 1681)
- Wendy Carlos' Alpha scale with perfect fifth divided in nine
- Wendy Carlos' Beta scale with perfect fifth divided by eleven
- Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty
- Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'
- Carlos Super Just
- Kurzweil "Empirical Arabic"
- Kurzweil "Just with natural b7th", is Sauveur Just with 7/4
- Kurzweil "Empirical Bali/Java Harmonic Pelog"
- Kurzweil "Empirical Bali/Java Slendro, Siam 7"
- Kurzweil "Empirical Tibetian Ceremonial"
- Harry Partch's 43-tone pure scale
- Partch's Indian Chromatic, Exposition of Monophony, 1933.
- Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white
TO.CV.LOG
TO.CV.LOG x y
The following example creates an envelope that ramps to 5V over a logarithmic curve:
TO.CV.SET 1 V 5
TO.CV.LOG 1 2
TO.ENV.ATT 1 500
TO.ENV.DEC.S 1 2
TO.ENV.ACT 1 1
When triggered (TO.ENV.TRIG 1), the envelope will rise to 5V over a half a second and then decay back to zero over two seconds. The curve used is 2, which covers 0V-5V.
If a curve is too small for the range being covered, values above the range will be limited to the range's ceiling. In the above example, voltages above 5V will all return as 5V.
TO.OSC
TO.OSC x y
Setting an OSC frequency greater than zero for a CV output will start that output oscillating. It will swing its voltage between to the current CV value and its polar opposite. For example:
TO.CV 1 V 5
TO.OSC 1 N 69
This will emit the audio-rate note A (at 440Hz) swinging from '+5V' to '-5V'. The CV value acts as an amplitude control. For example:
TO.CV.SLEW.M 1 1
TO.CV 1 V 10
This will cause the oscillations to gradually increase in amplitude from 5V to 10V over a period of one minute.
IMPORANT: if you do not set a CV value, the oscillator will not emit a signal.
If you want to go back to regular CV behavior, you need to set the oscillation frequency to zero. E.g. TO.OSC 1 0. You can also initialize the CV output with TO.CV.INIT 1, which resets all of its settings back to start-up default.
TO.OSC.SCALE
TO.OSC.SCALE x y
Quantization Scales
- Equal Temperament [DEFAULT]
- 12-tone Pythagorean scale
- Vallotti & Young scale (Vallotti version) also known as Tartini-Vallotti (1754)
- Andreas Werckmeister's temperament III (the most famous one, 1681)
- Wendy Carlos' Alpha scale with perfect fifth divided in nine
- Wendy Carlos' Beta scale with perfect fifth divided by eleven
- Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty
- Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'
- Carlos Super Just
- Kurzweil "Empirical Arabic"
- Kurzweil "Just with natural b7th", is Sauveur Just with 7/4
- Kurzweil "Empirical Bali/Java Harmonic Pelog"
- Kurzweil "Empirical Bali/Java Slendro, Siam 7"
- Kurzweil "Empirical Tibetian Ceremonial"
- Harry Partch's 43-tone pure scale
- Partch's Indian Chromatic, Exposition of Monophony, 1933.
- Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white
TO.OSC.RECT
TO.OSC.RECT x y
The rectification command performs a couple of levels of rectification based on how you have it set. The following values for y work as follows: * y = 2: "full-positive" - inverts negative values, making them positive * y = 1: "half-positive" - omits all negative values (values below zero are set to zero) * y = 0: no rectification (default) * y = -1: "half-negative" - omits all positive values (values above zero are set to zero) * y = -2: "full-negative" - inverts positive values, making them negative
TO.OSC.SLEW
TO.OSC.SLEW x y
This parameter acts as a frequency slew for the targeted CV output. It allows you to gradually slide from one frequency to another, creating a portamento like effect. It is also great for smoothing transitions between different LFO rates on the oscillator. For example:
TO.CV 1 V 5
TO.OSC.SLEW 1 30000
TO.OSC.LFO.SET 1 1000
TO.OSC.LFO 1 100
This will start an LFO on CV 1 with a rate of 1000mHz. Then, over the next 30 seconds, it will gradually decrease in rate to 100mHz.
TO.OSC.CTR
TO.OSC.CTR x y
For example, to create a sine wave that is centered at 2.5V and swings up to +5V and down to 0V, you would do this:
TO.CV 1 VV 250
TO.OSC.CTR 1 VV 250
TO.OSC.LFO 1 500
TO.ENV.ACT
TO.ENV.ACT x y
This setting activates (1) or deactivates (0) the envelope generator on CV output y. The envelope generator is dependent on the current voltage setting for the output. Upon activation, the targeted output will go to zero. Then, when triggered (TO.ENV.TRIG), it will ramp the voltage from zero to the currently set peak voltage (TO.CV) over the attack time (TO.ENV.ATT) and then decay back to zero over the decay time (TO.ENV.DEC). For example:
TO.CV.SET 1 V 8
TO.ENV.ACT 1 1
TO.ENV.ATT.S 1 1
TO.ENV.DEC.S 1 30
This will initialize the CV 1 output to have an envelope that will ramp to +8V over one second and decay back to zero over thirty seconds. To trigger the envelope, you need to send the trigger command TO.ENV.TRIG 1. Envelopes currently re-trigger from the start of the cycle.
To return your CV output to normal function, either deactivate the envelope (TO.ENV.ACT 1 0) or reinitialize the output (TO.CV.INIT 1).
TO.ENV.EOR
TO.ENV.EOR x n
The most important thing to know with this operator is that you can only cause the EOR trigger to fire on the same device as the TXo with the envelope. For this command, the outputs are numbered LOCALLY to the unit with the envelope.
For example, if you have an envelope running on your second TXo, you can only send the EOR pulse to the four outputs on that device:
TO.ENV.EOR 5 1
This will cause the first output on TXo #2 (TO.TR 5) to pulse after the envelope's attack segment.
TO.ENV.EOC
TO.ENV.EOC x n
The most important thing to know with this operator is that you can only cause the EOC trigger to fire on the same device as the TXo with the envelope. For this command, the outputs are numbered LOCALLY to the unit with the envelope.
For example, if you have an envelope running on your second TXo, you can only send the EOC pulse to the four outputs on that device:
TO.ENV.EOC 5 1
This will cause the first output on TXo #2 (TO.TR 5) to pulse after the envelope's decay segment.
Advanced
Teletype terminology
Here is a picture to help understand the naming of the various parts of a Teletype command:
COMMANDThe entire command, e.g.
IF X: Y 1; Z 2;.PREThe (optional) part before the
PRE SEP, e.g.IF X.POSTThe part after the PRE SEP, e.g.
Y 1; Z 2.SUBA sub command (only allowed in the
POST), e.g.Y 1, orZ 2.PRE SEPA colon, only one is allowed.
SUB SEPA semi-colon, that separates sub commands (if used), only allowed in the
POST.NUMA number between
−32768and32767.OPAn operator, e.g.
X,TR.PULSEMODA modifier, e.g.
IF, orL.
Sub commands
Sub commands allow you to run multiple commands on a single line by utilising a semi-colon to separate each command, for example the following script:
X 0
Y 1
Z 2
Can be rewritten using sub commands as:
X 0; Y 1; Z 2
On their own sub commands allow for an increased command density on the Teletype. However when combined with PRE statements, certain operations become a lot easier.
Firstly, sub commands cannot be used before a MOD or in the PRE itself. For example, the following is not allowed:
X 1; IF X: TR.PULSE 1
We can use them in the POST though, particularly with an IF, for example:
IF X: CV 1 N 60; TR.P 1
IF Y: TR.P 1; TR.P 2; TR.P 3
Sub commands can also be used with L, though due to (current) limitations on how many separate numbers, OPs and MODs are allowed in a single command this can be tricky (even if you can fit the text on a line).
Aliases
In general, aliases are a simple concept to understand. Certain OPs have been given shorted names to save space and the amount of typing, for example:
TR.PULSE 1
Can be replaced with:
TR.P 1
Where confusion may arise is with the symbolic aliases that have been given to some of the maths OPs. For instance + is given as an alias for ADD and it must be used as a direct replacement:
X ADD 1 1
X + 1 1
The key to understanding this is that the Teletype uses prefix notation2 always, even when using mathematical symbols.
The following example (using infix notation) will not work:
X 1 + 1
Aliases are entirely optional, most OPs do not have aliases. Consult the OP tables and documentation to find them.
Avoiding non-determinism
Although happy accidents in the modular world are one of it's many joys, when writing computer programs they can be incredibly frustrating. Here are some small tips to help keep things predictable (when you want to them to be):
Don't use variables unless you need to.
This is not to say that variables are not useful, rather it's the opposite and they are extremely powerful. But it can be hard to keep a track of what each variable is used for and on which script it is used. Rather, try to save using variables for when you do want non-deterministic (i.e. variable) behaviour.
Consider using
Ias a temporary variable.If you do find yourself needing a variable, particularly one that is used to continue a calculation on another line, consider using the variable
I. Unlike the other variables,Iis overwritten wheneverLis used, and as such, is implicitly transient in nature. One should never need to worry about modifying the value ofIand causing another script to malfunction, as no script should ever assume the value ofI.Use
PNversions ofOPs.Most
POPs are now available asPNversions that ignore the value ofP.I. (e.g.PN.STARTforP.START). Unless you explicitly require the non-determinism ofPversions, stick to thePNversions (space allowing).Avoid using
A,B,CandDto refer to the trigger outputs, instead use the numerical values directly.As
A-Dare variables, they may no longer contain the values1-4, and while this was the recommend way to name triggers, it is no longer consider ideal. Newer versions of the Teletype hardware have replaced the labels on the trigger outputs, with the numbers1to4.
Alphabetical list of OPs and MODs
| OP | OP (set) | (aliases) | Description |
|---|---|---|---|
A |
A x |
get / set the variable A, default 1 |
|
ABS x |
absolute value of x |
||
ADD x y |
+ |
add x and y together |
|
AND x y |
&& |
logical AND of x and y |
|
ARP.DIV v d |
set voice clock divisor (euclidean length), range [1-32] | ||
ARP.ER v f d r |
set all euclidean rhythm | ||
ARP.FIL v f |
set voice euclidean fill, use 1 for straight clock division, range [1-32] | ||
ARP.GT v g |
set voice gate length [0-127], scaled/synced to course divisions of voice clock | ||
ARP.HLD h |
0 disables key hold mode, other values enable |
||
ARP.RES v |
reset voice clock/pattern on next base clock tick | ||
ARP.ROT v r |
set voice euclidean rotation, range [-32, 32] | ||
ARP.RPT v n s |
set voice pattern repeat, n times [0-8], shifted by s semitones [-24, 24] |
||
ARP.SHIFT v o |
shift voice cv by standard tt pitch value (e.g. N 6, V -1, etc) | ||
ARP.SLEW v t |
set voice slew time in ms | ||
ARP.STY y |
set base arp style [0-7] | ||
AVG x y |
the average of x and y |
||
B |
B x |
get / set the variable B, default 2 |
|
C |
C x |
get / set the variable C, default 3 |
|
CV x |
CV x y |
CV target value | |
CV.OFF x |
CV.OFF x y |
CV offset added to output | |
CV.SET x |
Set CV value | ||
CV.SLEW x |
CV.SLEW x y |
Get/set the CV slew time in ms | |
CY.CV x |
get the current CV value for channel x |
||
CY.POS x |
CY.POS x y |
get / set position of channel x (x = 0 to set all), position between 0-255 |
|
CY.PRE |
CY.PRE x |
return current preset / load preset x |
|
CY.RES x |
reset channel x (0 = all) |
||
CY.REV x |
reverse channel x (0 = all) |
||
D |
D x |
get / set the variable D, default 4 |
|
DEL x: ... |
Delay command by x ms |
||
DEL.CLR |
Clear the delay buffer | ||
DIV x y |
/ |
divide x by y |
|
DRUNK |
DRUNK x |
changes by -1, 0, or 1 upon each read saving its state, setting will give it a new value for the next read |
|
DRUNK.MAX |
DRUNK.MAX x |
set the upper bound for DRUNK, default 255 |
|
DRUNK.MIN |
DRUNK.MIN x |
set the lower bound for DRUNK, default 0 |
|
DRUNK.WRAP |
DRUNK.WRAP x |
should DRUNK wrap around when it reaches it's bounds, default 0 |
|
ELIF x: ... |
if all previous IF / ELIF fail, and x is not zero, execute command |
||
ELSE: ... |
if all previous IF / ELIF fail, excute command |
||
EQ x y |
== |
does x equal y |
|
ER f l i |
Euclidean rhythm, f is fill (1-32), l is length (1-32) and i is step (any value), returns 0 or 1 |
||
ES.CLOCK x |
If II clocked, next pattern event | ||
ES.MAGIC x |
Magic shape (1= halfspeed, 2=doublespeed, 3=linearize) | ||
ES.MODE x |
Set pattern clock mode. (0=normal, 1=II clock) | ||
ES.PATTERN x |
Select playing pattern (0-15) | ||
ES.PRESET x |
Recall preset x (0-7) |
||
ES.RESET x |
Reset pattern to start (and start playing) | ||
ES.STOP x |
Stop pattern playback. | ||
ES.TRANS x |
Transpose the current pattern | ||
ES.TRIPLE x |
Recall triple shape (1-4) | ||
EXP x |
exponentiation table lookup. 0-16383 range (V 0-10) |
||
EZ x |
! |
x is 0, equivalent to logical NOT |
|
FLIP |
FLIP x |
returns inverted state (0 or 1) on each read (also settable) |
|
GT x y |
> |
x is greater than y |
|
GTE x y |
>= |
x is greater than or equal to y |
|
I |
I x |
get / set the variable I, this variable is overwritten by L, but can be used freely outside an L loop |
|
IF x: ... |
if x is not zero execute command |
||
IN |
Get the value of IN jack (0-16383) | ||
JI x y |
just intonation helper, precision ratio divider normalised to 1V | ||
KILL |
clears stack, clears delays, cancels pulses, cancels slews | ||
KR.L.LEN |
KR.L.LEN |
get length of trrack x, parameter y / set to z |
|
KR.L.ST x y |
KR.L.ST x y z |
get loop start for track x, parameter y / set to z |
|
KR.PAT |
KR.PAT x |
get/set current pattern | |
KR.PERIOD |
KR.PERIOD x |
get/set internal clock period | |
KR.POS x y |
KR.POS x y z |
get/set position z for track z, parameter y |
|
KR.PRE |
KR.PRE x |
return current preset / load preset x |
|
KR.RES x y |
reset to loop start for track x, parameter y |
||
KR.SCALE |
KR.SCALE x |
get/set current scale | |
L x y: ... |
run the command sequentially with I values from x to y |
||
LIM x y z |
limit the value x to the range y to z inclusive |
||
LSH x y |
<< |
left shift x by y bits, in effect multiply by 2 to the power of x |
|
LT x y |
< |
x is less than y |
|
LTE x y |
<= |
x is less than or equal to y |
|
LV.CV x |
get the current CV value for channel x |
||
LV.L.DIR |
LV.L.DIR x |
get/set loop direction | |
LV.L.LEN |
LV.L.LEN x |
get/set loop length | |
LV.L.ST |
LV.L.ST x |
get/set loop start | |
LV.POS |
LV.POS x |
get/set current position | |
LV.PRE |
LV.PRE x |
return current preset / load preset x |
|
LV.RES x |
reset, 0 for soft reset (on next ext. clock), 1 for hard reset |
||
M |
M x |
get/set metronome interval to x (in ms), default 1000, minimum value 25 |
|
M! |
M! x |
get/set metronome to experimental interval x (in ms), minimum value 2 |
|
M.ACT |
M.ACT x |
get/set metronome activation to x (0/1), default 1 (enabled) |
|
M.RESET |
hard reset metronome count without triggering | ||
MAX x y |
return the maximum of x and y |
||
ME.PERIOD |
ME.PERIOD x |
get/set internal clock period | |
ME.PRE |
ME.PRE x |
return current preset / load preset x |
|
ME.RES x |
reset channel x (0 = all), also used as "start" |
||
ME.SCALE |
ME.SCALE x |
get/set current scale | |
ME.STOP x |
stop channel x (0 = all) |
||
MID.SHIFT o |
shift pitch CV by standard Teletype pitch value (e.g. N 6, V -1, etc) |
||
MID.SLEW t |
set pitch slew time in ms (applies to all allocation styles except FIXED) | ||
MIN x y |
return the minimum of x and y |
||
MOD x y |
% |
find the remainder after division of x by y |
|
MP.PRESET x |
set Meadowphysics to preset x (indexed from 0) |
||
MP.RESET x |
reset countdown for channel x (0 = all, 1-8 = individual channels) |
||
MP.STOP x |
reset channel x (0 = all, 1-8 = individual channels) |
||
MUL x y |
* |
multiply x and y together |
|
MUTE x |
MUTE x y |
Disable trigger input x | |
N x |
converts an equal temperament note number to a value usable by the CV outputs (x in the range -127 to 127) |
||
NE x y |
!= , XOR |
x is not equal to y |
|
NZ x |
x is not 0 |
||
O |
O x |
auto-increments after each access, can be set, starting value 0 |
|
O.INC |
O.INC x |
how much to increment O by on each invocation, default 1 |
|
O.MAX |
O.MAX x |
the upper bound for O, default 63 |
|
O.MIN |
O.MIN x |
the lower bound for O, default 0 |
|
O.WRAP |
O.WRAP x |
should O wrap when it reaches its bounds, default 1 |
|
OR x y |
|| |
logical OR of x and y |
|
OR.BANK x |
Select preset bank x (1-8) |
||
OR.CLK x |
Advance track x (1-4) |
||
OR.CVA x |
Select tracks for CV A where x is a binary number representing the tracks |
||
OR.CVB x |
Select tracks for CV B where x is a binary number representing the tracks |
||
OR.DIV x |
Set divisor for selected track to x (1-16) |
||
OR.GRST x |
Global reset (x can be any value) |
||
OR.MUTE x |
Mute trigger selected by OR.TRK (0 = on, 1 = mute) |
||
OR.PHASE x |
Set phase for selected track to x (0-16) |
||
OR.PRESET x |
Select preset x (1-8) |
||
OR.RELOAD x |
Reload preset or bank (0 - current preset, 1 - current bank, 2 - all banks) |
||
OR.ROTS x |
Rotate scales by x (1-15) |
||
OR.ROTW x |
Rotate weights by x (1-3) |
||
OR.RST x |
Reset track x (1-4) |
||
OR.SCALE x |
Select scale x (1-16) |
||
OR.TRK x |
Choose track x (1-4) to be used by OR.DIV, OR.PHASE, OR.WGT or OR.MUTE |
||
OR.WGT x |
Set weight for selected track to x (1-8) |
||
P x |
P x y |
get/set the value of the working pattern at index x |
|
P.END |
P.END x |
get/set the end location of the working pattern, default 63 |
|
P.HERE |
P.HERE x |
get/set value at current index of working pattern | |
P.I |
P.I x |
get/set index position for the working pattern. | |
P.INS x y |
insert value y at index x of working pattern, shift later values down, destructive to loop length |
||
P.L |
P.L x |
get/set pattern length of the working pattern, non-destructive to data | |
P.N |
P.N x |
get/set the pattern number for the working pattern, default 0 |
|
P.NEXT |
P.NEXT x |
increment index of working pattern then get/set value | |
P.POP |
return and remove the value from the end of the working pattern (like a stack), destructive to loop length | ||
P.PREV |
P.PREV x |
decrement index of working pattern then get/set value | |
P.PUSH x |
insert value x to the end of the working pattern (like a stack), destructive to loop length |
||
P.RM x |
delete index x of working pattern, shift later values up, destructive to loop length |
||
P.START |
P.START x |
get/set the start location of the working pattern, default 0 |
|
P.WRAP |
P.WRAP x |
when the working pattern reaches its bounds does it wrap (0/1), default 1 (enabled) |
|
PARAM |
PRM |
Get the value of PARAM knob (0-16383) | |
PN x y |
PN x y z |
get/set the value of pattern x at index y |
|
PN.END x |
PN.END x y |
get/set the end location of the pattern x, default 63 |
|
PN.HERE x |
PN.HERE x y |
get/set value at current index of pattern x |
|
PN.I x |
PN.I x y |
get/set index position for pattern x |
|
PN.INS x y z |
insert value z at index y of pattern x, shift later values down, destructive to loop length |
||
PN.L x |
PN.L x y |
get/set pattern length of pattern x. non-destructive to data | |
PN.NEXT x |
PN.NEXT x y |
increment index of pattern x then get/set value |
|
PN.POP x |
return and remove the value from the end of pattern x (like a stack), destructive to loop length |
||
PN.PREV x |
PN.PREV x y |
decrement index of pattern x then get/set value |
|
PN.PUSH x y |
insert value y to the end of pattern x (like a stack), destructive to loop length |
||
PN.RM x y |
delete index y of pattern x, shift later values up, destructive to loop length |
||
PN.START x |
PN.START x y |
get/set the start location of pattern x, default 0 |
|
PN.WRAP x |
PN.WRAP x y |
when pattern x reaches its bounds does it wrap (0/1), default 1 (enabled) |
|
PROB x: ... |
potentially execute command with probability x (0-100) |
||
Q |
Q x |
Modify the queue entries | |
Q.AVG |
Q.AVG x |
Return the average of the queue | |
Q.N |
Q.N x |
The queue length | |
QT x y |
round x to the closest multiple of y (quantise) |
||
RAND x |
generate a random number between 0 and x inclusive |
||
RRAND x y |
generate a random number between x and y inclusive |
||
RSH x y |
>> |
right shift x by y bits, in effect divide by 2 to the power of x |
|
S: ... |
Place a command onto the stack | ||
S.ALL |
Execute all entries in the stack | ||
S.CLR |
Clear all entries in the stack | ||
S.L |
Get the length of the stack | ||
S.POP |
Execute the most recent entry | ||
SCALE a b x y i |
scale i from range a to b to range x to y, i.e. i * (y - x) / (b - a) |
||
SCENE x |
load scene x (0-31) |
||
SCRIPT x |
execute script x (1-8), recursion allowed |
||
STATE x |
Read the current state of input x | ||
SUB x y |
- |
subtract y from x |
|
T |
T x |
get / set the variable T, typically used for time, default 0 |
|
TI.IN x |
reads the value of IN jack x; default return range is from -16384 to 16383 - representing -10V to +10V; return range can be altered by the TI.IN.MAP command |
||
TI.IN.CALIB x y |
calibrates the scaling for IN jack x; y of -1 sets the -10V point; y of 0 sets the 0V point; y of 1 sets the +10V point |
||
TI.IN.INIT x |
initializes IN jack x back to the default boot settings and behaviors; neutralizes mapping (but not calibration) |
||
TI.IN.MAP x y z |
maps the IN values for input jack x across the range y - z (default range is -16384 to 16383 - representing -10V to +10V) |
||
TI.IN.N x |
return the quantized note number for IN jack x using the scale set by TI.IN.SCALE |
||
TI.IN.QT x |
return the quantized value for IN jack x using the scale set by TI.IN.SCALE; default return range is from -16384 to 16383 - representing -10V to +10V |
||
TI.IN.SCALE x |
select scale # y for IN jack x; scales listed in full description |
||
TI.INIT d |
initializes all of the PARAM and IN inputs for device number d (1-8) |
||
TI.PARAM x |
TI.PRM |
reads the value of PARAM knob x; default return range is from 0 to 16383; return range can be altered by the TI.PARAM.MAP command |
|
TI.PARAM.CALIB x y |
TI.PRM.CALIB |
calibrates the scaling for PARAM knob x; y of 0 sets the bottom bound; y of 1 sets the top bound |
|
TI.PARAM.INIT x |
TI.PRM.INIT |
initializes PARAM knob x back to the default boot settings and behaviors; neutralizes mapping (but not calibration) |
|
TI.PARAM.MAP x y z |
TI.PRM.MAP |
maps the PARAM values for input x across the range y - z (defaults 0-16383) |
|
TI.PARAM.N x |
TI.PRM.N |
return the quantized note number for PARAM knob x using the scale set by TI.PARAM.SCALE |
|
TI.PARAM.QT x |
TI.PRM.QT |
return the quantized value for PARAM knob x using the scale set by TI.PARAM.SCALE; default return range is from 0 to 16383 |
|
TI.PARAM.SCALE x |
TI.PRM.SCALE |
select scale # y for PARAM knob x; scales listed in full description |
|
TI.RESET d |
resets the calibration data for TXi number d (1-8) to its factory defaults (no calibration) |
||
TI.STORE d |
stores the calibration data for TXi number d (1-8) to its internal flash memory |
||
TIME |
TIME x |
timer value, counts up in ms., wraps after 32s, can be set | |
TIME.ACT |
TIME.ACT x |
enable or disable timer counting, default 1 |
|
TO.CV x |
CV target output x; y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.CV.INIT x |
initializes CV output x back to the default boot settings and behaviors; neutralizes offsets, slews, envelopes, oscillation, etc. |
||
TO.CV.LOG x y |
translates the output for CV output x to logarithmic mode y; y defaults to 0 (off); mode 1 is for 0-16384 (0V-10V), mode 2 is for 0-8192 (0V-5V), mode 3 is for 0-4096 (0V-2.5V), etc. |
||
TO.CV.N x y |
target the CV to note y for output x; y is indexed in the output's current CV.SCALE |
||
TO.CV.N.SET x y |
set the CV to note y for output x; y is indexed in the output's current CV.SCALE (ignoring SLEW) |
||
TO.CV.OFF x y |
set the CV offset for output x; y values are added at the final stage |
||
TO.CV.QT x y |
CV target output x; y is quantized to output's current CV.SCALE |
||
TO.CV.QT.SET x y |
set the CV for output x (ignoring SLEW); y is quantized to output's current CV.SCALE |
||
TO.CV.SCALE x y |
select scale # y for CV output x; scales listed in full description |
||
TO.CV.SET x y |
set the CV for output x (ignoring SLEW); y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.CV.SLEW x y |
set the slew amount for output x; y in milliseconds |
||
TO.CV.SLEW.M x y |
set the slew amount for output x; y in minutes |
||
TO.CV.SLEW.S x y |
set the slew amount for output x; y in seconds |
||
TO.ENV.ACT x y |
activates/deactivates the AD envelope generator for the CV output x; y turns the envelope generator off (0 - default) or on (1); CV amplitude is used as the peak for the envelope and needs to be > 0 for the envelope to be perceivable |
||
TO.ENV.ATT x y |
set the envelope attack time to y for CV output x; y in milliseconds (default 12 ms) |
||
TO.ENV.ATT.M x y |
set the envelope attack time to y for CV output x; y in minutes |
||
TO.ENV.ATT.S x y |
set the envelope attack time to y for CV output x; y in seconds |
||
TO.ENV.DEC x y |
set the envelope decay time to y for CV output x; y in milliseconds (default 250 ms) |
||
TO.ENV.DEC.M x y |
set the envelope decay time to y for CV output x; y in minutes |
||
TO.ENV.DEC.S x y |
set the envelope decay time to y for CV output x; y in seconds |
||
TO.ENV.EOC x n |
fires a PULSE at the End of Cycle to the unit-local trigger output 'n' for the envelope on CV output x; n refers to trigger output 1-4 on the same TXo as CV output 'y' |
||
TO.ENV.EOR x n |
fires a PULSE at the End of Rise to the unit-local trigger output 'n' for the envelope on CV output x; n refers to trigger output 1-4 on the same TXo as CV output 'y' |
||
TO.ENV.LOOP x y |
causes the envelope on CV output x to loop for y times; a y of 0 will cause the envelope to loop infinitely; setting y to 1 (default) disables looping and (if currently looping) will cause it to finish its current cycle and cease |
||
TO.ENV.TRIG x |
triggers the envelope at CV output x to cycle; CV amplitude is used as the peak for the envelope and needs to be > 0 for the envelope to be perceivable |
||
TO.INIT d |
initializes all of the TR and CV outputs for device number d (1-8) |
||
TO.KILL d |
cancels all TR pulses and CV slews for device number d (1-8) |
||
TO.M d y |
sets the 4 independent metronome intervals for device d (1-8) to y in milliseconds; default 1000 |
||
TO.M.ACT d y |
sets the active status for the 4 independent metronomes on device d (1-8) to y (0/1); default 0 (disabled) |
||
TO.M.BPM d y |
sets the 4 independent metronome intervals for device d to y in Beats Per Minute |
||
TO.M.COUNT d y |
sets the number of repeats before deactivating for the 4 metronomes on device d to y; default 0 (infinity) |
||
TO.M.M d y |
sets the 4 independent metronome intervals for device d to y in minutes |
||
TO.M.S d y |
sets the 4 independent metronome intervals for device d to y in seconds; default 1 |
||
TO.M.SYNC d |
synchronizes the 4 metronomes for device number d (1-8) |
||
TO.OSC x y |
targets oscillation for CV output x to y with the portamento rate determined by the TO.OSC.SLEW value; y is 1v/oct translated from the standard range (1-16384); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.CTR x y |
centers the oscillation on CV output x to y; y values are bipolar (-16384 to +16383) and map to -10 to +10 |
||
TO.OSC.CYC x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in milliseconds |
||
TO.OSC.CYC.M x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in minutes |
||
TO.OSC.CYC.M.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in minutes |
||
TO.OSC.CYC.S x y |
targets the oscillator cycle length to y for CV output x with the portamento rate determined by the TO.OSC.SLEW value; y is in seconds |
||
TO.OSC.CYC.S.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in seconds |
||
TO.OSC.CYC.SET x y |
sets the oscillator cycle length to y for CV output x (ignores CV.OSC.SLEW); y is in milliseconds |
||
TO.OSC.FQ x y |
targets oscillation for CV output x to frequency y with the portamento rate determined by the TO.OSC.SLEW value; y is in Hz; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.FQ x y |
sets oscillation for CV output x to frequency y (ignores CV.OSC.SLEW); y is in Hz; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.LFO x y |
targets oscillation for CV output x to LFO frequency y with the portamento rate determined by the TO.OSC.SLEW value; y is in mHz (millihertz: 10^-3 Hz); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.LFO.SET x y |
sets oscillation for CV output x to LFO frequency y (ignores CV.OSC.SLEW); y is in mHz (millihertz: 10^-3 Hz); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.N x y |
targets oscillation for CV output x to note y with the portamento rate determined by the TO.OSC.SLEW value; see quantization scale reference for y; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.N.SET x y |
sets oscillation for CV output x to note y (ignores CV.OSC.SLEW); see quantization scale reference for y; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.PHASE x y |
sets the phase offset of the oscillator on CV output x to y (0 to 16383); y is the range of one cycle |
||
TO.OSC.QT x y |
targets oscillation for CV output x to y with the portamento rate determined by the TO.OSC.SLEW value; y is 1v/oct translated from the standard range (1-16384) and quantized to current OSC.SCALE; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.QT.SET x y |
set oscillation for CV output x to y (ignores CV.OSC.SLEW); y is 1v/oct translated from the standard range (1-16384) and quantized to current OSC.SCALE; a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.RECT x y |
rectifies the polarity of the oscillator for output x to y; range for y is -2 to 2; default is 0 (no rectification); 1 & -1 are partial rectification - omitting all values on the other side of the sign; 2 & -2 are full rectification - inverting values from the other pole |
||
TO.OSC.SCALE x y |
select scale # y for CV output x; scales listed in full description |
||
TO.OSC.SET x y |
set oscillation for CV output x to y (ignores CV.OSC.SLEW); y is 1v/oct translated from the standard range (1-16384); a value of 0 disables oscillation; CV amplitude is used as the peak for oscillation and needs to be > 0 for it to be perceivable |
||
TO.OSC.SLEW x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in milliseconds |
||
TO.OSC.SLEW.M x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in minutes |
||
TO.OSC.SLEW.S x y |
sets the frequency slew time (portamento) for the oscillator on CV output x to y; y in seconds |
||
TO.OSC.SYNC x |
resets the phase of the oscillator on CV output x (relative to TO.OSC.PHASE) |
||
TO.OSC.WAVE x y |
set the waveform for output x to y; y values range 0-4999; values translate to sine (0), triangle (1000), saw (2000), pulse (3000), or noise (4000); oscillator shape between values is a blend of the pure waveforms |
||
TO.OSC.WIDTH x y |
sets the width of the pulse wave on output x to y; y is a percentage of total width (0 to 100); only affects waveform 3000 |
||
TO.TR x y |
sets the TR value for output x to y (0/1) |
||
TO.TR.INIT x |
initializes TR output x back to the default boot settings and behaviors; neutralizes metronomes, dividers, pulse counters, etc. |
||
TO.TR.M x y |
sets the independent metronome interval for output x to y in milliseconds; default 1000 |
||
TO.TR.M.ACT x y |
sets the active status for the independent metronome for output x to y (0/1); default 0 (disabled) |
||
TO.TR.M.BPM x y |
sets the independent metronome interval for output x to y in Beats Per Minute |
||
TO.TR.M.COUNT x y |
sets the number of repeats before deactivating for output x to y; default 0 (infinity) |
||
TO.TR.M.M x y |
sets the independent metronome interval for output x to y in minutes |
||
TO.TR.M.MUL x y |
multiplies the M rate on TR output x by y; y defaults to 1 - no multiplication |
||
TO.TR.M.S x y |
sets the independent metronome interval for output x to y in seconds; default 1 |
||
TO.TR.M.SYNC x |
synchronizes the PULSE for metronome on TR output number x |
||
TO.TR.POL x y |
sets the polarity for TR output n |
||
TO.TR.PULSE x |
TO.TR.P |
pulses the TR value for output x for the duration set by TO.TR.TIME/S/M |
|
TO.TR.PULSE.DIV x y |
TO.TR.P.DIV |
sets the clock division factor for TR output x to y |
|
TO.TR.PULSE.MUTE x y |
TO.TR.P.MUTE |
mutes or un-mutes TR output x; y is 1 (mute) or 0 (un-mute) |
|
TO.TR.TIME x y |
sets the time for TR.PULSE on output n; y in milliseconds |
||
TO.TR.TIME.M x y |
sets the time for TR.PULSE on output n; y in minutes |
||
TO.TR.TIME.S x y |
sets the time for TR.PULSE on output n; y in seconds |
||
TO.TR.TOG x |
toggles the TR value for output x |
||
TO.TR.WIDTH x y |
sets the time for TR.PULSE on output n based on the width of its current metronomic value; y in percentage (0-100) |
||
TOSS |
randomly return 0 or 1 |
||
TR |
TR |
Set trigger output x to y (0-1) | |
TR.POL x |
TR.POL x y |
Set polarity of trigger output x to y (0-1) | |
TR.PULSE x |
TR.P |
Pulse trigger output x | |
TR.TIME x |
TR.TIME x y |
Set the pulse time of trigger x to y ms | |
TR.TOG x |
Flip the state of trigger output x | ||
V x |
converts a voltage to a value usable by the CV outputs (x between 0 and 10) |
||
VV x |
converts a voltage to a value usable by the CV outputs (x between 0 and 1000, 100 represents 1V) |
||
WRAP x y z |
limit the value x to the range y to z inclusive, but with wrapping |
||
WW.END x |
Set the loop end position (0-15) | ||
WW.MUTE1 x |
Mute trigger 1 (0 = on, 1 = mute) | ||
WW.MUTE2 x |
Mute trigger 2 (0 = on, 1 = mute) | ||
WW.MUTE3 x |
Mute trigger 3 (0 = on, 1 = mute) | ||
WW.MUTE4 x |
Mute trigger 4 (0 = on, 1 = mute) | ||
WW.MUTEA x |
Mute CV A (0 = on, 1 = mute) | ||
WW.MUTEB x |
Mute CV B (0 = on, 1 = mute) | ||
WW.PATTERN x |
Change pattern (0-15) | ||
WW.PMODE x |
Set the loop play mode (0-5) | ||
WW.POS x |
Cut to position (0-15) | ||
WW.PRESET x |
Recall preset (0-7) | ||
WW.QPATTERN x |
Change pattern (0-15) after current pattern ends | ||
WW.START x |
Set the loop start position (0-15) | ||
WW.SYNC x |
Cut to position (0-15) and hard-sync the clock (if clocked internally) | ||
X |
X x |
get / set the variable X, default 0 |
|
Y |
Y x |
get / set the variable Y, default 0 |
|
Z |
Z x |
get / set the variable Z, default 0 |
Missing documentation
JF.GOD, JF.MODE, JF.NOTE, JF.QT, JF.RMODE, JF.RUN, JF.SHIFT, JF.TICK, JF.TR, JF.TUNE, JF.VOX, JF.VTR
Changelog
v2.0
- BREAKING: remove
IIop. Ops that required it will now work with out it. (e.g.II MP.PRESET 1will become justMP.PRESET 1) - BREAKING: merge the
MUTEandUNMUTEops. NowMUTE xwill return the mute status for triggerx(0is unmuted,1is muted), andMUTE x ywill set the mute for triggerx(y = 0to unmute,y = 1to mute) - BREAKING: remove unused Meadowphysics ops:
MP.SYNC,MP.MUTE,MP.UNMUTE,MP.FREEZE,MP.UNFREEZE - BREAKING: rename Ansible Meadowphysics ops to start with
ME - NEW: sub commands, use a
;separator to run multiple commands on a single line, e.g.X 1; Y 2 - NEW: key bindings rewritten
- NEW: aliases:
+forADD,-forSUB,*forMUL,/forDIV,%forMOD,<<forLSH,>>forRSH,==forEQ,!=forNE,<forLT,>forGT,<=forLTE,>=forGTE,!forEZ,&&forAND,||forOR,PRMforPARAM,TR.PforTR.PULSE - NEW: new ops:
LTE(less than or equal), andGTE(greater than or equal) - NEW: new pattern ops:
PN.L,PN.WRAP,PN.START,PN.END,PN.I,PN.HERE,PN.NEXT,PN.PREV,PN.INS,PN.RM,PN.PUSHandPN.POP - NEW: USB disk loading and saving works at any time
- NEW:
Mlimited to setting the metronome speed to 25ms, addedM!to allow setting the metronome at unsupported speeds as low as 2ms - NEW: TELEX Aliases:
TO.TR.PforTO.TR.PULSE(plus all sub-commands) andTI.PRMforTI.PARAM(plus all sub-commands) - NEW: TELEX initialization commands:
TO.TR.INIT n,TO.CV.INIT n,TO.INIT x,TI.PARAM.INIT n,TI.IN.INIT n, andTI.INIT x - IMP: new Ragel parser backend
- IMP: script recursion enhanced, maximum recursion depth is 8, and self recursion is allowed
- IMP: removed the need to prefix
:and;with a space, e.g.IF X : TR.PULSE 1becomesIF X: TR.PULSE - IMP:
ANDandORnow work as boolean logic, rather than bitwise,XORis an alias forNE - FIX: divide by zero errors now explicitly return a 0 (e.g.
DIV 5 0now returns 0 instead of -1), previously the behaviour was undefined and would crash the simulator - FIX: numerous crashing bugs with text entry
- FIX:
i2cbus crashes under highMtimes with external triggers - FIX:
P.IandPN.Ino longer set values longer than allowed - FIX:
VVworks correctly with negative values
v1.4.1
- NEW: added Ansible remote commands
LV.CVandCY.CV - NEW: Added TELEX Modules Support for the TXi and the TXo
- NEW: 75 New Operators Across the Two Modules
- NEW: Supports all basic Teletype functions (add
TIandTOto the commands you already know) - NEW: Extended functionality allows for additional capabilities for existing functions
- NEW: Experimental input operators add capabilities such as input range mapping and quantization
- NEW: Experimental output operators add oscillators, envelopes, independent metronomes, pulse dividing, etc.
- NEW: Full List of Methods Found and Maintained Here
v1.2.1
- NEW: Just Friends ops:
JF.GOD,JF.MODE,JF.NOTE,JF.RMODE,JF.RUN,JF.SHIFT,JF.TICK,JF.TR,JF.TUNE,JF.VOX,JF.VTR
v1.2
- NEW: Ansible support added to ops:
CV,CV.OFF,CV.SET,CV.SLEW,STATE,TR,TR.POL,TR.PULSE,TR.TIME,TR.TOG - NEW:
P.RMwill also return the value removed - NEW:
ERop - IMP: a
TR.TIMEof 0 will disable the pulse - IMP:
O.DIRrenamed toO.INC, it's the value by whichOis incremented when it is accessed - IMP:
IF,ELIF,ELSEstatus is reset on each script run - IMP: key repeat now works for all keypresses
- FIX:
FLIPwon't interfere with the value ofO - FIX: the
Oop now returns it's set value before updating itself - FIX: the
DRUNKop now returns it's set value before updating itself - FIX:
P.STARTandP.ENDwere set to 1 when set with too large values, now are set to 63 - FIX:
CV.SLEWis correctly initialised to 1 for all outputs - FIX: several bugs where pattern length wasn't updated in track mode
- FIX: fixed
[and]not updating values in track mode
v1.1
- NEW: USB flash drive read/write
- NEW:
SCRIPTop for scripted execution of other scripts! - NEW:
MUTEandUNMUTEops for disabling trigger input - NEW: hotkeys for
MUTEtoggle per input (meta-shift-number) - NEW: screen indication in live mode for
MUTEstatus - NEW:
SCALEop for scaling number from one range to another - NEW:
JIop just intonation helper - NEW:
STATEop to read current state of input triggers 1-8 (low/high = 0/1) - NEW: keypad executes scripts (works for standalone USB keypads and full-sized keyboards)
- NEW:
KILLop clears delays, stack, CV slews, pulses - NEW: hotkey meta+ESC executes
KILL - NEW:
ABSop absolute value, single argument - NEW:
FLIPop variable which changes state (0/1) on each read - NEW: logic ops:
AND,OR,XOR - NEW:
Oops:O.MIN,O.MAX,O.WRAP,O.DIRfor counter range control - NEW:
DRUNKops:DRUNK.MIN,DRUNK.MAX,DRUNK.WRAPfor range control - NEW:
TR.POLspecifies the polarity ofTR.PULSE - NEW: if powered down in tracker mode, will power up in tracker mode
- IMP:
TR.PULSEretrigger behaviour now predictable - IMP: mode switch keys more consistent (not constantly resetting to live mode)
- FIX: bug in command history in live mode
- FIX:
EXPop now exists - FIX:
PandPNparse error - FIX: possible crash on excess length line entry
- FIX:
CVwrapping with negativeCV.OFFvalues - FIX: INIT script executed now on keyboardless scene recall
- FIX:
Q.AVGoverflow no more - FIX:
P.PUSHwill fully fill a pattern - FIX:
CV.SETfollowed by slewed CV in one command works - FIX:
DEL 0no longer voids command
v1.0
- Initial release