Analog Mixer with motorized Faders

Status
Not open for further replies.

Biffel

New member
Hi,

First of all: this is my first post!
I tried to accomplish my project just by reading through all the Teensy (& Arduino) Forums concerning Motor Fader DAW (Digital Audio Workstation - a PC running recording software, eg. Cubase) control, but after almost 8 month I finally decided to ask the community for help.

It all started with this project https://motorizedfader.wordpress.com/ - it made me think that I can easily extend the code/hardware to build my own multi channel DAW controller - and since I have a vintage, modular Chilton broadcast mixing desk at my studio, I though I might as well convert that into such a controller with the advantage that I can also use it for automation of analog mixes!

After a steep learning curve (this is my first hardware programming project...), I finally managed to to get the first 4 faders up and running with a Arduino MEGA, MIDI connection via rx/tx ports. However, the very unsmooth performance of the faders and bulkiness of the Arduino MEGA made me switch to Teensy.
So Instead of using the Arduino MEGA for all my 14 channels of faders, I now have two Teennsy 3.6. The idea is to have the first Teensy for Channels 1-8, connected to the DAW via USB and the second one for Channels 9-14, connected with MIDI via rx/tx ports.

As you can see in the video, the basic hardware control is working, but I am now facing problems with the MIDI connection.
Cody Hazelwood's code is using the Mackie HUI protocol for connection to the DAW. As I understand it, it receives "real" MIDI commands from the DAW (e.g. "pitchBend" for fader movement) but is sending back serial commands via the same ports for control of the DAW. This worked well with the rx/tx ports on the Arduino using the midi-library for receiving commands and sending back hex-codes, but I am now confused how this can be realised with Teensy's USB MIDI function.

e.g. receiving MIDI information:
Code:
 if (MIDI.read() && MIDI.getChannel() == faderChannel && MIDI.getType() == PitchBend ) {
 /* Bitwise math to take two 7 bit values for the PitchBend and convert to
 a single 14 bit value. Then converts it to value between 0 and 1023
 to control the fader. */

 int value = (((MIDI.getData2() << 7) + MIDI.getData1()) / 16);
 updateFader(value);
 }

e.g. sending back DAW control:
Code:
//Send MIDI Touch On Message
 Serial.write(0x90);
 Serial.write(0x67 + faderChannel);
 Serial.write(0x7f);

Does anybody have an idea if/how this can be realized with USB MIDI? Thx in advance!


Here are some pictures of the project, especially the necessary rework to fit in the new motorfaders with audio path (ALPS RSA0N12M9).
 

Attachments

  • IMG_2989.jpg
    IMG_2989.jpg
    178.4 KB · Views: 506
  • IMG_0032.jpg
    IMG_0032.jpg
    140.4 KB · Views: 344
  • IMG_0036.jpg
    IMG_0036.jpg
    98.3 KB · Views: 226
  • IMG_0033.jpg
    IMG_0033.jpg
    88.5 KB · Views: 172
I would recommend looking through the Teensy usbMIDI examples “TransmitEverything” and “InputFunctionsComplete” to learn most of the commands you’ll need to use for usbMIDI. The code example that Cody Hazelwood provides is actually for the Mackie MCU protocol, Mackie HUI is completely different but most mixing desks support both.
 
Hi vjmuzik,

Thanks for the info - I‘ll go through the examples. Does that mean it should be possible?

The protocol confusion makes perfect sense, I remember having set the DAW to MCU rather than HUI.
Do you know if ther is any advantage over the other when only using the fader automation?

Greets,

Christoph
 
The difference can be what DAWs you are wanting to use, some support both and some only support one or the other. MCU is in a sense better than HUI because it was mostly just an updated version of it with very few differences in hardware mainly just software. As far as fader automation there is no difference, they both use a 14 bit value for sending and receiving, but the actual resolution that the real Mackie Control is only 9 bits to account for noise. Your best bet is to just include code to handle both, the good thing is that MCU and HUI don’t share any midi commands so you can code it to handle both at the same time without the need for switching between protocols like the real Mackie Control does.
 
It’s completely possible, here’s a video of something similar in action. I didn’t make this whole thing from scratch, but what I did was I converted an Uptown 990 Automation System to run off a Teensy for usbMIDI straight from the DAW as opposed to having the automation all be handled by an outdated computer that doesn’t even have usb.



If you want to look through the code I did for this it’s here. It may be a little hard to follow it because the comments aren’t really complete and may not make sense, but it might help.
 
Hey vjmuzik,

That looks like a nice inline-console - what type is it?
Which protocol are you using in your code - HUI or MCU?

Greets
 
It is a Trident Vector 432 that originally had 40 channels of Uptown 990 Automation, but I got fed up with their old MS-DOS software that had to store all the automation data and could only be interfaced with timecode. So I reverse engineered the computer’s purpose onto the Teensy and made it work with MCU/HUI. I put support for both protocols so that I can easily switch between DAWs since some don’t have support for both protocols.
 
Status
Not open for further replies.
Back
Top