Hi!

Creating a script for Teletype that is capable of triggering voice polyphony in Just Friends, I run into a problem when it comes to finding the best way to update the CV’s that come through the TXi without using a huge amount of delays … Basically this is the structure for each voice, with control for the level of each voice with the TXi knobs:

I:
L 1 6: $.POL I 3
JF.MODE 1
L 1 4: TI.PRM.MAP I 0 1000

1: 
K STATE 1; I VV * TI.PRM 1 K
DEL 50: X TI.IN 1
DEL 50: JF.VOX 1 X I

What do you think of it? Should be a better way to update the CV’s?

Why the delays? Are your variables not updating fast enough?

Yes. If Y don’t put those delays the JF is always one trigger behind. So I need to add some kind of delays, although I don’t know if this is the best way …

How easy is it to convert the JF teletype scripts to w/syn? is there a comprehensive guide at all?

Hi, Im working on a euclidean sequencer and i have it working on 4 channels;
Each channel reads from the Txi pots, and assigns pattern length, number of beats and offset.
I wanted to create a variable A that was assigned to the last pot of the txi.
I wanted to divide the number of triggers by the value of that variable as a sort of clock divider, but im stuck on the last bit.

PN 0 O TI.PARAM 2
PN 0 1 TI. PARAM 1
PN 0 TI.PARAM 3
X PN 0 2
Y ER PN 0 0 PN 0 1 SUB T X
IF Y: TR.PULSE 1

So im trying to divide the number of pulses of TR.PULSE 1 by the value of the Variable A.

i have tried IF Y: TR.PULSE 1 DIV Y A (Fail)
and IF Y: TR.PULSE 1 DIV M A (Fail)

Any ideas?

Many Thanks!

If you want A to work as a clock divider, then you want to have the variable that handles the step index into the ER op to update more slowly. You’re doing that with the variable T in your code, but I don’t see where that is being updated. I’m guessing you have this in your M script? If so, then you want to update it not every click of the metronome, but fewer, depending on A. One way to do this is using: EVERY A: T + T 1

(caveat, I’m not at my teletype just now, so might be wrong!)

Hi @SimonKirby apologies for the late reply! Im in the middle of rearranging the whole studio so i have been in the twilight zone forva few dsys (and more to come)
Yes, T gets updated inside the M script.
Ill try with your counsel and report back,
Thanks s lot for your help! Much appreciated!

1 Like

Hello everyone, long time lurker first time poster here. I recently created my first melodic Just Type patch and I’d love to share it. I have much to learn, there’s nothing too clever going on here, but I have to say I’m quite enjoying the Teletype so far. The concept was a sort of modular wind chimes. Here is a video.

I:
JF.MODE 1
TR.TOG A

1:
P.N 0
JF.VOX 1 N P.NEXT V 10

2:
P.N 1
JF.VOX 2 P.NEXT V 8

3:
P.N 2
JF.VOX 3 N P.NEXT V 8

4:
P.N 3
JF.VOX 4 N P.NEXT V 8

5:
PROB 33: JF.SHIFT N -24
PROB 33: JF.SHIFT N -29
PROB 33: JF.SHIFT N -22
JF.VOX 5 N 35 V 5
JF.VOX 6 N 40 V 5

6:
JF.VOX 1 N 16 V 8
JF.VOX 2 N 31 V 8
JF.VOX 3 N 23 V 8
JF.VOX 4 N 38 V 8
JF.VOX 5 N 28 V 8
JF.VOX 6 N 42 V 8

7:
JF.VOX 1 N 12 V 7
JF.VOX 2 N 31 V 7
JF.VOX 3 N 23 V 7
JF.VOX 4 N 38 V 7
JF.VOX 5 N 28 V 7
JF.VOX 6 N 43 V 7

TRACKER:
4, 12, 23, 48
7, 16, 26, 47
-1, 11, -, 43
0, 24, -, 40
-, 26, -, 35
-, 31, -, 31
-, -, -, 30
-, -, -, 26
-, -, -, 23
-, -, -, 26
-, -, -, 30

The scripts are randomly triggered by Steppy and Pam’s. The TR.TOG A in the I: is sending a high voltage to the Ornament & Crime Quadrature LFO to enable clock division.

This was a fun first patch but I’m looking forward to learning how to do more with it, it is truly awesome what some of y’all are creating, and I thank you for everything that I’ve learned here.

3 Likes

This is a really nice patch, I especially liked that little groove around 3’ - keep it up!

1 Like

I am new to teletype and have a basic question about setting this up…first does PARAM.SCALE 0 14 go in the Init script and, second, are you triggering script 1 continuously to then update the position of the knob? Sorry for the simple questions, just trying to understand how this script works.

PARAM.SCALE would sit in I

The rest is simply reading the knob position, looking up the corresponding value and sending that out. So the faster you execute it the less stepping you’ll feel. If this is al your scene is doing I’d put it in M and set metro to 25ms by placing M 25 in I and M.ACT 1 in I to automatically start the metro…

2 Likes

Also a slew is recommended to “wash out” the stepping of the readings.

1 Like

I thought I’d share a scene that I’ve been working on to create a performance system for improvising three part canons. The general idea is to create musical “gestures” with a turn of the teletype param dial and then create and modify a canon using input from the TXi and incoming triggers. Here’s an example of it in use:

https://www.instagram.com/p/CKHMxpjhit0/?utm_source=ig_web_copy_link

The scene detects when the param knob is moved and starts recording the gesture into the first pattern of the tracker. (So basically, you give it a quick wiggle and the notes you hear loop in a way to reflect that movement.) Each voice then steps through the pattern a note at a time at a rate determined by the incoming triggers (so the canon can move at different rates in different voices). The notes produced are quantised to one of a set of scales or chords stored in the second and third patterns. Each row is a different scale or chord, and they are stored as a binary number in pattern 2 and an offset in semitones in pattern 3. I used my quantiser haiku for this purpose.

Which quantiser row is used is controlled by the fourth knob on the TXi, so you can quickly change the key or chord that the whole canon is playing. The first three knobs on the TXi transpose the line being played by the corresponding voice in the canon (but keep the voice quantised properly).

The result is something that is remarkably playable with just 5 knobs and incoming triggers (e.g. from Kria). It is generative and complex, but there is no randomness involved at all. With a bit of experimentation you can really play the thing. Anyway, here is the scene if anyone wants to have a go. Remember to populate at least the second column of the tracker with scales. (In the example video I use 137 for a minor triad, 1193 which adds the fourth and seventh, and 1705 which gives it a dorian flavour.)

#1
TR.P 1
J % + J 1 8
X + P J TI.PRM 1; $ 8
CV 1 N X

#2
TR.P 2
J % + J 1 8
X + P J TI.PRM 2; $ 8
CV 2 N X

#3
TR.P 3
J % + J 1 8
X + P J TI.PRM 3; $ 8
CV 3 N X

#6
Z PARAM
PN 0 T Z

#7
B RSH B 1
IF NZ B: BRK
X - X 12; B 2048

#8
IF EZ A: A 1
B BSET 0 % X 12; K 0
W EZ & B A: $ 7
L 0 11: K ? BGET B I I K
X + * / X 12 12 K
X + X PN 2 TI.PRM 4

#M
T % + 1 T 8
IF NE Z PARAM: $ 6
A PN 1 TI.PRM 4

#I
PARAM.SCALE 0 48
TI.PRM.MAP 1 0 24
TI.PRM.MAP 2 0 24
TI.PRM.MAP 3 0 24
TI.PRM.MAP 4 0 8
P.N 0; M 100
20 Likes

Really really cool!

If you want to free up script 8, QT.B should happily accept your existing bit scales :wink:

1 Like

Cool idea, thanks for sharing!

1 Like

Yes indeed! I’m really overdue updating my teletype to try your cool new ops… :slight_smile:

EDIT: In fact, this might give me space to slip in some Turing machine code in there for some random melodies too. Thanks for the prompt, @desolationjones!

1 Like

and now I’ve been pushed over the edge - I’m buying a teletype!

3 Likes

Don’t forget to ask if you have any questions. It’s a deep (but rewarding!) rabbit hole.

Oh, and remember you can mount it upside down and flip the screen with DEVICE.FLIP if you find the cables getting in the way of the screen. :slight_smile:

1 Like

Nice code, I don’t stop to learn new things…
Here’s a video I’ve done today with your code. (I’ve used Just Friends in synthesis mode instead of using cv outputs.)

1 Like

Really fantastic! I’m super happy you found a use for this approach :-). Just friends is great for this kind of polyphony, and it’s quite easy to modify the scene to do six part canons that way.

Next I think I’m going to try other ways of creating the initial looping melody - maybe with a complex LFO into the IN and gradual morphing of the stored loop of voltages using weighted averaging over time. Will share some code for doing that if it goes somewhere interesting!

2 Likes