Teletype haiku

when a topic of how teletype can be difficult to get into came up again recently it gave me an idea…

teletype haiku - a scene limited to 6 lines only (i thought of limiting it to 3 lines but that’s probably too much, but if you can do it - great!)

something self contained - i imagine autogenerating stuff will be the obvious choice, but it’ll be interesting to think of other ideas too!


  • you can only use 6 lines in total. this can be all in one script, or several, but the total number of lines should not exceed 6

  • you can use pattern data but it’s preferable if it’s set in a script as well. if it’s not possible make sure to include a note explaining how pattern data should be manually initialized

  • you can use features only available in beta versions but make sure to mention if this is the case

  • these are not hard rules. if you create an amazing scene that uses 7 lines please post it!

when posting please consider linking to a video or audio demo if you have one, and if this takes off let’s use #teletypehaiku tag on social media (the cool thing - we might even be able to share the actual scripts on twitter/insta since they’re so small!)


Here’s a fun one that’s VERY simple.

“Kria Plays Just Friends”

Patch Kria’s trigger outputs to the first four trigger inputs on Teletype. If you have enough envelopes / VCAs, you can mult the gates to gate the outputs, otherwise the time control on Just Friends will set the decay time for each note.


JF.VOX 1 KR.CV 1 V 5

JF.VOX 2 KR.CV 2 V 5

JF.VOX 3 KR.CV 3 V 5

JF.VOX 4 KR.CV 4 V 5
JF.VOX 5 - KR.CV 4 V 1 V 5


that was quick!!
in script 4 in the last line is it supposed to be `JF.VOX 5’?

oh yes! good eye, fixed it.

i think you could fit in another suboctave note if you used JF.NOTE instead of JF.VOX and did something like this:

L 0 1: JF.NOTE - KR.CV 3 V I V 5

not near teletype right now but i think it should fit…

another idea: use 4th track as transposition for the rest:


and repeat it for KR.CV 2 and KR.CV 3. could also be fun to use one of the tracks to control velocity?

might be fun to try something similar with cycles, you’d have to read a different CV than the one the trigger came from, otherwise you’ll always get value of 0. this can create some interesting interplay between encoders i imagine!


Great idea! Will contribute when I can get on the TT. Really looking forward to seeing where we can take this.

1 Like

Cool thread idea, i have a feeling this will be a great opportunity to learn new use cases!

Here’s a very humble one I use for rotating an 8-step gate sequence - I’d normally manually add a sequence of 1s and 0s in pattern 3 beforehand, but I suppose a more interesting way would be to input a ‘1’ into the pattern each time, say, script 3 is triggered. Script 1 sends the gate sequence at Pattern 3 to trig output 1. Triggering Script 2 performs the rotation.
I’ve wondered about ways to use PARAM to create more performative rotation, if anyone has any suggestions…

PN.END 3 7
PN.L 3 8


DEL 15: PN.INS 3 0 PN.POP 3

ok haikubot

SC.CV 1 RRAND 0 16000
CV 1 N RRAND 0 4; SC.TR.P 1

T + 1 T; X 0; Y WRAP T 0 40
IF & GTE Y 0 LTE Y 4: $ 1
IF & GTE Y 10 LTE Y 16: $ 1
IF & GTE Y 22 LTE Y 26: $ 1

Hahahaha !
Better : do this to generate offensive custom unit names !

1 Like

One Scene Shift Register (4 bit)

Send clock to TT in 1 or trigger scene manually.

Use the TT param knob to choose 4-bit binary pattern from 0 to 16 starting from LSB. Different numbers will yield different number of onsets or phase shifts. At 16, 4-bits will be random.

Will shift TT outs 1 to 4 right while wrapping pattern. e.g. 1000, 0100, 0010, 0001, 1000…

# 1

L 1 4: TR.TIME I 100
B SCL V 0 V 10 0 16 PRM
C WRAP + C 1 0 3; A << B C
IF > B 15: A RRAND 0 15
L 0 3: TR.P ? BGET A I + I 1 0
L 4 7: TR.P ? BGET A I - I 3 0

All 4 trigs of Teletype into high/centre/low/fm of Three Sisters sweeping span for different notes.

edit 1: rearranged a line and removed unnecessary code.


mutable instruments branches one line emulation:

# 1

TR.P ? > RND V 10 PRM 1 2

plug a trigger into input 1, it will get randomly output on either output 1 or 2. param knob controls probability.

the insta has the 1st attempt which used 3 lines, realized i could do it with one.


alright first attempt.


square triggered on every step. formant only triggered at a euclidean rhythm based on A. when formant is triggered the offset is set to X, else it’s set to Y on every other step. every 8 steps go to the next note in the sequence and perform a trigger burst. F10 to change to random sequence.

J ER A 16 K; K + K 1; TR.P 4
IF J: TR.P 3; CV.OFF 3 V X
EVERY 8: $ 1; CV 3 PN.NEXT 0

L 0 7: PN 0 I N RRAND 1 6

DEL.R 2 / M 2: TR.P 3

not entirely generative. cheated by changing A, X and Y a few times.


Do you mean TR 4 —> AIR?

oh no I’m using the square oscillator output from mangrove as a 2nd voice of sorts. so TR 3 triggers the formant voice, and TR 4 triggers to square voice.

I think they’re meaning that tr 3 and tr 4 hit the DPLPG, which formant and square are routed to, and the output of those channels hit the 3sis


Ah right!

@alphacactus I think this Scene could be simplified by using SEED. You could randomise the SEED in Init, and reset it EVERY 8, rather than using the Pattern slots to store the notes. I was doing something very similar last night (I’ll post it here). Obviously it wouldn’t work on vanilla 3.0 though.


ya fun part about these little scenes is seeing where you can optimize them. already made a few changes since my post.

    A.WRAP DRUNK 0 2
    TR.TOG + 1 A; TR.P 4
    B ^ B LSH 1 A
    CV 1 N * 7 B

With Tides 2018 in Different Frequencies mode. CV 1 into V/OCT, TR 4 triggers Stages envelope into Smoothness. TR 1-3 patched to Slope, Shape, Shift. MSLR and Twangstrom in the box. Manually set CV.OFF 1 N 3 for a bit to transpose, and manually changed the M rate at the end.


Brilliant. Am I correct in thinking that you are using “V 10” as a shorter way of typing 16384?

I suppose the downside of this elegant one-line solution, compared to the Instagram script, is that you can’t also scale the param knob - and keep it to one line. Can you?

(Because there is no way to poll PARAM.MAX, I don’t think)

You can cheat if you have a TXi.

in the #I script you can type:

TI.PRM.MAP 1 V 0 V 10 0 100


TR.P ? > RND V 10 TI.PRM 1 1 2

Possibly saves you a global variable, and the TXi will remember its scaled mapping.

edit 1: you could also change the random range to maybe fit what you need with:

TR.P ? > RRND V 5 V 10 PRM 1 2

Depends on your use case?