DIY external midi controller for the CQ

Even if I can manage controlling the CQ on stage with CQ mixPad, I love to have physical fader for some reverb and delay that I need to adjust by song.

Here is a simple setup to achieve what I need, using a DIY midi board kit, a USB hub, an Ipad with Stage Traxx 3 and midimittr IOS app.

The midi board is an OpenDeck from shantea Conrol, that handle NRPN.

It is plugged into a USB hub with the Ipad and the CQ.

NRPN midi from the DIY controller is routed to the CQ via midimittr IOS app.

All is very stable even if I also run loopy Pro in parallel for external FX (delay with ducking).

All I need now is to build a custom controller with the controls I need.

1 Like

There also a solution without the custom DIY OpenDeck board.

You can use instead an Arduino Leonardo, cheaper.

Here is the sketch for a 6 pots controller for ip1 (8192), ip2 (8193), USB (8220), FX1 (8252), FX2 (8253) and BT (8222) fader level control.

It work the same with the USB HUB hooked to the IPAD running midimittr.

Ask here questions for more explanation on the code and how to set it up for your need.

#include <USB-MIDI.h> // Inclure la bibliothèque de transport USB MIDI

// Initialisez l’objet MIDI pour le transport USB natif
USBMIDI_CREATE_DEFAULT_INSTANCE(); // Crée une instance nommée “MIDI”

// — Configuration des Potentiomètres —
const byte numPots = 6;
const byte potPins[numPots] = {A0, A1, A2, A3, A7, A8};

// Valeurs pour le filtrage et la détection de changement
int currentPotValue[numPots] = {0, 0, 0, 0, 0, 0};
int lastPotValue[numPots] = {0, 0, 0, 0, 0, 0};
const int tolerance = 2; // Tolérance pour éviter d’envoyer trop de messages dus au bruit (jitter)

// Numéros de paramètres NRPN personnalisés (ajustez selon votre besoin)
const unsigned int nrpnParameters[numPots] = {8193, 8253, 8192, 8220, 8252, 8222};

// Le canal MIDI Ă  utiliser
const byte midiChannel = 1;

void setup() {
// Pas besoin de spécifier de baud rate pour le MIDI USB natif
MIDI.begin(midiChannel);
// Optionnel: Serial.begin(9600); pour le moniteur série de débogage si nécessaire.
}

void loop() {
// Boucle à travers tous les potentiomètres
for (byte i = 0; i < numPots; i++) {
currentPotValue[i] = analogRead(potPins[i]);

if (abs(currentPotValue[i] - lastPotValue[i]) > tolerance) {
  unsigned int mappedValue = map(currentPotValue[i], 0, 1023, 0, 16383);

  sendNRPNValue(midiChannel, nrpnParameters[i], mappedValue);

  lastPotValue[i] = currentPotValue[i];
}

}

delay(10);
// Important pour le MIDI USB: appeler MIDI.read() pour permettre le traitement des messages
// et assurer que les messages sortants sont effectivement envoyés
MIDI.read();
}

// Fonction utilitaire pour envoyer un message NRPN complet
void sendNRPNValue(byte channel, unsigned int parameterNumber, unsigned int value) {
MIDI.beginNrpn(parameterNumber, channel);
MIDI.sendNrpnValue(value, channel);
// Pour le MIDIUSB, il faut parfois “flusher” le buffer pour s’assurer que le message parte immédiatement
// La bibliothèque USB-MIDI le gère souvent automatiquement, mais si vous rencontrez des retards, essayez:
// MidiUSB.flush();
}

1 Like

Both are nice and creative solutions! What role does midimittr have?

midimittr in the IPAD is acting as a midi hub, redirecting NRPN message from the device to the CQ.

I miss physical faders/knobs on my CQ18t. Interesting solution, but seems to complex for me, esp. with all extra HW and cables etc …

Like the small footprint of the CQ18t, and getting used not having the physical controls. I also own a QU24, but only use it when I need > 16 inputs

I don’t really get the idea of buying a digital mixer designed for glass control, and then doing all this work to add mechanical controls. Isn’t that excatly what the SQ and QU series are for?

This idea came to me once as solo performer I had to throw delay on specific song.

No easy with glass fader.

And because I already have the ipad beside my mic stand running ST3, I didn’t want to add the CQ or another tablet.

Here is the device I ended up with.

2 Likes

Small update for the 3 Fader/3Pots NRPN controller for the CQ (the orange one above).

I created a web midi interface for easy programming of the NRPN value.

No need to use Arduino IDE to change them.