T not still per-script?
T has always been global, not per script
Next you’re gonna tell me it’s Berenstain
Are I, J and K in 3.0? or after? Seems I’ve been missing my threads lately!
I has been here a while; J and K were recently added post 3.0
K haven’t been officially released yet, you can find beta here: Teletype 3.+ feature requests and discussion
Is tomorrow the day for Pre-order on the Teletype? Must get my grubby hands on it.
I have a patch which relies heavily on pitch out of Marbles.
I’m looking to do this Supervoice thing
How might I use Teletype (v.3) for sequencing a pad sound?
- I would like to feed Teletype clock + Marbles CV
- I could trig Teletype scripts with some Maths EOC/EOR
- I would like Teletype to send CV + gates for envelopes or maybe strike DPO
As I type this out I amazingly feel incentivised to figure it out on my own! I’m just five studies in and keep getting distracted with learning the rest of my modular
If you find yourself running out of trigger outputs and don’t have a TXO:
CV.SET 4 V 10 CV.SLEW 4 20 CV 4 0
I used a variation of this, reading the slew times from a pattern, to ping and modulate a filter to create varying kick drums
I’m wondering if the following can be done with a teletype:
I’d like to visualize live loops of different lengths on a grid.
The idea is to map a button of the grid to a pedal looper unit of an ER-301. When pressed (1) it records, when released (0) it plays the loop.
I can count the time elapsed between the two states of the button (record and play) using
LAST, store the value in ms in a variable and then divide this value by the width of a fader but the second part is more complicated: incrementing the value of this « dot » fader at regular intervals. I tried to use
DEL.R to do that but I can’t make it work. I don’t know much about the internal timer of the Teletype. Can it be done without an external module, without external triggers ? Edit: There’s no easy way to re-trigger the DEL.X when it reaches the last command, so I guess my question doesn’t really make sense…
I would probably just use the script that the grid ops button calls do update the display. I may not be understanding your question. If you need to do something at regular intervals the Metro script seems well suited.
Thanks for your reply Yes I could use LAST to set the tempo of the internal metronome and then update the value of a fader but (correct me if I’m wrong) there’s only one metro. The idea was to reflect the position of different/ asynchronous playheads on a grid, I should have exposed the goal like that in my previous post sorry, something like MLR. I don’t own Norns so I was looking for a similar solution using Teletype and ER-301
Oh, I see now. You could set metro to run very fast, say 50ms though you could go faster if needed down to M! 2. When the record button is released, set some pattern variable (say in P.N 1) to the total loop length in msec. And also set some corresponding pattern step (say in P.N 2) to 0.
Then each time metro is called, increment that value in P.N 2 by LAST. These value pairs in P.N 1 and P.N 2 should then be the ratio/percentage of how far the loop has progressed and you could update the fader(s) to display that percentage.
Then the only other tricky bit would be that if the values in P.N 2 are exceeding the loop length in P.N 1, reset them to 0 plus the difference - basically wrap them around the loop length in P.N 1.
That’s what I’d try, anyway.
Thanks ! I’m trying the solution you provided, it seems to work. Here’s what I have so far, script 5 writes the length of the recorded loop in PN 0 then PN 1 is the current position in ms (it starts playing, looping as soon as the button is released) and PN 2 is the position of the fader It’s not fully optimized but each fader moves/loops from 0 to 15 at its own speed.
M: SCRIPT 1; SCRIPT 2 I: G.FDR 0 0 0 16 1 2 0 3 G.FDR 1 0 1 16 1 2 0 4 G.BTX 0 0 2 1 1 1 0 5 2 1 M! 2; INIT.P.ALL 1: J PN 1 0; K PN 0 0 PN 1 0 WRP + J LAST $ 0 K PN 2 0 / PN 1 0 / K 16 G.FDR.N 0 PN 2 0 2: J PN 1 1; K PN 0 1 PN 1 1 WRP + J LAST $ 0 K PN 2 1 / PN 1 1 / K 16 G.FDR.N 1 PN 2 1 5: J G.BTNI IF G.BTNV: PN 0 J 0 IF EZ G.BTNV: PN 0 J LAST $
// (not connected to ER-301 yet)
Edit: I’ve added the code for two asynchronous faders and two (latch) buttons for recording/playing. I’m not sure what I’m going to do now : reverse or speed change, I’ll try. At least the first goal (visualizing two asynchronous loops on a grid) is reached / video for info.
Another version with speed control and reverse (work in progress^^)
#1 J PN 1 0; K / PN 0 0 A PN 1 0 WRP + J LAST $ 0 K PN 2 0 / PN 1 0 / K 16 G.FDR.N 0 PN 2 0 #2 J PN 1 1; K / PN 0 1 B PN 1 1 WRP + J LAST $ 0 K PN 2 1 / PN 1 1 / K 16 G.FDR.N 1 PN 2 1 #3 #4 #5 J G.BTNI IF G.BTNV: PN 0 J 0 IF EZ G.BTNV: PN 0 J LAST $ #6 #7 IF EZ G.FDRV: BRK IF == G.FDRI 2: A G.FDRV IF == G.FDRI 3: B G.FDRV #8 #M SCRIPT 1; SCRIPT 2 #I G.GFX 0 0 0 0 16 1 2 0 3 1 2 G.BTX 0 0 2 1 1 1 0 5 2 1 G.GFX 1 2 4 2 5 1 2 0 7 2 1 M! 2; INIT.P.ALL; G.GFDR.N 1 2 G.GFDR.RN 1 -2 2; G.FDR.PR 2 4 G.FDR.PR 3 4
I had a similar requirement (independent speeds) when I was writing a Scene a few months back.
I did it by storing separate speeds in the table as ‘timers’. Each timer value decreased by 1 every cycle. When a timer reached zero, the lit cell (or ‘ball’) moved right and the timer was reset.
I needed to have multiple balls per grid line and the balls accelerated as they proceeded. So not quite the same, but I did write comprehensive notes that may help.
Thanks for sharing, it looks fun I’ll take a closer look at the code
Recently got my TT so still grappling with the ultra basic stuff - I’m trying to construct a backbeat with Mutable Plaits, switching between the Kick and Snare models with CV and trig from TT.
Can someone explain why I’m getting a result where sometimes the CV switch doesn’t take place about 10-15% of the time? The TR output sends signal as expected.
Can’t see the fault in my code, but maybe there’s something I’ve missed. I was playing about with probabilities before this, but I still get the same result after turning off and on. Also tried both triggers externally and with the keyboard, with no change.
Here’s my code:
EVERY 2: CV 1 VV 0 OTHER: CV 1 VV 50 TR.PULSE A
And if you add a small delay between the Cv change and the pulse ?
DEL 10: TR.P 1 ?
Edit: And is VV50 enough to jump to the next model ?
Ahhh… DEL 20 fixes it! Thanks!
Depending on the module you’re sending the cv / trigger this is often a good solution. If I’m correct it’s more often for digital modules handling both pitch and envelope generation.