Grid ops / integration



i think i will change to 64 groups. this could allow you, for instance, to have 8 pages and then you can use groups within each page to set properties on multiple controls at once.

as it won’t really be all that useful to display the state of each 64 on visualizer i’ll change it to just show the current group number instead.

> teletype: grid # code exchange

changed the visualizer screen. the currently selected group is now shown in the right top corner (and as you can see there are now 64 of them available).

still not entirely happy with the icons… @laborcamp do you think perhaps you would have a chance to help design something better? the top left icon is supposed to show which half of a bigger 256 grid is shown (upper or lower) and the one underneath is active when grid rotation is applied. both are 6x6 pixels.


6x6 is very tight, of course.
I am not sure if i can do much better than what you have.
The arrow, I agree, is a bit rough looking.
The only alteration that I maybe would be tempted in trying is to see if the “half grid” icon could be articulated by “filling” in one half or another, rather than just altering the brightness of the outline edge. But honestly, am not certain if that would be an improvement. Just something I would want to “try and see”.


thank you! yeah, i like the idea of filling in the half that is active, i think it makes it more clear which half is being shown, i’ll try that. was also thinking of reducing their size to 5x5. for the arrow i’ll try to play with some simple anti aliasing.


a quick try on the fill, and some 6x6 arrows.


these look great! for the arrow the middle one in the top row matches the meaning the best (rotating grid 180 degrees).


It’s little things, but it all matters!


late to this party, but I grabbed the beta last night, and worked through a few of the studies and fell into a few playful digressions that follow studies

@scanner_darkly this is a really impressive and inspiring addition to an already impressive and inspiring module



Would it be possible to enter negative values for col/row arguments on G.BTN and G.FDX, so we can change the way ids are distributed ?
That would spare some maths.


great idea! i’ll add it. would also be nice to have ids arranged by rows first, but i can’t think of a good syntax for this…

curious though, what math do you need for ids? i find i usually need to use calculations on ids to determine a button’s coordinates (for something like trigger sequencer), for this use case i’m going to add dedicated ops since it seems to be an often used case (so something like G.BTN.X and G.BTN.Y).



@laborcamp - new icons look great! for the square one i ended up using a dimmer frame (a bit hard to see in the pic) as it seemed less distracting.


I’ve finally got a) an offworld and b) some time, so I can give this a run.

Is there a new build dropping soon, or should I run with the Oct 29 build in the op?


Nice ! I was indeed referring to button coordinates. G.BTN.Xand G.BTN.Y sound awesome !


i think i should have a new beta (possibly the last one before a release candidate) sometime next week, which will include a bunch of new ops, so might be worth waiting for that.


this took a bit longer than anticipated due to my birthday followed by getting laid off from the company i worked for over 10 years, but the latter also means i have a lot more time to finish the grid integration - getting close to a release! this is likely the last beta before a release candidate.

[205521A grid]
teletype.hex (425.8 KB) (126.2 KB)


  • number of groups increased to 64
  • visualizer updated (thanks to @laborcamp for new icon design!)
  • new ops, see list below
  • bugfix for G.FDRN value being off by 1
  • fix for IN latency included

several ops got extended functionality. you can now use the following to also get the current value: G.GRP, G.GRP.EN, G.GRP.SC, G.LED, G.BTN.EN, G.BTN.L, G.FDR.EN, G.FDR.L, G.BTNL, G.FDRL, and you can now use G.BTNV, G.FDRV and G.FDRN to set values.

3 new ops allow easy conversion of grid scenes to be used without a grid:
G.KEY x y action emulates a grid key press
G.BTN.PR id action emulates a button press
G.FDR.PR id value emulates a fader press

new group versions for G.BTN, G.BTX, G.FDR and G.FDX take group as the first parameter: G.GBT, G.GBX, G.GFD, G.GFX (i decided to use 3 letter versions to gain an extra space).

you can now get and set x and y coordinates - this will be super handy for sequencer math (or you can make a button that jumps around!) G.BTN.X, G.BTN.Y, G.BTNX, G.BTNY (and similar fader ops).

finally, another op for drawing rectangles - sometimes it’s easier to use start/end coordinates instead of x/y/width/height: G.RCT x1 y1 x2 y2 level1 level2

full documentation available here. to help deal with so many ops this explanation of the logic behind the naming convention might be useful.


Great news ! (about the release, not you being laid off…)
Hope to find some time to get back to TT + Grid these next weeks !


this layoff might actually be one of the better things that happened to me. i started there when it was a small company with great culture and awesome people, but it hasn’t been like that for a few years now. so now they have to please the new investors while telling everybody to drink the corporate kool-aid and explaining how important we are for company profits while being completely replaceable. i didn’t realize just how unhappy i became with the job, it’s like a big weight was lifted off my shoulders.

and i can work on firmware whenever i want to :slight_smile:


i considered adding this (i like the idea!) but decided against it because the use of it wouldn’t be straight forward. consider creating a group of controls with 5 columns and 2 rows. i would expect it to work like this:

5 2

0 1 2 3 4
5 6 7 8 9

-5 2

4 3 2 1 0
9 8 7 6 5

5 -2

5 6 7 8 9
0 1 2 3 4

-5 -2

9 8 7 6 5
4 3 2 1 0

then the question becomes which id should be specified as the first id? let’s say we use 0 for all the above. then this breaks the convention that the first id is always located in the top left corner of the block. so in order to fix this we either have to specify the actual id, which for the examples above would be 0, 4, 5 or 9, or we change the convention. either option would make it difficult to understand what is being done just by looking at the script. so balanced against the problem it would solve it doesn’t seem like a good addition. hopefully the new .X and .Y ops will work better for this use case (they really simplify the maths for something like a multi track sequencer!).

forgot to mention, i’m going to revisit the grid studies to take advantage of the new ops, but not until a release candidate is ready (and i’ll be adding more studies).


Dumb question - I finally got around to trying to install this, but realized the way I usually install betas doesn’t seem applicable here. How do I install a hex file on the Teletype?

I’ve normally just run ‘./update_firmware.command’


Happy belated birthday!