ER-301/Teletype Integration

From O|D Wiki
Jump to: navigation, search

Required Hardware Connections

  1. First determine your ER-301 board revision.
  2. If you have an ER-301 with board revision 7, then please go here.
  3. Otherwise go here.

Status

As of v0.3.06 of the ER-301 firmware, there is support for Teletype to control the ER-301 over the i2c bus. There is a discussion thread over on the forum dedicated to this topic:

Forum: Discussion on Teletype integration

Available Units and Commands

Pitfall.png
ER-301/Teletype integration requires ER-301 firmware v0.3.06 or later, and Teletype firmware v2.3 or later (discussion and github branch linked here).


The following commands are available on the Teletype for control of the ER-301. In all cases, the first parameter is the port number which can take any value from 1 to 100.

Command Description
SC.TR port α Set TR value to α (0/1)
SC.TR.TOG port Toggle TR
SC.TR.PULSE port Pulse TR using TO.TR.TIME/S/M as an interval
SC.TR.TIME port α time for TR.PULSE; α in milliseconds
SC.TR.POL port α polarity for TO.TR.PULSE set to α (0-1)
SC.CV port α CV target α (bipolar)
SC.CV.SLEW port α CV slew time; α in milliseconds
SC.CV.SET port α set CV to α (bipolar); ignoring SLEW
SC.CV.OFF port α CV offset; α added at final stage

(Adapted from: TELEX Command Reference by bpcmusic)

The above SC.TR and SC.CV Teletype commands are paired with two corresponding units on the ER-301 of the same name:

SC.TR Unit

d87c687386295802a462c59e3469ffbbb140e837.png

The SC.TR unit has a single parameter called 'port' which is also modulate-able. This port parameter matches the first argument of all of the SC.TR commands on the Teletype side. If desired, you can have multiple units set to the same port.

For example, the following Teletype command:

SC.TR.PULSE 42

will cause all instances of SC.TR units with port equal to 42 to output a pulse. Bang!

SC.CV Unit

25e354d46318c861922bea3eb3d15972ca6f7863.png

The SC.CV unit has a single parameter called 'port' which is also modulate-able. This port parameter matches the first argument of all of the SC.CV commands on the Teletype side. If desired, you can have multiple units set to the same port.

For example, any of the following Teletype commands:

SC.CV 42 N 12
SC.CV 42 V 1
SC.CV 42 VV 100
SC.CV 42 1638

will cause all instances of SC.TR units with port equal to 42 to slew to the value of 0.1 (which corresponds to the external value of 1V).

Value conversions

The Teletype maps the integers -16383 to 16383 (*) to the output voltages -10V to 10V. Since the ER-301, maps the voltages -10V to 10V to the internal values of -1 to 1, ER-301 values are calculated from Teletype raw values like this:

(*)

Selecting Slices

Two points to consider when using SC.CV and SC.TR commands to select and trigger slices on the ER-301 (or any device that uses a CV/gate selection mechanism).

Slew

Make sure the CV slew is set to zero (SC.CV.SLEW port 0), or, use the SC.CV.SET command instead of the SC.CV command. The SC.CV.SET command ignores the slew setting.

Ordering

Place your SC.TR commands after the SC.CV/SC.CV.SET commands in your Teletype script. At the moment, Teletype I2C messages are sent one-by-one and there is no grouping functionality (i.e. here is a bunch of messages to treat as simultaneous). So the order in which your Teletype program generates the messages is the order in which the ER-301 will receive them along with a non-deterministic time interval between the messages (especially if there are a number of devices sharing the i2c bus).

Configuring the ER-301

You can enable Teletype i2c communication by navigating to Admin > System Settings > Monome Teletype and choosing the appropriate settings:

Configuring-Teletype-I2C-Address.png

You can also set the ER-301 slave address in this same screen. If you have one ER-301, then use 0x31. Use 0x32 for your second ER-301 and use 0x33 for your third (!) ER-301. This way the Teletype will automatically route your commands in the following manner:

  • ports 1-100 to the first ER-301 (0x31),
  • ports 101-200 to the second ER-301 (0x32), and,
  • ports 201-300 to the third ER-301 (0x33).
Pitfall.png
If you are using older ER-301 firmware (prior to v0.4), you might see i2c addresses starting with 0xB. These addresses conflict with other devices. Please stick with the 0x3 addresses.