Excuse typos, away from teletype:

J P % O 16
IF ! J: BRK
CV 1 N J; TR.P 1

pattern:

2
2
0
2
5
5
0
9
10
10
0
10
9
9
0
9

should play DD-D FF-A BbBb-Bb AA-A
("-" is rest. spaces for clarity)
And yes, this assumes you have an envelope->vca after trigger out 1, pitch is coming out of cv 1

Don’t have any friends. There’s always a more elegant solution, I’m mostly like “make it work, then (maybe next time) make it more elegant”…

2 Likes

20 characters of awwww :frowning:

4 Likes

Hi all, new user here. I seem to be running before I can crawl and have a question on TT clocking in/out.

TT + JF are performing like a dream for me and have reignited my interest in my eurorack system again. The only challenge I have so far, and what feels like it should be straight forward but is eating away at me is clocking TT externally. I was hoping TT would become my master clock feeding into Hermod which then translates to midi for all my other synths. However from my research and trials TT sending clock for midi is not the best approach. So, how about Hermod or Ableton as the master clock?

Question, how can I clock TT from Hermod or any other master clock? Going back through TT studies, manual, this forum etc I cannot seem to find a simple array that gets TT clocking to an external source. Feeling a bit stupid as I can now create all these complex sequences and patterns but cannot clock this spectacular device, ha!

You can use one of the trigger inputs as input from a master clock. Whenever an input gets a trigger, then it runs the corresponding script (which can then do various other things, such as call other scripts and so on). There’s also a special script called “M” which runs on a regular clock internal to the Teletype (the metronome), but if you want to use an external trigger then you don’t need this.

For example, say you wanted to output notes from the first CV output controlled by a pattern triggered by a master clock plugged into trigger input 1, then you’d simply put CV 1 N P.NEXT in script 1 and you’re done.

EDIT: oh, if you’ve already coded a bunch of stuff and put it in the M script, and you want to call this script from e.g. trigger 1, then put SCRIPT 9 in script 1 and it will call the M script for you. Then if you disable the internal metronome by typing M.ACT 0, you can fire off the metronome script from a trigger in 1.

3 Likes

You sir, are a legend. I was focusing too much on trying to clock M instead of the individual channels. Thanks very much!

2 Likes

Excuse for my late answer. Thanks for clarifying it a lot. Now all is clear :blush:

We have made progress but a problem with your comment in EDIT. SCRIPT 9 in scene 1 doesn’t want to call the M. M holds scene launches 2-7 for this particular script so the idea is that everything launches from the M once triggered by pressing play on Hermod. I know Hermod is sending clock ok as I have tested it on other modules and JF notices the incoming clock signal through TT as JF.TR 1 lights up.

TT
#1: JF.VOX 1 5 2
SCRIPT 9

#M:
CV 1 N PN.NEXT 0
CV 2 N PN.HERE 0
CV.OFF 1 V * 1 TOSS
CV.OFF 2 V * 2 TOSS
$ 2; $ 3; $ 4; $ 5
$ 5; $ 6, $ 7

I have not included a $ 1 launch in M as I assume this would come from the incoming clock. I have tested with anyway and no luck. Running the M with M.ACT 1 works as it should but is obviously internal TT timing not Hermod.

Thanks in advance!

Can you confirm you have the latest firmware installed? Prior to v3.2.0 SCRIPT 9 and SCRIPT 10 didn’t do anything. Note that updating the firmware will erase all your saved scenes from module flash, so back up to a USB drive before updating if you have scenes you want to keep.

1 Like

The likely cause of the problem I think. TT arrived fresh from Monome around the same time the new firmware dropped a week or so ago. I will shall report back after an update.

Cheers

That was it. All working seamlessly now. Big thanks to you + @SimonKirby

1 Like

Hello. Is there a good tutorial somewhere of how to use Teletype commands with Ansible running Kria? I’m reading the documentation and I feel I could get more explanations and exemples. Thanks.

Beyond the tutorials, I tend to refer to this, which is a list of all the commands and a brief description of what each does.

3 Likes

My mistake was to assume that you could change the value of a parameter with Teletype (let’s say randomize between 3 notes for the first step), but from what I understand now, you can only change the position of the reading head for a parameter. Changing values must be done
on the grid, which makes sense in a way. I guess the lesson is: never assume. Thanks for the respond.

Hmm… it’s not 100% clear to me what you mean by a parameter. Do you mean the value of a pattern at a given index? If that’s the case you can use

PN <pattern number> <index> <newValue> or
PN.INS <pattern number> <indexToInsert> <value> or
P.HERE <newValue> (changes at current index of current pattern)

if you mean the parameter to some function, say CV 1 V 5, then you’d need to;

X V 5; CV 1 X

then change the value of X. Forgive me if I’ve over or under explained anything!

1 Like

I think @gumby is referring to changing values in Kria? If that’s the case, then yes, there are some limitations as to what Teletype can do to Kria’s data/notes which are restricted to the scale/pattern.

If talking about the data in Teletype, you can use RRAND to choose a range in place of note assignment on the Teletype CV outs or get a random pattern step in the tracker data.

RRAND x y RRND generate a random number between x and y in- clusive

2 Likes

Yes, I was talking about changing values in Kria (sorry for the confusion). This discussion clarified things for me. Many thanks.

1 Like

With the latest firmwares, you can do this by simulating grid button presses from Teletype, I think. I have yet to actually try it though.

3 Likes

Hi! I have a question regarding my regular Teletype scene. I want to add some functionality to it, but I think I need to consolidate some code to make more space. I’m specifically looking for a way to consolidate my Scripts 7 and 8 into one script. What they do is serve as my Previous and Next sequence buttons on the grid. They define variables X and Y, which are pattern start and end, and uses the O command to increment or decrement (depending on whether I invoke Script 7/Previous or Script 8/Next). Variable Z sets the number that it increments by, so I’m using Z to set my sequence length.

I’m using Grid Ops to invoke all of it. I’m using a radio button (G.GBX) to set variable Z and I’m using two separate G.BTN buttons to invoke Script 7 and Script 8 separately.

I’d love to figure out a way to set variables X and Y (patt start/end) using one script, and perhaps using a G.GBX type button. But I’d still like to use Var Z as the sequence length or amount to increment X and Y.

Does that make sense? I’ve pasted my code below. I was thinking that perhaps LSH and RSH or maybe there’s a good way to do this with bitshifting but I have a lot of trouble getting my head around using bit style code. Any help is appreciated!!!

#1
CV 1 VV PN.NEXT 0
TR.P 1

#2
CV 2 N PN.NEXT 1
TR.P 2

#3
L 0 3: PN.START I X
L 0 3: PN.END I Y
L 0 3: PN.I I Y

#4
DEL 20: TR.P 4

#5
IF EQ G.BTNV 0: BREAK
G.GBTN.L 2 5 5; G.BTNL 10
Z G.BTNX

#6
IF EQ G.BTNV 0: BREAK
G.GBTN.L 3 2 5; G.BTNL 10
A - 64 + G.BTNX * G.BTNY 16
C PN 3 ABS A
D PN 3 + ABS A 1
L X Y: PN 0 I RRAND C D

#7
IF EQ G.BTNV 0: BREAK
O SUB X ADD Z 1
X O
Y ADD X Z

#8
IF EQ G.BTNV 0: BREAK
O.INC ADD Z 1
X O
Y ADD X Z

#M

#I
G.BTN 1 0 0 1 1 0 5 3
G.BTN 2 14 0 1 1 0 5 7
G.BTN 3 15 0 1 1 0 5 8
G.GBX 2 4 0 2 1 1 0 5 5 16 1
G.GBX 3 22 0 4 1 1 0 5 6 16 4

2 Likes

I’m sadly weak on grid OPs but I can suggest some text and line reductions:

IF EQ G.BTNV 0: BREAK
O SUB X ADD Z 1
X O
Y ADD X Z
becomes
IF ! G.BTNV: BREAK
O - X + Z 1; X O; Y + X Z

and similar for #8.

Hopefully that makes some space for your improvements! I’ll chime back in if I ever get myself more acquainted with grid OPs.

2 Likes

That’s super helpful! Thank you!