so i guess i came around on being able to imitate grid presses in grid visualizer, it’s easier to use than i expected and seems like it could be really useful overall. need to figure out key presses for it, for now i settled on ctrl-g toggling between grid views, ctrl+arrows moving the grid cursor and ctrl+space imitating the press. it might be nice to not have to press ctrl though, perhaps this could be the full view option?

in other [bad] news - found another bug where tt freezes completely. i have an idea on what might be causing it and should be hopefully able to fix it this weekend and will post a new beta version then (which will include the first iteration of the visualizer).

14 Likes

Sweeeeeeeeeeeeeeeet is a complete sentence!

2 Likes

This does look very nice and as easy as intuitive to use!

:grinning::+1:

Holy smokes that looks incredible!! I think you could have entirely usable scenes without ever plugging in a grid (but of course using the grid will make that much easier). I can’t wait to download this build once it’s ready!

This just keeps getting better!

1 Like

new beta time! teletype.hex teletype.zip [FC59CFF grid oct 29]

  • bug fixes, hopefully the freeze bug is gone
  • visualizer (pretty much complete, will just add one more mode)

visualizer is available on the live screen. keyboard shortcuts:
(when in full view you don’t need to press ctrl)

alt-g - toggle between grid previews (edit/full/hide)
alt-<arrows> - move cursor
alt-shift-<arrows> - define area
alt-<prt sc> - insert coordinates / size
alt-/ - switch between upper/lower page

19 Likes

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.

11 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