sorry, not sure what your question is?

@scanner_darkly Sorry for being being unclear. Nvm the question.

I have set it up with ttmidi2 and it works! However, I experience some heavy jitter. Have you encountered that? Do you have a stable way of using it?

I route Cirklon into Bome Box (midi to usb host) into 16n into TELEXb into ER-301. Kind of heavy midi signal chain i guess. I wonder if this might cause the problem. I have no jitter with the faders on 16n

Here is a video where you can hear the timing jitter (pitch change on osc) - especially when i apply the vca which i trigger from the velocity signal, where you can also see the length of notes differ a lot (and it is also very low on its output.? :thinking:)

i would try and rule out MIDI to USB conversion first. are you able to test it with something else?

1 Like

Kind of made it behave in a different, but still in a faulty way, like midi data is not sortet correctly, or waiting in line for other data :thinking:

Also, i have to boost velocity x10 to make the gates usable, even with velocity at 100

Here is my config.h - havent touched other files. Changed adress to 0x31, min fader to 0 and 16n is master.

/*
 * 16n Faderbank Configuration
 * (c) 2017,2018 by Brian Crabtree, Sean Hellfritsch, Tom Armitage, and Brendon Cassidy
 * MIT License
 */

// restricts output to only channel 1 for development purposes
// #define DEV 1

// reverses faders left-to-right
#define REV 1

// flips faders up-down. You almost certainly want #REV enabled as well for this.
#define FLIP 1

// activates printing of debug messages
// #define DEBUG 1

// enables legacy compatibility with non-multiplexer boards
// #define V125

// turn on power LED
// #define LED 1

// MASTER MODE allows you to broadcast values from the 16n
// this supports up to 4 TXo modules and/or up to 4 Ansible devices and/or 1 ER-301
// uncomment this #define and compile the firmware
//
// NOTE: in MASTER MODE the 16n will not respond to the Teletype
//
#define MASTER 1

// uncomment to convert MIDI notes to I2C
// MASTER MODE must be enabled
// for Just Friends set POLYPHONY to 6
// #define JFMIDI
#define ER301MIDI
#define POLYPHONY 8

// minimum and maximum values for faders (to deal with tolerances)
#define MINFADER 0
#define MAXFADER 8135

// I2C Address for Faderbank. 0x34 unless you ABSOLUTELY know what
#define I2C_ADDRESS 0x31
const byte getMidiCCCommand = 0;
const byte sendMidiNoteOn = 1;
const byte sendMidiNoteOff = 2;
const int ccMode = 3; // should be last mode used by TxHelper + 1
const int noteOnMode = 1;
const int noteOffMode = 2;

#ifdef DEV

const int channelCount = 1;
const int ports[] = {A0};
const int usb_ccs[] = {32};
const int trs_ccs[] = {32};

#else

const int channelCount = 16;

#ifdef V125
// analog ports on the Teensy for the 1.25 board.
#ifdef REV
const int ports[] = {A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, A1, A0};
#else
const int ports[] = {A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15};
#endif

#endif

// set up CCs.
// if you wish to have different CCs for TRS and USB, specify them here.

const int usb_ccs[] = {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47};
const int trs_ccs[] = {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47};

// set up MIDI channels for each fader
// if you wish to have different channels for TRS and USB - or for each channel - specify them here.

const int usb_channels[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
const int trs_channels[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

#endif

what’s your chain here? circlon - bome box - …?

The last one is Ableton -> 16n (via usb) -> Txb -> ER-301

Also updated the post above

can you uncomment this line and try?

// #define DEV 1

this will limit number of channels on 16n to 1 only, so only the first fader will work. i wonder if this has something to do with how much data 16n itself is sending.

1 Like

when I’m doing that, it won’t compile and I get this message:

Arduino: 1.8.9 (Mac OS X), TD: 1.46-beta10, Board: "Teensy 3.2 / 3.1, MIDI, 120 MHz (overclock), Faster, US English"

_16n_faderbank_firmware: In function 'void doMidiWrite()':
_16n_faderbank_firmware:366: error: 'usb_channels' was not declared in this scope
   usbMIDI.sendControlChange(usb_ccs[q], shiftyTemp, usb_channels[q]);
                                                     ^
_16n_faderbank_firmware:367: error: 'trs_channels' was not declared in this scope
   MIDI.sendControlChange(trs_ccs[q], shiftyTemp, trs_channels[q]);
                                                  ^
'usb_channels' was not declared in this scope

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

Also - did you notice that I’ve changed adress to 0x31?

hmm i’ll have to take a look, will try to get to it this weekend

1 Like

Need to add a couple lines when using DEV to define trs_channels and usb_channels

(that’s a bug that I think is fixed in the most recent update - or not?)

Look for the usb_ccs section of config.h

const int usb_ccs[]= { 32 };
const int trs_ccs[]= { 32 };

then add

const int usb_channels[] = {1};
const int trs_channels[] = {1};
1 Like

Thanks to @okyeron’s tip it was possible for me try with #define DEV 1 and it’s much much tighter.

Still some notes are missing and some are hanging (on the velocity side at least) - like one out of 20 or so. No matter if it was a super fast arpeggiator or a slow sequence.

I also tried to reduce polyphony to 1 at the same time as dev 1, no change.

I’m boosting the velocity at 127 about 50-60x times, to make it behave in a proper 0-8v fashion.

Weirdly enough, after I turned off DEV1 and put polyphony back to 8, but still included @okyeron’s code, it’s now tighter, but have issues with length.

You can see the length jitter on this video. Cirklon -> Bome Box -> 16n -> Txb -> ER-301

what this tells me is that it’s likely due to some i2c messages being dropped, just due to the amount of i2c traffic (with this change it should only send 1 channel, so much less data to send).

here is another thing to try: if you only send to er-301, try commenting out these lines:

and:

if you’re not interested in velocity, also comment out this line: https://github.com/scanner-darkly/16n/blob/ttmidi2/firmware/_16n_faderbank_firmware/_16n_faderbank_firmware.ino#L511

other than this try to have all your i2c cables as short as possible. do you know if your 16n has pullups enabled? this might be another thing to look into.

do you mean in er-301 settings? it should already be 0x31 in 16n firmware.

(so - you should have a look at some of the changes in the master branch - https://github.com/16n-faderbank/16n/blob/master/firmware/_16n_faderbank_firmware/_16n_faderbank_firmware.ino - that haven’t been properly released yet, because I’d like some I2C users to test it. Anyhow, I’m moving to explicitly detecting I2C devices up-front, and only sending messages to devices discovered at bootup. This is because sending I2C messages to nowhere actually causes a crash in certain situations. It might help limit outbound traffic?)

1 Like

Just completed! I thought I was being smart when I ordered shorter standoffs for the bottom panel, but failed to check the required screw length. So now I have a wobbly faderbank.

2 Likes

Gosh, I am very excited to get my PCB and get building!

I finally took a moment to get this going and it works! I tried to find clues in the code, but I haven’t been able to do what I want to yet, which is map midi channels to different SC.TR ports. As of right now, a gate on any channel slows up on SC.TR port 17. Any tips to distribute, for example, channel 1 on port 17, channel 2 on port 18, etc?

Thanks

right now if i remember correctly, it allocates notes from all channels to the first available SC CV/TR pair starting with 17. to change it to fixed allocation of channels to CV/TR pairs you would need to change addNote function as follows:

void addNote(uint8_t channel, uint8_t note, uint8_t velocity)
{
  if (channel >= POLYPHONY) return;

  midiPitch[channel - 1] = note;
  midiVelocity[channel - 1] = velocity;
  midiState[channel - 1] = -1;
}

i think that should do it!

Thanks, I’ll try it out :slight_smile:

Hey all,
Just built my fader bank and am getting an issue. I have a picture and video of what is reading out on the browser midi tester:

Any help getting this running correctly would be greatly appreciated!