Grid ops / integration

Phenomenal work! “Define area” will be incredibly useful :+1:

2 Likes

i have to say, i’m really liking the workflow with the grid visualizer. it’s much easier to try different ideas now, i don’t even have grid connected most of the time.

even in terms of emulating grid input it’s not as cumbersome as i imagined - thanks @Leverkusen and @jasonw22 for pushing me to include it! i can totally see grid ops being useful even without having a grid.

11 Likes

Can’t wait to try it!

2 Likes

renamed / recategorized the thread to follow the new guidelines

This looks amazing. Can’t wait to install and play later today.

1 Like

meadowphysics style scene. not using grid here, just the visualizer.

12 Likes

Wow, beautiful – is TXo the only sound source here? I really wish I grabbed one of those when I got the TXi

2 Likes

First of all, many thanks for the grid integration, this turns TT into a totally new beast.

i’m having a headache trying to make a re-triggable playhead, though. i mean a sequentially moving right led, that can be recalled at any position by the press of a button.

Any help/hint ?

(MLR and ER-301 is coming back !!!)

EDIT : missed the point of G.BTNI so i guess this will help me…

3 Likes

thank you! the sound source in that patch is actually flame 4vox. there is a couple of TXos but they are used for control voltage, controlling wavetable / octave on 4vox.

2 Likes

I’ll say it again, this is really incredible work. I’ve got an off-world ready to go, so pumped to dig in.

2 Likes

I’m still hoping to see a clip from you running that 4Vox with the TXo’s.

if i understand correctly what you’re trying to do the easiest way is to use non latching buttons and G.LED to indicate the current position (although you could also do it with latching buttons, using the buttons themselves to display the current position).

let’s store the current position in pattern bank 0 (as we’ll probably want multiple playheads). so what we need is:

  • a script that advances the current position and displays it on the grid - let’s use script 1 for this
  • a script that gets triggered when a button is pressed and resets to that position, we’ll use script 2

first we need to create the buttons. add this to the I script and execute:

G.BTX 0 0 0 1 1 0 0 2 16 1

this creates a row of 16 momentary buttons which will trigger script 2 when pressed. script 1 then looks like this:

G.CLR
PN 0 0 % + 1 PN 0 0 16
G.LED PN 0 0 0 15

this clears the currently displayed LED, advances it, and displays the new position by setting the corresponding LED level to 15. this is where you would also want to update CV outputs accordingly (for MLR if i understand correctly you want something like CV 1 N PN 0 0 which will output 1V/oct CV determined by the current position).

now script 2 gets triggered whenever a button is pressed (or released since it’s a momentary button). this is where we set the position according to the button pressed, and you’re right, G.BTNI will be useful here (we use IF G.BTNV so it only resets on press, not release):

IF G.BTNV: PN 0 0 % + G.BTNI 15 16

adding 15 here has the same effect as subtracting 1, with proper wrapping - the reason we want to do this is that when script 1 advances to the next step you want it to be the step we selected.

that’s it! disclaimer, i’m not near teletype right now so can’t confirm, but i think this should work. i gotta run for now but will add how to make it multi row in a bit.

edit: fixed some typos
edit2: fixed more errors

3 Likes

keeping the momentum on grid integration for now but will do something for sure once it’s wrapped up!

2 Likes

expanding the MLR scene to 4 rows… we can re-use the above but need to make some modifications. first, we need 4 rows of buttons instead of 1. just change the last number in G.BTX from 1 to 4:

G.BTX 0 0 0 1 1 0 0 2 16 4

script 1 will now use a loop:

L 0 3: A I; SCRIPT 3

and the actual work to advance a step will happen in script 3:

G.REC 0 A 16 1 0 0
PN 0 A % + 1 PN 0 A 16
G.LED PN 0 A A 15

a couple of changes here - instead of clearing all LEDs with G.CLR we just clear the row A, and we replace P 0 0 with P 0 A so that we update the playhead that corresponds to A as we now have 4 of them.

script 2 also needs to be updated to:

Y / G.BTNI 16; X % G.BTNI 16
IF G.BTNV: PN 0 Y % + X 15 16

we determine the position of the last pressed button (X and Y) based on the button id - when you create a group of buttons they are arranged row by row (i’m planning to add dedicated ops to get position for specified button which will simplify this kind of thing). then we update the position for playhead Y to position previous to X.

now you should have 4 rows with individual position, all advancing by one step whenever trigger 1 is received. one thing we could add is have a clock divider per row. let’s store them in pattern bank 1, and use bank 2 for counters. add to I script:

L 0 3: PN 1 I 1

that sets the initial dividers to 1. change script 3 to:

PN 2 A + 1 PN 2 A
IF LT PN 2 A PN 1 A: BREAK
PN 2 A 0; G.REC 0 A 16 1 0 0
CV + 1 A N PN 9 A
PN 0 A % + 1 PN 0 A 16
G.LED PN 0 A A 15

this will increment the counter, and only advance once it reaches our divider value. could also use EVERY instead but then you’d have less control over reset.

and, of course, we might as well use the grid to control the dividers! and the 4 bottom rows are free… add to I:

G.FDX 0 0 4 16 1 0 0 4 1 4

and set script 4 to:

I % PN 2 G.FDRI + 1 G.FDRN
PN 2 G.FDRI I
PN 1 G.FDRI + 1 G.FDRN

now the 4 bottom rows will have faders that will set the corresponding track divider to 1…16. finally, a reset would be handy. we could use trigger 8 for that:

L 0 3: PN 0 I 15

that’s it!

edit: fixed errors

9 Likes

I’ll study this tomorrow. But i’m speechless…you’re amazing. The grid studies are awesome.
The grid integration opens so many doors. i really intend to learn properly how to design my own interfaces and programs with it. (Calling @mDang as i know he’ll be interested in the topic and might have missed it.)

3 Likes

@chapelierfou there were several errors in the scripts above, i fixed them/edited the posts and confirmed the scene works properly with teletype. here is a copy to save you time on typing: mlr.txt (1.4 KB)

would love to see what you do with it and er-301! i haven’t spent much time with mine yet…

@dan_derks and here is the meadowphysics variation scene: rain.txt (1.4 KB)

i modified it a bit, when you press anywhere it creates a dot, and when a drop hits the dot it will “split” into 2. this can create some interesting patterns. if you want dots to simply trigger notes and reset drops just comment out this line in script 6: IF Z: SCRIPT 5.

11 Likes

Many thanks.
I am a bit embarrassed because i don’t get how to load scenes from a USB stick. Every time i plug a USB stick into TT, it writes the contents of TT into it.

Scenes that are saved from the TT will be stored as

tt00s.txt

on your flash drive. The numbers will be the scene number and note the “s”.
To load something from the flash drive you just need to rename the file, and leave off the “s”.

To load the mlr.txt file to scene number 10 you rename the file to

tt10.txt

and place it on your flash drive.

5 Likes

Thanks ! (12345678910)

1 Like

Thank you :wink: i’m following this tread with great attention !