Teletype workflow, basics, and questions

Hi all, nice to be here, etc. I’m an experienced synth guy finally getting into Eurorack - have satisfied my modular urge with Nord G2s for the past decade, but need to get back to the wires. I have been focusing on sound generation while postponing the sequencer/control question… then I discovered teletype…

More on that - back in the 80’s I wrote a few algorithmic composition packages that obtained some notoriety (Dr. T’s Algorithmic Composer, Tunesmith), but moved on to other things. I’d like to explore that area again in my own music. The Nords can do things like this but only with great effort. I’m hoping for a system I can learn to use intuitively and quickly. Which brings me to my first superficial question…

Is it possible to modify the keybindings in teletype? I use -C to copy all day long at work; I don’t want to come home and wrap my brain around -C.

More questions to come. Thanks!

1 Like

it’s certainly possible, but would require writing an alternate firmware.

And just in case you fancy doing that, and I don’t think it’s that hard, the piece of the Teletype code you’re looking for is here:


Found some very helpful charts for Scales and Chords in NOTES. Would love to know how you guys go about making melodic stuff with Teletype.

Credits: Tetrapad/NerdSeq manual


i was watching this and i was thinking about scale / chord transposition for kria / teletype
anyone use strange chords progressions and scales

btw thanks for the table :wink:

1 Like

Maybe dumb question about the USB memory stick support:

Is this only for backup? My Teletype got wiped, and I’m hoping to not start completely from scratch. I have the scenes backed up on my computer. I move them to a USB stick, plug it in to the Teletype… which then gives me a Teletype and a USB stick full of empty scenes :sweat_smile:

Am I doing something wrong, or are my expectations mis-calibrated?

1 Like

Threw me for a loop as well the first time! From the USB backup portion of the manual:

Teletype’s scenes can be saved and loaded from a USB flash drive. When a flash drive is inserted, Teletype will recognize it and go into disk mode. First, all 32 scenes will be written to text files on the drive with names of the form tt##s.txt . For example, scene 5 will be saved to tt05s.txt . The screen will display WRITE....... as this is done.

Once complete, Teletype will attempt to read any files named tt##.txt and load them into memory. For example, a file named tt13.txt would be loaded as scene 13 on Teletype. The screen will display READ...... Once this process is complete, Teletype will return to LIVE mode and the drive can be safely removed.

Remove the s from the file names and you should be good to go.


Ah, thank you so much. I stopped reading at the USB memory stick support section and should have scrolled down further. I’ll give this a go!

1 Like

Thanks folks. I was hoping it was an external bindings file, but what the hell. The code looks simple enough; I do not care to get into the whole C developmment cycle again but this is low-hanging fruit…

I can’t recommend enough @Dewb’s awesome Dockerfile, which I think I discovered in this discussion.

To build Teletype on a Linux or OS X machine, with no prerequisites other than Docker:

git clone
cd teletype
git submodule update --init --recursive
docker run -v $(pwd):/target -t dewb/monome-build 

This also works well on Windows using the Docker toolbox.


I’m having a headache try to do this with the grid ops :

IF one button of group 1 is held down, set the value under the Turtle to the PARAM value, but only once a move in PARAM has been detected.

Any help ?

you’d need to store the previous param value in a variable (or a pattern value), then when a button is pressed you compare the current value to that. for this to work you also want to scale the value to a smaller range as it will always fluctuate a little, so it’ll look like it constantly changes.

1 Like

Has anyone developed a LPG response-esque AD or ASR envelope they’d like to share (either using CV outs on Teletype itself or experimental TXo modes)?

On the AD side, it’d be nice to also do a 1-param-knob transforms of A and D to control the duration of blips in a pleasant way.

This type of thing should be rather easy to code, but I’m wondering if anyone has done the trial-and-error of getting the response to “feel” right

I don’t feel like Teletype scripts are the right tool for the job, given the available ops.

Linear ramps are pretty easy (CV.SET, CV.SLEW and CV). The first thing I would try would be multing a CV output through both inputs of a ring modulator to get exponential curves. Alternately, using an exponential VCA with a fixed CV offset to convert the linear ramp to a curved one – or some sort of triangle-to-sine waveshaper, maybe.

Otherwise, maybe a two-stage linear ramp is a close enough approximation – putting a second CV.SLEW command on a very short timer. I’m not sure whether Teletype’s timing is tight enough to accomplish that though.

Several weeks ago I brought up the possibility of a CV scaling function as a possible Teletype OP, for this purpose and for sine or sine-like LFOs.

1 Like

The TO.ENV... series of OPs look pretty straightforward. Unfortunately I no longer own a TXo to help you figure out a good response range for ping-y envelopes.

This is something i’m curious about as well. Check out the TO.CV.LOG example

Summary of TO.CV.LOG example from manual

|TO.CV.LOG x y|-|-|The following example creates an envelope that ramps to 5V over a logarithmic curve:

TO.ENV.ATT 1 500

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.
1 Like

…oh, I see there’s a TO.CV.LOG op. Nevermind what I said :slight_smile: I don’t know the TXo.

1 Like

Well, not really, I think.
When i hold the button down, it should check the PRM value once, then wait for a significant change in the value, and keep the last value when leave the button up.

yes, you save the current param value when a button is pressed in a variable, and then when the button is released you compare and update if different.

the obvious issue with this approach is you will only get the new value when the button is released. if you want to monitor the value while the button is pressed you’ll have to do that in a metro script. there is no way in teletype to continuously monitor PARAM or IN value and trigger some action when it changes - you would need to constantly poll/compare in metro script.

1 Like

Clarifying question: The docs for I, J and K all say something like this:

each script gets its own J variable, so if you call
a script from another script you can still use and modify J without affecting the calling script.

This means that if I do something like J 0; SCRIPT 1, script 1’s J will be set to 0 as it runs, but if I alter it inside Script 1, the calling script won’t see any change, right?