Telex: Teletype expanders

Good news.
PM’d, if I get this right, there should no problems with using TXo’s or TXi’s with TT and JF?

Gonna need a bigger II bus! PM’d for one of each.

Can these be reset? LFO reset would be really useful.

Here be answers.

  1. @nimmen - should be no problems with TT and JF in the mix. :slight_smile:

  2. @GoneCaving - there is a command that restarts the cycle to do a “LFO reset”: TO.OSC.SYNC. I think it will do what you want. :slight_smile:


Can you elaborate on this? How are scales loaded, what kinds of scales are possible, and how are they used in scripts?

I’m super excited about this feature!

Also very exciting! Which DAC is used? My apologies if this was already mentioned, I didn’t see it.

I probably want one of each and it gets me off the fence about teletype in general. :slight_smile:

Questions from @jnoble


Right now, the scales are a included in the code of the expanders. That said, it is very easy to change them out. There is a little utility that takes a Scala file and renders the scale for use in the expander - generating the code necessary in order for it to work. You simply paste the output into the project in a couple of places and upload it to the expanders.

Today it is not possible to change the scales at run time. It wouldn’t be impossible to expand things so that scales can be programmed at run time - that just wasn’t in scope for the first build and release of the module. Everything is open source, so there is nothing to stop this from being added by someone in the future. :slight_smile:


The input and output expanders have the same list of scales. To set a particular scale as active, you simply set the scale value. Each input or output can have its own scale setting. The following two commands set the fist output/input of the first expanders to use the fourth scale (Carlos Alpha):


To use the scale on an output, you can either pass a note number to the CV output like this:

TO.CV.N 1 32
TO.CV.N.SET 1 32

Or you can pass a voltage value to the quantizer:

TO.CV.QT 1 N 32

Using it on input is just as easy, you can either grab the note number:


Or you can grab the quantized voltage value:



The DAC that is used is the DAC8564 (Mouser P/N: 595-DAC8564ICPW; datasheet: This part is used by a number of Eurorack modules - including Mutable’s Yarns and Ornament + Crime by mxmxmx. It has tiny little SMD legs that can cause DIY cursing. :wink:


Oooh, thats dac chip is indeed small.

On my first o&c built, was using lotsa flux, fine solder tip and .5mm solder lead, it took couple of times to get it right.

Bought an hot air station for a 2nd o&c build with solder paste, it was much easier.

1 Like

Goodness, that’s quite an answer. I too have a conversion utility that makes Scala archive scales into code for a quantizer, but you’ve gone several steps past me. I’m very pleased and impressed.

What’s the programming toolchain like?

Lurker here

I’d like to order, but I have no idea how to PM on |||||||

Which is somewhat embarrassing.

I googled, I clicked, I reclicked, I puzzled, and now I’m wearing the dunce cap in the corner I guess!

Click on the circle avatar/user profile image; yours is the green ‘H’ in a circle. Then look in upper right corner of the window. Blue bar that says “Message.”

Must be a new user lim, sorry. I can get to messages, I can see messages, but there is no control to make a new one. I’ll wait it out I guess.

I put together the first draft of the command reference in Markdown today. Most likely full of typos and errors; only had time to do a light proof. You can find it here:

All of the other details on that github repo are quite old. I’ll be updating it in the coming weeks with all of the bits and bobs as I get organized for production.


reply for @jnoble

Toolchain is dirt-simple. There is a python script that reads Scala files (it takes an input file with a list) and generates the tables in c++ code for the android application. Then, it is cut-and-paste land.

For performance reasons, the entire table is generated ahead of time and stored as a constant. This allows for instantaneous switching between scales and super-fast lookups as it also creates an octave hint table at that time. (I should also note that the quantization employs hysteresis to keep the values from flopping all over the place at boundaries.)

The quantization values are at a reasonably high resolution, so using them on the output using the .QT or the .N operators outputs fairly precise frequencies - especially if you are using the oscillator mode. That said, tracking is all over the map in the analog world - so results will vary widely. That is why the features are extended / experimental. :slight_smile:

Sorry, I meant to reprogram the expander. :slight_smile:

Pretty stoked to hear how you’re thinking this all through.

1 Like

I think I stated this too ambiguously. :smiley: What is required to compile and update firmware for the expanders?

I just ordered a teletype last night. Please put me down for one of each expander.

Ah; gotcha. It is dirt-simple.

Expanders are programmed using the Arduino IDE with the Teensy extensions. You just need to install those two things. I work on a Mac, but they should work equally as well on Windows.

The modules are programmed in C++ (save the base Android file which is in Androideese). I kept it this way to make them easy to play around with and extend. Steps to compile and update are as follows:

  1. Open project (TXo or TXi)
  2. Make desired changes.
  3. Connect the Expander to Your Computer via USB
  4. Click the Upload button and the Firmware is Compiled and Updated

You can also drop the HEX file into the Teensy loader and skip the Arduino IDE if you aren’t making any changes.

I’m sure there is a command line way to do this - I don’t bother. I do use a simple Node.js app that I whipped up to connect to the expander and show logging messages when debugging. I’ll be sharing that as well. :slight_smile:

I should make a note that there are a couple of new models of Teensy with a lot more horsepower that are pin-compatible. With these, it will be possible to up the sampling rate and also do more with the experimental features of the expanders. I’m pretty excited about this - but haven’t had time to properly experiment. They are in my DO NOT TOUCH box until this part of the project is done.




Sweet, this even works well on Xubuntu (which is what I’m running).

1 Like

A new option for the panels is available from Lazergist. For an additional $7 per module they can glass bead blast them for more of a finished look. I’m inclined to do it in order to better match the finish of the expanders to the Teletype. The current panels look nice - but they have a slight sheen to them that picks up colors in the environment a little more. See the pics below.

Anyone have major objections?

With Glass Bead Blasting:


More about the process:


Looks like 7 dollars well spent. buttery smooth.

1 Like

“Das Glasperlenspiel.”

Do it.

1 Like