Teletype 3.+ feature requests and discussion



Agree with @rikrak. I didn’t even realize it was recalling the last mode, so I won’t miss it. Saving it only when the scene is saved would also work.


yes this is correct. original idea was to keep the syntax similar to DEL with the first parameter as the delay time. however, I later decided with the name DEL.X that the x parameter should be the number of delays.

still unsure what would make more sense, but I think an update to the docs with descriptive parameter names should remove the confusion.


I’m having an issue with the new DEL.X / DEL.R commands. If I call script n in a loop and script n uses one of the new DEL commands then it seems that only the last DEL is executed. Is that true or maybe I am screwing something else up??


How many delays are you instancing? There’s a limit to the delay queue length; used to be quite low. I know it’s been increased for the new DEL.X mod but I don’t remember what the new number is.
Pure speculation: it’s possible your newest delays are pushing the older ones out of the queue before they have a chance to activate.


posting the script could help pin down exactly what’s happening. but I’ll list a few of my thoughts on what might be happening.

  1. as mentioned there is a limit of 16 delays
  2. L 1 4: SCRIPT 1 will call the script 4 times without much delay time between calls. so if the delay time isn’t changing then it’s possible the delays are being queued to trigger at the same time.


Sometimes, when I’m running out of empty scripts and/or lines and I need to perform the same operation on each of the four patterns in the INIT script or another script, I wish there was a kind of P ALL OP -> PA maybe.

Instead of:

L 0 15: PN 0 I I
L 0 15: PN 1 I I
L 0 15: PN 2 I I
L 0 15: PN 3 I I

It could be something like this:
L 0 15: PA I I

As far as I know it’s not possible to use L twice on the same line
L 0 3: PN.WRAP I 1; L 0 3: PN.L I 16;

So, PA.L 16; PA.WRAP 1

Not sure if that would be a gadget or not :slight_smile:


It doesn’t actually help, but you could write

L 0 3: A I; SCRIPT 3

and then in Script 3 do the inner loop

L 0 15: PN A I I

OMG! I figured out how to do it in one script (suppose this is script 3)

IF > 3 A: A 0; BREAK
L 0 15: PN A I I
A + A 1; SCRIPT 3

One problem I see is that if you want proper behavior, you either have to trigger the script twice, or set A to zero in the calling script.

It’s also possible (quite likely in fact) that I’m trying to be too clever and that we could achieve the same goals with the Turtle ops


Thanks :! Yeah, most of the time I’m running out of script and I don’t have a free script to L 0 3: A I; SCRIPT 3
The second solution could work, I will give it a try, using A or J in various places, but that would also re-execute the other lines of the script, maybe that’s not a problem most of the time but I’ll have to be cautious.
Regarding Turtle, I need to learn how to use it, might be a solution too :slight_smile:


Thanks for the replies. I was reluctant to post my scene as it is a little convoluted. Instead, I have created a simpler scene that exhibits the same behavior:

M 1000

L 1 4: $1

DEL.R 100 4: TR.P I

I was expecting all 4 triggers to trigger like you would see if you removed the DEl.R pre from script 1.


This is exactly what I was posting about above – this is trying to create 100 4 millisecond delays :slight_smile:

Try DEL.R 4 100: TR.P I


@Starthief beat me to it. definitely need to update the docs so that this is more clear(I’ve made the mistake myself once or twice).


ah crap … I always mess that up! In any case, my original scene (which uses the correct syntax for DEL.R) is still not working but I can confirm that the (corrected) scene I posted above does so I need to do more debugging. I should clean up my scene and post it here. I really appreciate the help people.


I really enjoyed some of the scripts I made on some the 3.0 betas but had to set them aside until recently. Looking at what I made and what I’m working on now, here are a few updates that make my life a little easier.

I’m primarily using the Teletype to sequence three or four voices. In the near future I’m hoping to get a few Telexo and/or Ansible and think the updates below would be even more valuable with the expanded outputs.

  • More patterns: I frequently find myself using up most of the pattern space. For the voices it can be a combination of gates/gate patterns, velocity, duration, and pitch. I also tend to store some values related to the scene or song, like bpm and time signature. I would love to have a few more so I can sequence additional aspects of a voice from the Teletype.

  • I like the Shadow Scripts proposal, timeline proposals, or anything that would let me make a slightly more complex scene. I don’t want longer scripts, I just occasionally want to be able to do a few more things independently. I’m using scripts 1-4 for voices and frequently use 7 and 8 for song and scene related duties. I’d like to keep those kinds of things relegated to something like a shadow script and have the flexibility of more scripts triggered by the eight inputs.

  • I know this can be done if I made a custom build (someday…) but with all the places I used PN.HERE and PN.NEXT, it would be nice if they had a shorter alias. Replacing the N with the pattern number, i.e. P4.NEXT, would keep it readable and still save two character but trimming it to P4.N still makes sense when I look at it.

That’s really it for my wish list at the moment. All the stuff added to 3.0 is still keeping me busy, thanks to everyone who worked on it.


Crossposting into here for visibility, Ive been working on MIDI output for Teletype. It requires a bit of hardware sitting on the back of the Teletype, but will be pretty inexpensive. The MIDI ops will support saving and loading of ‘select bus’ enable modules. I dont have an entire list but from what I know:

Malekko Varigate 4+/8+
Malekko Voltage Block
Malekko Quad LFO/Envelope
Make Noise Tempi
Make Noise Rene Mk2
Disting Mk4
Mungo maybe (?)

Here is a quick test loading some Disting Mk4 presets


Wow, this opens great perspectives !


Just catching up with this thread… so sorry that some of the replies are late…

I believe that is correct, I think the use case would be for breaking a ‘song’ up into multiple scenes, but still allowing some communication between scenes by setting variables.

SCENE is banned from the init script because you can lockup your Teletype requiring a firmware flash to fix!

e.g. if the init script of scene 1 calls SCENE 2 and the init script of scene 2 calls SCENE 1, then you Teletype will bork. Worse… when you reboot the system it will probably try to re-run the last saved scene… and the only way around it is a firmware flash.

IIRC I discussed getting rid of the mode saving and there was some pushback, but for the life of me I can’t remember why… it might have been something to do with some users only using a keypad. Personally I think it should go…

> teletype: grid # code exchange

I agree, and @EqualTemperament’s above suggestion to only save mode when saving scene should satisfy anyone running without a keyboard.


I have a feature request for TT.

Would it be possible to add a “SEED” op to expose/set the random seed used internally?

I would like to be able to get the exact same numbers from random elements every time I run a Scene. Sometimes when composing generative, a lovely serendipitous sequence will emerge - it would be great to be able to repeat it and develop it further using other modules whilst knowing that TT will always play it the same way with the same seed.

Is it possible? Am I alone in wanting this? The CHAOS ops do get part of the way there but it would be much quicker and more useful (to me) to have set a SEED which affected all randomness.


pretty sure this would be incredibly easy to implement. from what I can tell the RAND and RRAND ops are just calling the stdlib(standard library) function rand(). so we could just add an op that calls the stdlib function srand() to set the seed.


Don’t mean to hijack but the above request had me thinking. Would creating a “Random Number from Normal Distribution” OP be feasible?

RANDNORM x y (x=mean, y=standard deviation)?