Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

I2C communication with Monome Teletype


One suggestion from me… if this does prove to be popular, try to move towards having the I2C handling code in the ER-301 be something that runs via the SDK and open source. That would make it a lot easier to keep it up to date with protocol changes1 (not that any are planned…). Depending on what the SDK allows access to, it would also allow the design of OPs to be driven by the Teletype users/devs, which might end up being a better workflow.

1 e.g. it’s entirely possible that some enterprising contributor would want to get multi-master I2C working in the future…


er-301-v0.3.06-unstable-48kHz.zip (1.4 MB)

ER-301 firmware for testing with the following additions to support external control via Teletype:

  • System Settings > Monome Teletype. Here you will find an options to enable/disable the I2C communication and set the I2C slave address. I2C is disabled by default.


  • 2 basic TELEXo-type units named after their Teletype commands: SC.TR and SC.CV each with modulate-able listening ports from 1 to 100.



FYI, I have successfully tested all commands with ports 1-4 via the TELEXo slave address (0x60).

Oh and these changes also:

  • NEW UNIT: Slew Limiter, 3ms to 786s.
  • ENHANCED: -10V to 10V are now mapped to -1 to 1 (previously -10.24V to 10.24V was mapped to -1 to 1).


You have 100% agreement here. :+1:


I am eager to get this going.
Few questions:

  • should I / do I need to take the CPU board out of the main body of the module to perform the solder mod?
  • any additional advice on how to do it well, without jeopardizing anything?
  • can you post a picture or two on the actual hook up of the two modules (which wires connect with what)/

Thank you!


Also very interested in this, particularly the adapter-cable. I figure I’ll be able to make it, but I have no clue what needs to be connected to what :smiley:


There is no need to detach the CPU board to perform the modification.

Soldering the shunt across diode D3.

How to connect the Teletype to the ER-301.

There are 5 pins extending parallel from underneath the CPU board. You will only be using the top 3. You can also see that the 5 pins are labeled on the ER-301 silkscreen as TX, RX, GND, GND, and 5V. Connect like this:

  • Teletype GND to ER-301 GND.
  • Teletype SCL to ER-301 TX.
  • Teletype SDA to ER-301 RX.


We have to wait for @bpcmusic to push his Teletype code modifications before the SC.CV and SC.TR commands will be available. However, if you are really eager to try it out, you can pretend the ER-301 is a (basic) TELEXo by selecting slave address 0x60 and sending TO.CV and TO.TR commands to port 1-4.


This is very exciting! :heart_eyes:


Trying this asap, thanks for the detailed how to


Thank you for this detailed and prompt response!


Looks like some great progress has happened above!! Apologies for taking a bit longer here - the holidays and some family sadness (one of our cats just had to be put to sleep - she’d been with us for 20+ years) has had me away from the computer.

I was however able to put together an ALPHA build of the Teletype firmware to support the ER-301. Validated it with a TXo (by setting it to the ER-301’s address). Things are looking good on this end. I’ll be finishing up a few other things in my branch and then submitting a pull request to @scanner_darkly.

teletype.SCALPHA.hex.zip (141.0 KB)

ER-301 Teletype Initial Integration Documentation

The attached HEX provides an initial integration of the ER-301 with the Teletype. This binary is not intended for mass distribution as it is itself a fork of an in-development beta of the grid operators branch of the Teletype’s firmware. This branch is scheduled to go into wider testing and then live after the 2.2 firmware release finishes its BETA and goes live.

The build activates the following operators that send i2c commands to the ER-301 (x references the output and y references any value that is passed to the device):

SC.TR x y
SC.TR.PULSE x (Alias: SC.TR.P x)

SC.CV x y

This build only supports sending values - it does not provide functionality for reading the ER-301’s state on the Teletype (for now).

The ER-301 devices are referenced at the following root i2c value: 0xB0. The firmware supports additional devices through the basic addressing. The first four CV and TR outputs are send to the first ER-301 at 0xB0, the next four (5-8) are sent to the second ER-301 at address 0xB1, and so on. Right now, up to eight unique devices are supported. (That would be crazy!)

As mentioned above, this has been validated by changing a TXo root address to 0xB0. The implemented command set uses the same command addresses as the TXo’s command set for ease of testing. Here they are:

SC.TR 0x00
SC.TR.TOG 0x01
SC.TR.POL 0x06

SC.CV 0x10
SC.CV.SET 0x11
SC.CV.OFF 0x15

The i2c command also works the same as the TXo. It targets the system’s address for the command and then passes the command ID followed by a value, if needed. Values are sent as an int16_t which has been cast as an uint16_t and split into two uint8_t values for the transmission.

Let me know if there are any questions. I hope to mod my ER-301 in the next few days to validate everything. Thanks for the instructions above!


This thing is rolling!
Quick question, (and it might be just me being daft) what does the SC stand for?


Sound Computer :slight_smile:


Teletype, etc. + ER-301 = Aleph v2. :sunglasses:


Ah, exactly.
I guess I never think of the module as such (kind of wish it was not called that really).
In my head it’s always ER, and never SC.
But I get it.


Happy Holidays folks. This is one of the coolest things I’ve ever seen. Thanks to all!


…and I have to be off on a one week vacation just as this starts to unfold. Awesome development!


just gave this a shot … omg omg omg :smile_cat: :smile_cat: :smile_cat:


Just noticed this part about 4 outputs. Currently each ER-301 allows the user to address 100 outputs. So really outputs 1-100 should go to 0xB0, then 101-200 should go to 0xB1, and so on.


Gotcah. I’m planning to open up the other 96 outputs once I’ve validated the firmware with the 1-4. This will be so awesome-crazy!!!