Teletype workflow, basics, and questions

or like reading subtitles without watching the film :slight_smile:


ha! actually, both aren’t very good analogies… In either of those scenarios you’d probably glean at least SOME understanding. More like reading a book in a language you can’t read or speak.

teletype will definitely click better when you can actually try different things and see the result!

1 Like

I sure hope so! Probably the one module I’ve bought with the least understanding of.

I followed the Studies when I got my Teletype and was producing interesting variations within a few minutes. People here are also super supportive. It instantly became one of my favorite modules. Dig through the > teletype : code exchange thread and load some of the interesting-looking scripts via a USB stick. Start with shorter scripts first and you’ll get the hang of it soon enough. Ask lots of questions!


and don’t forget about Teletype haiku for examples of what can be done with super short scripts.


Hi all,

I’m trying to write a script that toggles CV.OFF 1 between N 7 and N 12 (a perfect fifth).

I came up with


which is an (IMO) idiotic way of using modulus and the O iterator to switch between 7 and 12 (7 + 5).

Is there a better way to achieve this behavior? For the sake of parsimoniousness let’s say without using pattern data.


Try CV.OFF 1 N ADD 7 MUL 5 FLIP. Flip will alternate between 0 and 1.

If we wanna play golf, of course we could shorten it to CV.OFF 1 N + 7 * 5 FLIP

1 Like

FLIP! I knew there had to be something :slight_smile: Thanks

1 Like

and using ternary if: CV.OFF 1 N ? FLIP 7 12


Howdy. I finally built my microsystem and modified the er-301 to talk to teletype via i2c. It’s amazing! However, in the latest release of both, I don’t believe the command is actually doing anything. If I use wires, and cv output into the er-301, slides are very apparent. changing cv and cv.slew to and don’t seem to have the same effect. Any ideas?

I’ve just been learning TT by going through the studies - what a powerful module! I came across one issue that I can’t seem to figure out:

Reading CV values from the Rene via the IN port and passing them through to the CV1 output works like a charm. When I’m writing the values in a pattern though and try to play them back via the CV output, the resulting CV values are way out of range. Is there some kind of division I need to make to go from the TT value range to volt per octave? Thank you for your help!

What sort of values are you storing in your pattern? If they’re note numbers (e.g. 1 = one semitone, 12 = octave), you’ll need to use the N op to scale them up – for instance:
instead of

But if your pattern contains “raw” values like what you get from reading IN with Rene’s V/Oct output patched in (137 = one semitone, 1638 = octave, etc.), then make sure you’re not using the N op as above – if you are, your CV output will almost always be maxed out (“way out of range” indeed – I’m thinking maybe this is your problem).

Hope that helps. If not, I would also make sure you haven’t set an offset (CV.OFF) on the CV output you’re using.

1 Like

Hey, thank you for your help. I’ve been doing some further investigation and used the following approach:

  • set Rene to four octave mode, with only the note C activated
  • select the lowest note and used the command IN.CALIBRATE.MIN
  • select the highest note and used the command IN.CALIBRATE.MAX

I’m then left with the following values connecting the Rene CV out to the TT IN jack:

C1 = 0
C2 = 4095
C3 = 8232
C4 = 12307
C5 = 16383

I’m sure this requires a simply mathematical calculation to turn these values into VV, but I just couldn’t figure it out. Any help is appreciated!

Hey – I haven’t really used the CALIBRATE ops before, and I was hoping to try this out myself this week but haven’t gotten around to it yet. I’m not sure it’s going to be useful to calibrate the input to a different range than the default, though. It seems like what you’re really looking for is a “reverse VV”. The simplest approximation I know of (if you first reset your input calibration) is:

/ IN VV 1

Unfortunately, thanks to rounding errors, that’s not particularly accurate – for example:

* 800 VV 1

is 12800, but

VV 800

is 13107. I think if you were to use those numbers as pitch CV, that would be a difference of more than two semitones (!).

You could try to account for that rounding error with something like this:

B / A VV 1
B + B / - A VV B VV 1

But that’s grotesque, and takes up two variables and half a script. I’ve wondered before about creating a VV- op or something like that that would do a reverse lookup using the same table that VV uses… maybe this is a good opportunity to try that.

EDIT: even that last example isn’t all that great, because I think it always rounds down. Fortunately 1/100th of a volt doesn’t make a huge difference.

Oh dear. I just realized SCALE will do the job better, or even IN.SCALE.

1 Like

teletype maps 0…16383 number range to 0…10V output. IN calibration ops are meant to ensure the input accurately reflects this mapping. while you could use them to map to a different range (in your case you’re mapping it to a 4 octave range) the numbers you’ll get from IN won’t work properly when used with CV ops (you will be essentially mapping a 4 octave range to a 10 octave range).

to output values you get from IN you don’t need to use any other ops like VV, you can just use the actual value: CV 1 IN. same if you store these values in a pattern first:

P 1 IN
CV 1 P 1

so you don’t really need to convert it to VV values (but if you wanted to do it with best precision, use SCALE op as it calculates using double precision: SCALE 0 V 10 0 1000 IN) edit: jinx!


PROB is a pre, it can only be used at the beginning of a line. to replicate its behaviour when using the ternary if you can use RAND op:

CV 3 N ? < RAND 100 # 12 0

where # is the probability you want. for probability of 50 you could just use TOSS instead which randomly returns 0 or 1, and since 0 is considered “false” and everything else is considered “true” you can just use it as the condition:

CV 3 N ? TOSS 12 0


Does the IN jack read negative voltages? For example, could I calibrate the zero point to be a negative voltage like -5 V ?


I don’t believe the IN jack reads negative volts.

Ok, I have a question regarding pattern ops. What is the the difference between PN.L and PN.END? If they are different, how come there is no PN.F (F for first) op?

I am playing around with patterns, and have lots of fun manipulating PN.L, I would like to do the same for the beginning of the pattern. I have done so with PN.START, but it doesn’t seem to work the same way.