the most prominent style is to use dot notation, so would be W.T, W.D, W.S, but tt language has so many ops and styles now slash can also be used if it’s easier to remember.

1 Like

A slash would look like an operator to me and the dot notation looks like a namespace… but it isn’t my language :slight_smile:

3 Likes

How about just dropping the ‘/’, WT, WD, WS?

I’d prefer that but it may upset the current WS op?

How about WP for Polysynth?

1 Like

It’s alive (somewhat :P)


and quick check of w/synth controlled by teletype:

I have implemented most of the commands of w/ synth mode:

W/S.P voice pitch
W/S.V voice velocity
W/S.PV voice pitch velocity
W/S.PN pitch velocity
W/S.AR ar_mode
W/S.LT lpg_time
W/S.LS lpg_symmetry
W/S.C curve
W/S.R ramp
W/S.FI fm_index
W/S.FR fm_numerator fm_denomenator
W/S.FE fm_envelope_amt

Naming is just temporary and is mostly short hand of names in this file: https://github.com/monome/crow/blob/2348ecb01ff8603e3fb483a1235ba305d77337b0/lua/ii/wsyn.lua

Code is here for those interested (albeit it is 2AM here so there will be bugs probably): https://github.com/kfirmanty/teletype/tree/w/-2.0

And firmware hex file for those who are brave/impatient (but please backup everything on teletype before doing upgrade as I can’t promise that I haven’t break anything in the process of adding operators):
teletype.hex (623.0 KB)

19 Likes

That’s some quick work! :slight_smile:
Slashes def look odd to me as an op… :stuck_out_tongue:

Can you speak to two or more with this implementation or is that depending on the W/ firmware?

1 Like

Fantastic work! Bravo!!!

1 Like

Again - this was my first experience with coding anything for i2c or teletype (so I could be making things up), but currently in what I have built every W/ synth mode op is sent to one hard coded address 0x76. So if you would have multiple W/ connected and every one of them in synth mode they would all recieve the messages. Every mode in W/ can recieve data in two address so you probably could communicate with another one using generic i2c teletype ops mentioned at the first post in this topic, or there could be something hacked together into W/S ops but all solutions that come to my mind at the moment would have some disadvantage:

  • W/S could have additional operator W/S.DEV which could accept either 0 or 1 so you could for example in first script set at top W/S.DEV 0 and send data to first device and in second script W/S.DEV 1 and it would then send data to second device (simillarly how you can change working patterns) but I would need to read more about how scripts are executed in teletype to make sure this wouldn’t break when using DEL etc.

  • teletype could keep track of polyphony on each connected W/ in synth mode and try to distribute voices when using .PV command such as if first W/ has polyphony of 4 voices and second W/ 2 voices W/S.PV 0 N 12 V 3 - would send command to the first voice of first connected W/ and W/S.PV 4 N 12 V 3 - would send command to the first voice of second connected W/. But this could very easily start to break with W/S.PN operator which doesn’t specify the voice and any take on algorithm to this on teletype could clash with the one on W/ and of course this still wouldn’t allow to send specific parameter changes to W/ of user chosing.

In the livestream Trent mentioned that any w/ on i2c would receive messages depending on its mode. So you could send messages to a w/ in synth mode and messages to a w/ in delay mode at the same time, but if they were both in synth mode they would only be able to receive one set of messages. At least this is how I understood it…

This would make sense.
I’m just thinking of 8 voice synths in 4HP or maybe offset delays. I haven’t had chance to play yet to discover.

EDIT: Updated with tape ops
My kid is sleeping today during the day (which is not so frequent) so I did another take on i2c integration - delay and tape params (taken from this file: https://github.com/monome/crow/blob/2348ecb01ff8603e3fb483a1235ba305d77337b0/lua/ii/wdel.lua and this: https://github.com/monome/crow/blob/2348ecb01ff8603e3fb483a1235ba305d77337b0/lua/ii/wtape.lua):

W/D.FBK
W/D.MX
W/D.LPF
W/D.FZ
W/D.T
W/D.L 
W/D.P
W/D.C
W/D.FR
W/D.R
W/D.F
W/D.CLK
W/D.CR
W/D.PL
W/D.MR
W/D.MA

W/T.R 
W/T.P 
W/T.REV
W/T.S
W/T.F
W/T.PL
W/T.ML
W/T.RL
W/T.HO
W/T.LST
W/T.LE
W/T.LA
W/T.LS
W/T.LN
W/T.T
W/T.SK

As is with synth names - they are temporary and you can only set values - no way of retrieving params from W/ for now - sorry.
And for the brave souls here is the firmware file:
teletype.hex (631.1 KB)
If you will notice any bugs (and there will probably be a lot of them) please let me know, hopefully I will have some time next weekend to fix them.

5 Likes

i’ve added your beta to the list in the OP - when you post a new version can you update it so that it’s easy for people to find the latest version? (and also to avoid confusion as we have several active beta versions right now).

1 Like

Sure, no problem. I also don’t want to derail this thread as it is hard for me to predict when things will be finished etc. so I can always move it to separate topic if it will help reducing noise in the thread a little.

1 Like

Is it possible to include some way to select between two w/ ? It would be nice to have teletype send synth ops to one w/ in my case, and delay ops to another. Like how two ansibles can be on the same bus and app specific ops don’t interfere with the other…Or is this the case already? App specific opps wont crash two w/ running separate apps?

if W/ are in separate modes it should work already - each W/ mode has separate i2c address so you should be able to control one tape, one synth and one delay at once

1 Like

One thing worth mentioning is in tape mode @Galapagoose mentioned in the video, is the timestamp command in Crow. Placing cues is done in absolute seconds. So for a tape which is hours long, it would be huge numbers, which wouldn’t be compatible with Teletype. W/ is also expecting 32 bit numbers and Teletype apparently uses 16 bit ones. So not sure cues can be added via Teletype, only by Crow.

@mlogger: So setting it from teletype should be fine. I have made in beta firmware for timestamp operator W/T.T to accept one argument (seconds) and set subseconds as zero. But I will fix it so it will accept two args: seconds and subseconds. But as Galapagoose mentioned retrieving that data will require some consideration.
I have created separate topic for W/ 2.0 integration to not interfere with other work underway already (MIDI integration etc.): Teletype and W/ 2.0 integration

4 Likes

Scale & Chord Quantizer Beta Firmware
Add QT.S and QT.SC OPs for quantizing semitones to a given scale, or to a given chord in a scale. Reference the N.S OP for scale selections.

QT.S input root scale
Input semitones, returns nearest semitone from within given scale.

QT.SC input root scale degrees voices
Input semitones, returns nearest semitone from within given scale degree. voices from 1 to 7 sets how many notes in the chord: 2 is a third, 3 is a triad, 4 is a seventh, etc. degree is indexed from 0.

(EDIT: removed old build, see below for latest experimental f/w)

WIP: VN X OP for volts-to-note, equivalent to / X N 1 but saves 3 characters :laughing:

7 Likes

This makes me wonder about the possibility of user-defined scales (in binary, with the LSB as the root note).

For instance, QT.DEF 9 161 sets scale 9 to the mask 0000 1010 0001, which would be the root + 4th + 5th.