Teletype 2.0 beta (release candidate 2 released 13th July 2017)


seems your startup code could be optimized?

paul says 5ms, so perhaps we could figure out how to get your i2c registering earlier in your setup process

Telex: Teletype expanders

Quite possibly. I know of at least 4ms I should be able to trim. :slight_smile:

The expanders used to beat the Teletype to the ready … then @sam came along. Damn him!!! :wink: :wink: :wink:

Right now, startup is clean and logical. I don’t do much outside of reading the jumper setting, setup the DAC, initializing some classes, and turning on i2c. A quick profiling of this shows that my init function after reading the three i2c jumpers takes less than 1ms. Hmm…

I have a feeling the delay is from some static, large lookup tables being copied to dynamic memory when the app is constituted (before the app initializes). I’ll have to dig into it to see if there is anything that can be done.

Telex: Teletype expanders

I used to get so lost with the old setup.

How about a different solution, hopefully better…

I’ll move the help key from PRINT SCREEN to alt-? (this is the same key used by OSX, sort of).

The I can add NUM LOCK as a shortcut for pattern editing, and PRINT SCREEN as a shortcut for live mode. (I will also add F11 and F12 as backups for those on other keyboards). TAB will stay as it is.

That way along the top of the keyboard we have:

  • run scripts with F1 - F10
  • edit scripts with alt-F1 to alt-F10
  • jump to pattern mode with PRINT SCREEN
  • jump to live mode with NUM LOCK



Yeah I fixed the USB memory stick code, so no startup delay required anymore.

Is this data that needs read access?

You can use objdump (from your toolchain) to check which sections are loaded into RAM and which are kept as RO in ROM, there are some other tricks to list the largest variables and where they are too.

<Insert caveat about Harvard Architectures>

Start a new thread (or PM me) if you want some help deep diving.


I liked the old style as it needed just one key to switch between what I understood as the woe main pages plus the tracker key. Seems Easy to me.

But this proposal seems to be like a logically consistent solution and might be a reasonable compromise.

Would be great if it could be implemented!



Just so that @Leverkusen doesn’t feel like a lone voice in the wilderness – I’d be very happy if this could be implemented as well. PRINT SCREEN and NUM LOCK seems like a great solution.


Honestly, I find the new solution much simpler. I didn’t think I would, but after using it - no problems whatsoever.
As long as TAB still stays the same way, for cycling, I’m cool with not learning a bunch of extra keys.


i like the proposed solution as well - i really like the new TAB functionality - for whatever reason i found the previous system really confusing. and i like the idea of having dedicated keys for direct access. not sure about using F11/F12 keys though - i’d keep them for something else we might need in the future.


It was more for people with 3rd party keyboards that might not have a num lock or print screen key.

Anyway, it’s an easy change to make. Will do it this evening.

Been thinking about this. I’d rather not do the whole 191ms if you can shave things down. But I think a little delay (50ms or so) might be prudent before running the I script.


ah didn’t think of that, makes sense.


I do think some delay is reasonable. :slight_smile:

Let me see what I can do to optimize on my end.




Shortcuts added for live mode and pattern mode. It works well.

Nice and easy to do too:


I’ve had a look at the code, and can’t see anything that would cause the issues your facing (that doesn’t mean it didn’t happen though!).

Basically unless I can reproduce a bug it’s really hard to fix.

With this command, if Z isn’t changing, then CV 3 won’t change either. Is it possible that was the issue instead? Similarly the value in the pattern (at PN 0 Z) might be the same, again you won’t see a change on CV 3. Also if Z is below 0 or above 63 it will always read the first or last value in a pattern (and CV 3 won’t change).


Release candidate 1 out now, download in the first post.

Changes since beta 10:

  • More OP documentation, big thanks to @bpcmusic, @GoneCaving and @tambouri for their contributions

  • ME.PRESET and ME.RESET renamed to ME.PRE and ME.RES

  • XOR added as an alias to NE

  • Support for the newest TXo OPs

  • New keybindings: NUM LOCK to jump to the pattern editor, PRINT SCREEN to jump to live mode. The help short cut has been moved to alt-? (don’t forget to press shift too).

Known issues:

  • Tables in the PDF can be hard to read. Sorry about this, it probably won’t be fixed until after 2.0 is out. But if it makes you feel better I find it really annoying too (which makes it likely that I’ll want to fix it).

  • Screen glitches. They’re safe to ignore, we know why they’re happening (CV updates interrupt screen updates). Should hopefully be fixed in 2.1 by @scanner_darkly

The only things I’ve got left to do are to add some documentation on the new features in 2.0 and update the builtin help text.

Given that work on 2.1 has already started, I think we’re looking at major bug fixes only now.

Does your teletype stop responding after an hour or two?

Moving TX startup details to the expander thread.


Hello all. I’ve got a new version to upload but I can’t seem to edit the first post anymore…

A bit of Googling points me towards:

@tehn, any chance for an increase on the time limit so that I can make one (last) edit for rc2.

Teletype 2.0 documentation

Apologies for hijacking the thread, but if I wanted to build a firmware that handled more than 8 scripts, is it as simple as a modification to SCRIPT_COUNT in state.h? Has anyone tried this?


Unlikely to be that simple.

Initially (I think) it was more hard coded, but I’ve since gone through and tried to make it a #define wherever I find it. If I’ve done it everywhere then it will compile and run (in theory). But you’ll still need to deal with any UI issues.

You’ll not hurt anything by trying…


updated, lengthened.

thank you for all of the exceptional work on this.


Release candidate 2 released. Download in the first post.

Changes since release candidate 1:

  • Minimal updates to the builtin help text (e.g. updated keybindings). I have removed the II page entirely.

  • Add a very small delay before running the init script on startup (as per @bpcmusic’s suggestion) to make sure that all devices on the i2c bus have booted up.

  • Added a ‘what’s new’ section to the documentation, as well as sections on sub commands and aliases. These aren’t the best written things in the whole world, but at least the info is in there.

  • Orca op docs from @scanner_darkly

  • Final tweaks (for now) to the PDF generation, the chapter headings a bit less full on, and I’ve added some vertical space between table rows to make them a bit more readable. More than that gets a bit tricky (and this thing needs to be released already!).

Release candidate 1 has been out for about 6 weeks now, and it looks like there haven’t been any major bugs (at least over 1.4). The changes in RC2 are very minimal, so I’m planning to release the final version of 2.0 this weekend unless something big comes up. Then I can hand over to @scanner_darkly for 2.1.

@tehn, if all goes well and with your permission, I will merge my changes back to monome/teletype at the weekend and tag a release (and upload a zip, etc). I’ll then start a new thread…

All testing and proof reading is most welcome. Though unless they are big things, I might choose to deal with them after 2.0 is released. Thanks!