Teletype MIDI IN ops

should work in theory but i can’t confirm since i don’t have either - perhaps somebody tried it and can confirm it works?

Hi @scanner_darkly i wanted to ask you, is there a midi op that scales the value of the controller?
Say i have a midi fader sending cc 1 with values from 0 to 127, and i would like to scale that so i can use the fader to control the number of steps of pattern 1 on the teletype to 8 steps
Param.scale 1 8 ??
scratching my head over this…

there are the midi in op variants that scale 0..127 range to 0..16384 range for you - these are useful when using CC to control a CV output as it’ll give you a 0..10V range.

for your case you can just use SCALE op like this: SCALE 0 127 1 8 MI.LCC

Hi @scanner_darkly thanks for pointing that out, i had completely missed that op !
Thinking about using a faderfox uc4 for messing around with the patterns…
Thanks for the heads up :slight_smile:

1 Like

Anybody having issues getting an OP-1 to work with the latest firmware? Saw some people have used it in the past but not having any luck, thinking it might be the audio over usb messing things up.

Continuing > teletype: grid # code exchange - #417 by chapelierfou

I want Pattern 0 to grab the notes of a chord and set its length to the number of notes in the chord.

MI.$ 1 1 // notes on trigger script 1
PN 0

IF GT LAST 1 400: $ 2 // trigger script 2 only on new chords

L 1 MI.NL: P - 1 MI.N // I don't fully grasp it but seems to write notes to pattern
P.L I // sets the length of the pattern

It works…most of the time.
I get missed notes quite often.
Any idea why ?

You fundamentally have no guarantee that all of the notes in a chord will show up in the Teletype MIDI buffer at the same time.

The problem is that there is no such thing as a chord in MIDI. There are only individual note events. The notes come separately over the wire one after another. The timer that tells Teletype to update the MIDI buffer can trigger in between two notes, and you will end up having some notes appear on one iteration of the MI.$ script and other notes appear on the following iteration. This will seem like you are missing notes. (I’m guessing that you hear only the notes that show up in the second iteration.)

For freely playing chords there really isn’t any way to solve this without somehow synchronizing your fingers with Teletype’s internal clock.

Now, If the chords are generated programmatically (by something like a norna script) you could have Teletype accumulate notes over a number of iterations of MI.$, and then send a trigger to Teletype telling it that the chord is complete, whereupon Teletype would play the chord and clear the pattern so that it can receive the next one. But even with this approach you would still be vulnerable to notes ending up in the wrong chord if one followed the other too quickly.

1 Like

that’s too bad, I might give up with my idea then…
But, as I write this, another idea is coming. Maybe I can tag each note with the TIME value, and check if they came close enough ?
In the end I just want to capture groups of notes that were played close.
The main goal is to make a real-time pitch quantizer where you input the scale with a midi keyboard. I do this in Max/MSP and it’s so fun.

1 Like

Sure, you can have a rough idea of whether or not it’s been a while since you played a note and use that as a trigger to go back and forth between modes where you either add new notes to the existing scale or clear the scale and start a new one.

The point is only that there will always be some rough edges when note events come very close to the boundary of what you have defined as “it’s been a while.”

If you want to use a keyboard to input sets of notes for a quantizer, you might be better off if you track note-off events instead of trying to use time to decide whether or not notes make up a scale. So, if all notes are off you are ready to accept a new scale. Then as soon as you see the first note-on event you start adding notes to the scale and keep on doing so as long as at least one note is still on. When all notes are off again the scale is complete, and you are ready to accept a new scale again.

This will give you good control over the quantizer. The rough edges will appear only in the timing between completing one scale and starting the next. Your hands will have to lift off of the keyboard for 30ms or so between scales, which shouldn’t be a problem.

Well. In fact this matters more than you think (to me at least). It’s way harder to ‘feel’ it when improvising and changing chords quite often as a crucial part of the performance.

Yes, you won’t be able to lean on a chord and then immediately change to a new one. You would have to play each chord as more of a jab. (More like vamping on a jazz piano to switch scales than holding a chord on a church organ.)

But one way or another, you need a clear signal that tells Teletype that the scale is complete. Doing it with timing is hard. Doing it with note events is much easier, but you have to ensure that Teletype will have an opportunity to see the state where all notes are off. Since Teletype collects MIDI events in 25ms batches, there has to be a pause of at least that length between the last note-off event of one scale and the first note-on event of the new scale to ensure that they don’t show up in the MIDI buffer at the same time.


@3-foot-1 is correct in that the reason for dropped notes is likely because it’s a collection of individual note events, and as you are playing them, the MIDI processing timer might kick in while you’re still playing, and you end up with script 1 getting called multiple times.

for what you’re trying to do there are 3 options i can think of:

  • use longer pause to differentiate between chords (instead of 400ms try a couple of seconds maybe?)
  • track the count of notes currently being played - this will require tracking both Note On and Note Off events. if a Note On is received, increment the counter, for Note Off decrement it. clear the pattern when a Note Off is received and the counter is zero
  • use another script to tell teletype to start recording a chord

since you might have multiple events in the buffer, this loop allows you to read them all. but the 2nd part doesn’t look correct, you’re using the note number as the pattern index. you probably want something like L 1 MI.NL: P O MI.N

1 Like

I’d like to test the Torso T-1 with the MIDI in ops. I’ve got the Teletype with the newer black PCB, and an Intellijel 7u performance case with +5V rail with 1500mA. None of the 5V is being used by any other modules yet. Can the Teletype provide up to 500mA directly from the rail?

The Torso T-1 manual says this about power:

T-1 requires a minimum of 390mA with 100%
brightness but will operate from 200mA upwards. The T-1 Default
brightness setting is 75% which is adjustable. A 500mA minimum power
source is recommended.
1 Like

The idea that my T1 could possibly control JF polyphonically via Teletype is mighty intriguing. Will be interested to hear if it works!

Well, I gave it a test and it works! The device detection seems to take a few seconds. As soon as you plug it in, all pads light up for a moment and then it looks normal, but the buttons/knobs won’t respond for 3-5 seconds. So to be safe, I wait about 5-7 seconds and it seems to operate fine. The auto-save recalls properly, etc.

I tested with note on events to Just Friends and it works great with polyphony in synth mode. Midi Channel routing works well too but the MI.NCH op seems to return 0-15 instead of 1-16.


Oh wow - this is excellent news. I guess I’ll be in the market for a Teletype. lol

FWIW, the startup delay I mentioned seems to be something with the Torso alone. When I plugged it back into my mac it had the same delay. I made some config changes to the Torso and it starts up faster.

teletypes with the newer black PCB are capable of supporting grid directly connected to USB, and grid is rated for 500mA so i would say it should be okay as long as you have at least 500mA available on your +5V rail (which you do).

ah, that looks like a bug, i’ll take a look.


Ah of course, the grid! Huge thanks to you for developing this feature. It’s awesome!


Is MIDI IN communication to Teletype only possible through the USB input at the moment?
I assume a cheap MIDI to USB converter would work it just seems a bit bodged.

Any potential for MIDI IN → I2C for Teletype? I know there’s I2C → MIDI Out breakouts.

I’ve got a custom keybed/Doepfer MKE midi controller im planning to integrate with a future Teletype.
Also have a Grid/Ansible within the same system which may do the same job, but keyboard integration would be fantastic.

The main idea is to create a Teleype sequencer with note/gate inputs from the MIDI keyboard

1 Like