Teletype is mission-critical.
I couldn’t see this already posted so here goes. I wanted to make a quantiser for Just Type for which you could define the scale. I started off with @Galapagoose script way up this page but it needed some altering to make it account for various octaves. It was easier to sort this for a CV output as you could make use of CV.OFF but there is no equivalent in Just Type that doesn’t affect all 6 oscillators.
You can input your scale as N numbers in the first 7 slots of pattern 0. No need to repeat them up the scale.
CV input to IN
Trigger scrpit 1
Y DIV V 1 7 // Splits the incoming CV into 7 tones per octave (volt)
X DIV QT IN Y Y // Gives the ‘tone number’ within the scale. Above 7 will be higher octaves
Z PN 0 MOD X 7 // Defines which note within the scale it’s on (1-7) and looks it up in the pattern
JF.NOTE N + Z * / X 7 12 V 8 // Combines the above - the note (1-7) and the offset in octaves (12)
The maths in that last line was really hard to get right! Need to get used to the ordering…
I wonder if there is another way which doesn’t use the 3 variables X Y & Z …?
Please please please forgive my stupidity but how do you access the + and * keys?
Shift = will access
Shift 8 will access
face palm all this time I was looking at the blue symbols in the teletype keyboard.
Thanks a million
29 posts were merged into an existing topic: > teletype: grid code exchange
Wanted to share the first interesting thing I’ve managed to make.
I’ve always lamented step sequencers where every step is the same count (4 notes over 4 bars = 64 steps), and always wanted one that let me set step time ala rows on a Serge TKB. This adds probability of jumping to a specific step.
So this is it. Curious if anyone has a better way of evaluating should/shouldn’t JUMP (script 7). That’s the only part that feels like a hack to me.
WAIT N JUMP 1: RESET TR ROTATION 2: ROTATE TR BY 1 3: ROTATE TR BY 2 4: SET CV 2 to CV 1 5: DRUNK CV 6: NEXT STEP 7: EVAL JUMP 8: CLOCK IN Patt0 = NOTES Patt1 = CLOCK PULSES TO WAIT Patt2 = JUMP TO STEP, IF NOT 0, PROB SET BY PRM Patt3 = COUNT FOR EVERY,SKIP Z = PATTERNS INDEX O = WAIT COUNTER, DECREMENTS #1 A 1; B 2; C 3 #2 A 2 ; B 3; C 1 #3 A 3 ; B 1; C 2 #4 CV 1 CV 2 #5 S: CV.SLEW 3 MUL 100 DRUNK S: CV 3 VV LSH 2 DRUNK S: CV.SLEW 4 MUL 100 DRUNK S: CV 4 VV LSH 2 DRUNK #6 Z MOD ADD Z 1 PN.L 0 L 0 2 : PN.I I Z O PN.HERE 1 CV 1 N PN.HERE 0 #7 PROB Y : TR.TOG 4 PROB Y : Z SUB PN.HERE 2 2 IF EZ PN.HERE 2 : Z PN.I 0 SCRIPT 6 #8 S.POP IF EZ O : SCRIPT 7 X MOD 16 ADD X 1 EVERY PN 3 0 : TR.P A SKIP PN 3 1 : TR.P B OTHER : TR.P C #M Y QT RSH PRM 7 10 #I L 0 2 : PN.L I 4 L 1 4 : TR.TIME 10 X 0; Z 0 O PN 1 0; O.INC -1 DRUNK.MAX 10 M 125 #P 0 16 0 4 4 8 1 2 8 4 1 0 12 4 0 0
in script 7 what does this line do?
PROB Y : Z SUB PN.HERE 2 2
if i understand correctly, you want it to jump to a step specified in pattern bank 2 when the step is not 0, based on probability? so it would be something like:
I && LT RAND 100 Y NZ PN.HERE 2 IF I: Z PN.HERE 2
have to extract the condition into a variable here as you can’t use
LT RAND 100 Y gives you the equivalent of
PROB Y, and then we also check if
PN.HERE 2 is not zero. if both conditions are true we update
i started a companion thread for grid scenes/scripts: > teletype: grid # code exchange
i’m going to ask @cmcavoy to move the grid related posts above to the new thread so we have everything grid related in one place.
AH, I’ll try that approach to. That’s correct, script 7 is basically just evaluating if it should jump, at the end of however many wait ticks are set (so when the O counter in Script 8, which is driven by external clock, reaches zero).
I’m glad at least my ‘hack’ of working around the inability to do PROB : IF : is accurate.
The Metro script reads a quantized value of the PARAM knob into Y, then Script 7 uses that for the PROB. As I’m sure you figured out, Z is the global index/read head for the Patterns. TR.TOG 4 was just to have a random gate, for funsies.
One general note about the Github repo – I’d love to see work in progress posted there, as well as “finished” scenes. It’s easy to update scripts, and we can even have people improving and tweaking each other’s work. Totally happy to see “unfinished” stuff in there, just indicate what state it’s in as part of the readme. (I also posted this note in > teletype: grid # code exchange)
I moved them. I think I got all the right ones, but I didn’t read each on in detail, kind of skimmed over based on the list you sent. If anyone doesn’t agree with a move, I think you can move your own posts back without moderator tools. However, if that’s not right and you need me to move something, DM me and I’ll take care of it
Thanks @scanner_darkly for the new thread (and this amazing code!)
i’m trying to make something i think it have to be simple
slew an incoming signal from a TXI input to a cv output in the TT
CV 3 TI.IN 3
CV.SLEW 3 x
X DIV PARAM 50
The thing is that i don’t know how to route the signal directly to the output,
sending a fast trigger to the 6 cv in in TT works, but i that quantized sound due to the triggered signal…
how can i open the signal flow?
teletype is not really set up for continuous processing. the only workaround is to have a fast metro script (or a fast trigger to input 6 in your case), 20ms might be sufficient for your purpose (but some quantization will likely still be present).
Are you using the TT outputs or the TXo? If you have a TXo you can read the input from the TXi, but instead of slewing the input you would use those values to set CV on the TXo outputs and slew those. That has worked for me.
Without at TXo there’s no easy way to do this, as @scanner_darkly mentioned.
I’m using the outputs on the TT but i have a TXo
when you say slow values on the TXo, what do you mean?
edit: thanks guys, this is fast helping
I think he meant “slew”
Yep, it was a typo for “slew”…
Started making a Trigger Riot-ish scene on Teletype. The first 4x4 of the tracker screen corresponds to the division knobs on the Trigger Riot module. You can feed a clock into input 1 or run it from the metro script. I’ll probably add probability in there next.
#1 A + A 1 // keeps running count of clock pulses, x = col, y = row L 0 3: Y I; SCRIPT 2 L 0 3: X I; SCRIPT 3 #2 L 0 3: X I; Z 0; SCRIPT 4 // Z tells script 4 whether to output for a column or a row #3 L 0 3: Y I; Z 1; SCRIPT 5 #4 I PN X Y IF EZ I: BREAK IF NZ MOD A I: BREAK IF EZ Z: TR.P + Y 1 ELSE: TO.TR.P + X 1
you would still need a script to read from TXi and update TXo, so it would be quantized as well. using a fast rate trigger or metro and applying a slew on the output might get you close enough though.