Teletype 3.0



Got it. Will install today. exciting developments!
Many sincere thanks to everyone involved in pushing this forward!


mostly we just need to document 2.2, @bpcmusic already documented his 2.3 features and i will be doing grid integration and the rest of 2.3 stuff.

also if somebody volunteers to update the PDF key reference that’d be awesome, it hasn’t been updated since 1.3 and there are a lot of keys missing (and some were changed).


I submitted a bunch of documentation changes to @sliderule for 2.2. I believe they are awaiting review or inclusion.


ternary if op

? condition a b

this op means “if condition is true, return a, otherwise return b”. the main benefit of this op is that it can be used in expressions without the need to use IF pre op. consider the following:


now you can do the same with A ? EZ Z B C.

as with IF, condition can be any value. 0 value is treated as false and any other value is treated as true. so you can also do something like this: A ? % Z 1 B C or A ? TOSS B C.

Teletype feature request: swing

PR opened for those docs! Thanks for your hard work. You might want to open a thread to openly work on your studies material. I don’t know what direction those need to go to fit in with the existing one.

Also, super work @scanner_darkly! Love the ternary op and the implementation of multi-line select.


awesome, thanks! and big thanks to @unity2k for helping with the docs.

i updated the docs to also include the fix for IN op latency as it’ll likely be released as part of 2.2. once that PR is merged i’ll merge both PRs into my branch as well.

edit: 2.2 docs have been merged to my grid2 branch.


multi line cut/copy/paste

when editing scripts you can now use Shift-<up>/<down> to select multiple lines. when more than one line is selected the edit line (the bottom line) does not display anything, and to return to editing you can either press <Enter> or select a single line. pressing <up>/<down> will also make it go back to single line selection.

other fun things you can do with selected lines now:

  • Alt-<up>/<down> will shift selection up or down
  • Alt-<delete> will delete selection without copying it into the buffer
  • toggling comments with Alt-/ will work with multiple lines as well

all the old shortcuts for cut/copy/paste will now work with multi line selection, and you can still use them with single lines as well. however, there was a change in behaviour i had to make: when pasting, it will paste at the current position while shifting what was there down. previously, when you pasted something, it would paste into the edit line, so to commit the paste you had to additionally press <Enter> and it would replace the currently selected line with whatever you pasted. now it will shift the currently selected line down and it will insert the pasted line(s) above.

this seems like the most intuitive approach but i’ll be curious to hear how people find it in practice. you can somewhat replicate the old behaviour by copying, then selecting the line you want to replace, pressing Alt-<delete> and then pasting. i’m also considering adding this: when pasting a single line, and the edit line is empty, replicate the old behaviour (paste into the edit line but don’t commit). this way you can also replicate the old behaviour by copying a single line, then navigating to the line you want to replace, pressing Shift-<backspace> and pasting.

the buffer is shared between script editing / live screen / preset writing screen. i still need to add support for multi line selection to preset writing screen, once it’s done one thing you could do is use it to store bits of scripts!

finally, you can now navigate by words using Ctrl-<left>/<right>. i’m hoping these changes will be useful for live coding as well!


Hi all - Recently got my Teletype and I’ve been playing around with 2.3 beta 1 for a few days.

I’m not sure if this is the correct location to post ‘bugs’ - please let me know and move if not.

  1. My PARAM value is fluctuating. I noticed this was reported on an alpha of 2.2 (by @laborcamp) - but looks like it was declared fixed.

I have tried Firmware versions 2.1 release, 2.2beta1 and 2.3beta1. PARAM fluctuates on all of them. I have calibrated (to 0 and 16383 succesfully) . I have tried different power rail and case. It is varying enough to cause me to overwrite the wrong Scene when saving.

  1. I have had a few instances where pressing ALT + UP on a script, to move a line of code, has caused the screen to go blank and require a power cycle.



yes, please post bugs here, unless it’s something 2.2 specific in which case it should go to the 2.2 thread (thanks for testing with multiple version - that’s very helpful!). if it’s a bug that existed before 2.2 then we can add it as an issue on github and it’ll get fixed when one of the developers chooses to work on it.

for the PARAM issue i believe that’s always been that way, there is a small amount of noise on the knob, calibration won’t fix that. i don’t think it was ever fixed, at least not to my knowledge - can you post a link to the discussion? regardless, i think there might be a way to reduce the jitter for scene loading/saving, i’ll think about this one.

Alt-<up> - when does it tend to happen? single line / multiple lines? any other details?


Here is @laborcamp mentioning the PARAM wobble on 2.2 - not sure if it is the same issue:

Personally, I wouldn’t mind losing some resolution on the PARAM knob if it meant it was stable. I have been using it to window through sections of CHAOS - which only really works when it is rock solid!

Regarding ALT + UP. It is almost certainly single line - I’ll try to replicate it. As the screen goes blank suddenly and unexpectedly, I can’t see exactly which line I was on but it has happened 3 or 4 times and each time I had my fingers on ALT + UP!


Other issues with ALT moving a line up/down:

  • The commented-out status of a line doesn’t move with the content of the line you are moving.

  • Moving empty lines between lines of code can break the page such that code is pushed down off the page - ie it appears that an empty line is inserted each time you try to ALT + UP or DOWN to move a line of code.


It is possible to cause a crash by entering an integer larger than 32767 as a Loop command in live mode.

L 0 32768: A R


re: losing resolution on PARAM - you can already do that by dividing or scaling. but sometimes you want a bigger range, so it’s always going to be a trade off. for scene selection my idea is to introduce “dead” zones between values, so even with jitter it shouldn’t change values when it happens to be right on the edge between two values.

moving lines - i’ll go over that code again and introduce some additional boundary checking, so at least it won’t crush. i’ll do that and check the other issues (and the loop issue) tomorrow.

thanks for your help with testing, very much appreciated! i’m a bit surprised tbh there hasn’t been more feedback, it’s been out for a couple of weeks now.


Yes. Using SCALE to set PARAM range removes jitter completely but only at a range of 32! Dead zones where the value changes sounds like a good idea - presumably it would require calibration first?

I’m just getting started with the TT, so I’m still at the stage of exploring the limits of each OP and the interface rather than complex scripts.

I noticed a couple of potential problems in the Tracker mode earlier but I didn’t make notes at the time. Pressing CTRL enters a value (without requiring ENTER…?). I’ll look again later.


it shouldn’t. with only 32 values i think it should work even without calibration (but calibrating is still a good idea).

it’s on purpose - pressing CTRL enters the current knob value into the selected cell.


Yes range of 32 works fine as is but I thought you were suggesting dead zones as a fix for jitter at the maximum, non-scaled range. (I would prefer stability at a range of 1024 at the very least! Ideally 4096.)

I must have skipped the section of the pdf where CTRL in the Tracker was mentioned. I’ll double-check any further bugs! Cheers!


One thing I wished I had the time to do when I re-wrote the cut and paste code was to display the contents of scripts on the preset load screen and add support for copying the contents.

If you’ve got the headspace for it (and especially with the multi-line changes) it would be a real timesaver.


I’ll add my support for this idea. I find that I often want scripts for other scenes as part of something I’m working on… i.e. I have a quad lfo script that I’d love to be able to copy into any new scene that I’m working on.


i don’t think the technique would work well for full range, you’d want it to be smooth. for scene selection though it makes sense.

do you mean displaying full content as one page right after the scene description part? that might be simple enough to do, i’ll take a look. not sure how this aligns with the proposal for new scene loading/saving though, i wasn’t following that discussion closely.


Yeah basically that. IIRC you should be able to call print_command (from src/command.c) to get the string out easily enough. The trickier prospect is deciding how to manage the output buffer. (i.e. convert all 10 scripts and store them in a temp buffer, or convert each line on demand as it’s needed). Other minor complexities include dealing with blank script lines.

AFAIK that only concerns serialisation to/from text files on USB, the on flash storage format will still be in the ‘compiled’ op codes that we currently use. Hopefully by using print_command you’ll be isolated from any changes in the underlying representation anyway.