Teletype and W/ 2.0 integration


This topic will be used to discuss how to progress with Teletype integration with 3 new modes in W/ 2.0 firmware.
Firmware is here but before updating please make backup of your scenes in teletype as there will be bugs: Built on 2021-03-14 20:00 UTC (317.1 KB)


  • 2021-03-14*:
- Added OPs definitions to manual and cheatsheet (descriptions lifted from lua files in crow repo)
- Added possibility to retrieve values from W/2.0 through i2c
  • 2020-06-07:
- Updated operator names to more verbose ones
- W/T.TIME and W/T.SEEK will now accept two arguments

Working branch is here: GitHub - kfirmanty/teletype at w/2.0-cleanup - feel free to create PRs.

Here are Crow i2c files made by Galapagoose PR for W/ 2.0 integration on which I have based the teletype ones:

List of operators (names are temporary and I will add arguments to delay and tape ops today/tomorrow):

W/D.FBK amount      
W/D.MIX mix
W/D.LPASS  cutoff  
W/D.FREEZE is_active
W/D.TIME seconds
W/D.LNG count divisions      
W/D.POS count divisions
W/D.CUT count divisions
W/D.FREQ.RNG range
W/D.RATE multiplier    
W/D.FREQ freq    
W/D.CLK.RATIO multiplier div
W/D.PLUCK volume
W/D.MOD.AMT amount


W/T.REC active        
W/T.PLAY playback       
W/T.SPEED numerator denomenator    
W/T.FREQ frequency      
W/T.PRE.LVL gain  
W/T.REC.LVL gain   
W/T.HEAD.ORDER previous 
W/T.LOOP.NEXT direction
W/T.TIME seconds subseconds      
W/T.SEEK seconds subseconds           


W/S.PITCH voice pitch
W/S.VEL voice velocity
W/S.VOX voice pitch velocity
W/S.NOTE pitch velocity
W/S.AR.MODE ar_mode
W/S.LPG.TIME lpg_time
W/S.LPG.SYM lpg_symmetry
W/S.CURVE curve
W/S.RAMP ramp
W/S.FM.INDEX fm_index
W/S.FM.RATIO fm_numerator fm_denomenator
W/S.FM.ENV fm_envelope_amt
W/S.PATCH jack param
W/S.VOICES voices

What needs to be done:

  • way to retrieve values - right now it is only possible to send commands to W/
  • better names - right now they might not be easily understandable for users - maybe there could be more verbose ones and aliases for the short hand ones?
  • add second argument to time and seek operators for tape

Feel free to raise any bugs, things not working as expected etc. I should have some time to work on it next weekend. And if anyone would also like to work on it feel free to do so.


Regarding names, it would probably be nice to have both slightly longer but more explicit names and shorter aliases.

The TXi/TXo operators do that pretty well, for example.

And thanks a lot for working on that, of course :slight_smile:


Amazing work so far!

One small suggestion is to use VOX and NOTE to replace ‘play_voice’ and ‘play_note’. This would keep them consistant w Just Friends which is where the names inherit from.


Much gratitude to you, @karol! TT+W/2.0 integration is exciting and a strong motivation to commit to the quickly-captivating latter.

Also, echo: consistency with Just Friends nomenclature would be lovely!

1 Like

About reading timestamps: would it be most natural to have separate read operations for the seconds and subseconds? Maybe add W/T.T for reading the seconds, then W/T.TSUB for reading subseconds?

Admittedly, it breaks the symmetry between get and set ops. But that would facilitate capturing cues into a couple patterns:


And then jumping with

J PN.I # or wherever you want read head

All that said, I’ve been a happy teletype user for all of 3 days now, and I’m just wading shallowly into the TT code. Please size your grains of salt appropriately. :yum:

1 Like

Really loving the teletype control of w/synth (haven’t tried the other ii, I guess I should reflash teletype and try those out pretty soon too!) The one thing that’s a bit weird compared to externally sequencing & striking the lpg is that when I sequence via teletype the voice drones until I tell it to turn off. I haven’t been able to get any sort of LPG behavior out of it even messing with lpg_time/symmetry (both in TT and on W/ itself)… maybe I’m missing something though?

Also for documentation it would be really really helpful for fools like me if there was some way of knowing what type of settings W/ might be expecting for different parameters. For example, I assume lpg_time is in milliseconds, but is lpg_symmetry 0-5V? Because if you CV control it you have -5 to 5V control so I’m not 100% on how that translates. Especially because it seems like maybe crow can go negative where teletype can’t?

(That being said I was trying to figure out how I could get lower notes out of w/ and I started setting up variables to subtract octaves from a notes sequence and it worked so… maybe the negative numbers thing is just as far as voltage output and over i2c it’s totally fine? I thought it was something about teletype that just read negative numbers as absolute values… Am I totally trippin?)

I’ve been using the w/synth maxforlive device and there is a switch on/off for the AR (lpg mode) mode. You can see it here


That’s gotta be via crow right? Maybe I do accidentally have AR disabled because I was thinking it was AR or LPG. Didn’t realize they were the same thing which makes more sense lol—to drone or not to drone, that is the question, to attack perchance to release aye there’s the rub.

EDIT: double checked @mlogger was totally correct, AR mode working fine on TT, sorry :slight_smile:

1 Like

Yes that’s via Crow, but playing with that device gave me a much better understanding of what was going on under the hood.

Geode mode on JF especially is an eye opener when I saw the maxforlive device. It’s basically a burst generator / clock divider (div) / multiplier (rep) per output, tied to a master clock, which you can quantise.



Also for documentation it would be really really helpful for fools like me if there was some way of knowing what type of settings W/ might be expecting for different parameters. For example, I assume lpg_time is in milliseconds, but is lpg_symmetry 0-5V? Because if you CV control it you have -5 to 5V control so I’m not 100% on how that translates. Especially because it seems like maybe crow can go negative where teletype can’t?

To be honest I will need to do some more rigid testing, but it looks like everything works over whole possible TT values range. Basically when you communicate through i2c you are sending bytes of data and how they are treated internally (as negative values, non negative etc.) depends on receiving device. What I was doing mostly was to select parameter setting on W/ so the led is showing it’s current value and then I was sending commands from teletype and observing how the light changed.

Sorry for slow responses and development going forward very slowly but I had really awful two past weeks and I am still somewhat trying to shake them off.


No rush or pressure at all, I haven’t encountered any real problems and have been thoroughly enjoying your work on this and am very appreciative. It looks like the crow github pages have the info about how w/ is interpreting the data from ii, but I wasnt sure if it was all exactly the same as teletype. Maybe I can do some more rigorous testing and compare against the crow documentation and try to write up some details on this myself, even (or especially) if its maybe only helpful for me and others coming at it without crow or a deeper understanding of ii.

More importantly, please take care of yourself, take the time you need, and please let me know if there’s anything I can do to help with this or otherwise :slight_smile:


Hello I sat down last night and tried to figure out how to use this
I updated the teletype to the link above
I also updated to w/Synth
Teletype is not acknowledging the new codes
Is there something I’m missing

Hi Duksos,

By Teletype is not acknowledging the new codes you mean that when trying to enter something like
W/S.NOTE N 12 V 3 teletype complains that operator is not recognized or that nothing happens?

Yes that’s exactly what’s happening

with respect, which one?


Hello no worries
Thanks for the help
Actually Both Teletype complains and nothing happened
But I will try that exact code when I get in front of My machine again tonight maybe I entered it wrong


Hi, could someone share the current TT op for each of these[.
So far i managed to get these to work :

W/S.CURVE curve = W/S.C
W/S.RAMP ramp = W/S.R
W/S.AR.MODE ar_mode = W/S.AR
W/S.PITCH voice pitch = W/S.PV
W/S.VEL voice velocity = W/S.PV

but don’t know the TT op name for the others.
Maybe I’m on the an old op firmware or something :slight_smile:
The one i am using was the one originally posted for w/ synth in an old thread.
I can’t find were that was posted with the list of OP’s used.

UPDATE : sorry i found those original OP’s here and will use those. PS imo - those short names are a lot better than the verboses one’s above

The naming is still up to discussion - I just decide to use the more verbose ones in the newer firmware (the one posted in the first post in this topic) so they are easier to decipher when still testing the firmware. Another approach would be to use the verbose ones but also introduce equivalent shorthand aliases.

1 Like

Ok no worries thanks for your help :slight_smile:

Hello I’m still lost on the teletype intergration and I’m real excited about it
I’ve tried the commands that were given to me in a previous post teletype is still saying it’s an unknow command
Is there something I’m overlooking ?
On the other hand I can get w/synth to work via abelton and crow and
That’s been awesome
I’m sorry to be a pain I know it’s probably something simple I’m not noticing
Maybe I’m not flashing firmware correctly I’ll try that
In the mean time