thanks for your answer.
I use exactly your firmware, but for some reason I get no reaction on teletype.
This is the Syntax:
M X FB 1

you are reading fader value, not MIDI CC. to read MIDI CC the op is FB.CC channel cc. you will need to update teletype firmware with the version posted above to get the op (make sure to backup your presets first). i assume M just denotes metro script, not part of actual script?

add this to setup():

usbMIDI.setHandleNoteOn(midiHandleNoteOn);
usbMIDI.setHandleNoteOff(midiHandleNoteOff);

and add these 2 functions:

void midiHandleNoteOn(uint8_t channel, uint8_t note, uint8_t velocity) {
    MIDI.sendNoteOn(note, velocity, channel);
}

void midiHandleNoteOff(uint8_t channel, uint8_t note, uint8_t velocity) {
    MIDI.sendNoteOff(note, velocity, channel);
}

getting the following error on compile:

Arduino: 1.8.5 (Mac OS X), TD: 1.45, Board: ā€œTeensy 3.2 / 3.1, MIDI, 120 MHz (overclock), Faster, US Englishā€

_16n_faderbank_firmware: In function ā€˜void setup()’:
_16n_faderbank_firmware:112: error: ā€˜midiHandleNoteOn’ was not declared in this scope
usbMIDI.setHandleNoteOn(midiHandleNoteOn);
^
_16n_faderbank_firmware:113: error: ā€˜midiHandleNoteOff’ was not declared in this scope
usbMIDI.setHandleNoteOff(midiHandleNoteOff);
^
_16n_faderbank_firmware:118: error: a function-definition is not allowed here before ā€˜{’ token
void midiHandleNoteOn(uint8_t channel, uint8_t note, uint8_t velocity) {
^
_16n_faderbank_firmware:122: error: a function-definition is not allowed here before ā€˜{’ token
void midiHandleNoteOff(uint8_t channel, uint8_t note, uint8_t velocity) {
^
ā€˜midiHandleNoteOn’ was not declared in this scope

This report would have more information with
ā€œShow verbose output during compilationā€
option enabled in File -> Preferences.

you probably put the 2 functions in setup(). they need to be outside, just put them at the very end of the file.

I’m feeling very dumb at the moment, but I cannot make it working.
The OPs are known, and the display shows TELETYPE 16N MIDI. (or is there another one??)

I run every 10ms a Metro Script with with :
X FB.CC 1 32

1 means the Midi Channel , 32 the first Fader, right?

btw. 16n USB midi is working, I checked it with my Mac
I change on the fly the Keyboard and the 16n on my teletype, could that be a problem?

so, you’re sending MIDI CCs on channel 1, CC number is 32? can you describe what you are trying to do?

Whoa I was not aware of this, thanks for the heads up!

1 Like

not sure if I get the question right, but my goal is controlling variable X of Teletype by Fader number 1 on my 16n :slight_smile:

i see. you can just do this with the official firmwares. the op is FADER x or FB x where x is the fader number.

FB.CC is an experimental op that allows you to read MIDI CC values sent to faderbank via USB MIDI.

you can use X FB 1 where X is your variable.

A FB 1 for example reads the value of fader 1 and assigns it to the variable A

yup! thanks :slight_smile:

away from my studio now, but i will test this evening and report back.

i’m noticing that some of the mks-50 parameters are expecting specific value ranges (ie. high-pass filter max = 3). where would i customize this?

No Luck
Even with the offical Teletype 3.0 (and also the latest beta) it does not work :frowning:
Is it Ok to switch between Keyboard and 16n on the fly? (16n is powered over USB from Teletype)

@Nordseele

This was my starting point.

you would need to scale value parameter buildSysExMessage function receives to the appropriate range. right now the function will receive value in the 0…127 range, if you want more precision replace sendSysEx(q, shiftyTemp); line with sendSysEx(q, notShiftyTemp);, this will provide value in the range of 0…16383.

do you have faderbank connected to teletype via i2c?

20 Characters of not yet

you need to connect faderbank to teletype via i2c in order to be able to use teletype faderbank ops, they will not work over USB connection.

Hey gang - here’s a development suggestion from muggins:

I think there’s too much going on in the interrupt - it really ought to do almost nothing - so I’ve changed some code around. But I’d appreciate review from the types in this thread who know about that sort of thing. So I’m sharing the PR I’ve got open as a result.

1 Like

i’ve added implementation for converting USB MIDI notes to JF and/or ER-301 I2C to my branch: https://github.com/scanner-darkly/16n/commits/ttmidi

to enable it uncomment #define JFMIDI or #define ER301MIDI, depending on what you want to use it with. this will only work with 16n being the leader, so make sure to select that too.

it’s a simple polyphonic implementation. you select the number of voices in config.h. it will take the first voice available, if all are taken it will steal from the earliest voice. for ER-301 it will use SC.CV/SC.TR starting with 17 for pitch/gate. velocity is sent to SC.CVs immediately after the pitch ones, the actual number will depend on the number of voices. it will respond to notes on any channel.

didn’t have the time to test it properly so there might be bugs. also, too many projects so won’t be able to develop this further other than fixing bugs, but hopefully this can be a good starting point for somebody to add other functionality (different voice allocation etc).

5 Likes

PR looks good to me. I reviewed the code (notes in GitHub) and tested it on my early 16n. Everything performed well and withstood some serious Teletype hammering. Thanks for all of the hard work on this, @infovore. :slight_smile:

3 Likes

Super excited about this MIDI mod! I don’t have a 16n yet, but to set my expectations properly, will this respond to note on events fast enough that I could use Teletype as my main MIDI module for keyboard playing? (right now I use Ansible) or is it limited to refreshing at the metro rate? I could use the gate out of my Microbrute to trigger a script perhaps, instead of waiting for the next metro, but I guess I’m wondering if note-on events could trigger scripts