Go Down

Topic: 24 motorized fader mixer with Arduino (Read 43801 times) previous topic - next topic


Jul 26, 2012, 01:49 am Last Edit: Jul 26, 2012, 01:51 am by RBBlackstone Reason: 1

The API was probably running Flying Faders from MartinSound.

There is a nice article here

Those faders were 10 bit.  I have used Flying Faders on the Neve and the equivalent on the SSL.  Both are high level consoles like the API.

Pro Tools uses 10 bit (1024 steps) today.  The Mackie HUI is usually quoted as 9-bit.  The spec i have been reading shows that it send a 7-bit MSB and 7-Bit LSB or 14 bits.  It would be hard to make use of that data on a regular fader, but the HUI does have a 'Fine' mode.

All this is probably just academic above 10 bits. (0.1dB steps)  Using MIDI controller data like CC 7 (Volume Control) is normally 7bit and you can definitely hear the stair stepped volume settings in a mixing application.

On some keyboards the mod wheel(CC1) or data entry slider(CC 6 ) may send MSB and LSB.  Mod wheel MSB is CC1 and LSB is CC33.  Pitch bend is almost always 14 bit centered at 8192.  You can use the full range if you take the mechanical spring off that snaps it back to center.  :-)

Your mastering engineer is right, in a pro audio setting, 10-bits is needed.  That said, plenty of useful things can be done at MIDI 7-bit.  I just wouldn't try to market it to the pro audio world at less than the current industry standard.

Keep us apprised of your progress!


From my MIDI notes:

MSB 1-21   0      0 Bank Select (MSB)  Never re-route anything to Controller 0
   1   1H   1 Modulation Wheel or Joystick (positive polarity) (MSB)
   2   2H   2 Breath controller sometimes Joystick (negative polarity) (MSB)
   3   3H   3 Early DX7 Aftertouch 0-127
   4   4H   4 Foot Pedal (MSB)  Don't mess with it
   5   5H   5 Portamento Time (MSB)  Only use this for portamento time
   6   6H   6 Data Entry (MSB)  Better leave this one alone too.
   7   7H   7 Volume (MSB)  Software Mixer warning
   8   8H   8 Balance (MSB)  Some synths use it
   9   9H   ???
   10   AH   10 Pan position (MSB)   Software Mixer warning
   11   BH   11 Expression (MSB)
   12   CH   12 Effect Control 1 (MSB)
   13   DH   13 Effect Control 2 (MSB)
   14   EH   14 Undefined
   15   FH   15 Undefined
   16   10H   16 Ribbon Controller or General Purpose Slider 1
   17   11H   17 Knob 1 or General Purpose Slider 2
   18   12H   18 General Purpose Slider 3
   19   13H   19 Knob 2 General Purpose Slider 4
   20   14H   20 Knob 3 or Undefined
   21   15H   21 Knob 4 or Undefined
22-31 are undefined         
LSBs may or may not be implemented. Have never seen 46-63 used as LSB         
   33   21H   33 Modulation Wheel (LSB)
   34   22H   34 Breath controller (LSB)
   35   23H   LSB for 3
   36   24H   36 Foot Pedal (LSB)
   37   25H   37 Portamento Time (LSB)
   38   26H   38 Data Entry (LSB)
   39   27H   39 Volume (LSB)
   40   28H   40 Balance (LSB)
   41   29H   LSB for 9
   42   2AH   42 Pan position (LSB)
   43   2BH   43 Expression (LSB)
   44   2CH   44 Effect Control 1 (LSB) Roland Portamento on and rate
   45   2DH   45 Effect Control 2 (LSB)
   46   2EH   LSB for 14
   47   2FH   LSB for 15
   48   30H   LSB for 16
   49   31H   LSB for 17
   50   32H   LSB for 18
   51   33H   LSB for 19
   52   34H   LSB for 20
   53   35H   LSB for 21
   54   36H   LSB for 22
   55   37H   LSB for 23
   56   38H   LSB for 24
   57   39H   LSB for 25
   58   3AH   LSB for 26
   59   3BH   LSB for 27
   60   3CH   LSB for 28
   61   3DH   LSB for 29
   62   3EH   LSB for 30
   63   3FH   LSB for 31


You may want to emulate the HUI protocol.  That would make you instantly compatible with most DAWs.  It has been reverse engineered in several places on the web.

Ok, enough for now...


Most of that info we had got there( check previous posts) and these models were sold as spares ( that been all confirmed).
Now theres likkle bits of info you brought might be useful, but he will only be implementing it in this unit... So even the fact that many synths wouldnt be compatible wont become a problem at all, it seems !
Thanks for your input !!
10 LET Loop=Infinite
20 GO TO 10


Sorry about the delay. I've been on vacation  8) .

RBBlackstone, welcome and thanks a lot for sharing your research.

I'm still a little stuck with hardware until I get some parts from US (touch sensors)

I will get on this project more often from now on, so you'll get some news from me soon..

Has anyone else started their own motorized fader project based on this topic?


My Arduino Board burned out because of an electric storm over Buenos Aires... such bad luck

So I can't test anything new until I get a new one :(


Well, I'm back! and with lots of good news.
After burning the motor fader that I was using (still dont know how it happened), sent it to TKD Japan to repair (is a really old model), got it back and started all over again.

The new setup is divided in 3 modules of 8 motorized faders each.
Each module will have an Arduino MEGA witch will recieve all 8 analog signals from each linear analog output from faders, and will output 2 PWM signals to control each servo.
I'm using H-Bridges to control the servos and I'm planning to use tlc5940 to be able to output the 16 PWM signals I need (2 for each servo, this part is the only one I still need to test)
I would also need 16 digital inputs of the arduino mega for the capacitive sensors.

Each Arduino will be loaded with HIDUINO firmware (https://github.com/ddiakopoulos/hiduino) witch enables to see each board as an HID midi device.
Now, all faders will output Pitch Wheel messages (14-bits) in different channels (from 1 to 8) and I will set up the modules in ProTools as 3 different control surfaces, recieving and sending MIDI to each Arduino Board with MackieControl protocol, witch is already desgined to assign automatically each Pitch Wheel message to channels fader control (no midi mapping needed and 14 bit resolution, that will be reduced to 1024 step resolution because thats the maximum resolution for analog inputs on the MEGA)

I don't have much time now to explain it better, but already tested most of the parts of this setup and seems to work ok! The software and communication part is working entirely, still need to resolve the design of the Shield for each MEGA, and test the TLC.

We are close to have a full working Arduino based 24 motorized fader professional mixer! I'm so excited to finish it and see how it's used by the community!


I attached the actual protoboard setup, without the TLC


Mackie control it was, then... Midi, while viable, wouldnt have been as practical, i guess ! Nice one, and do keep us updated !
10 LET Loop=Infinite
20 GO TO 10


I'm thinking that you want to control these while the music is going through them.
I would create an AC signal, much higher than the audio range, say 100-300khz or more and capacitively always mix that in with the audio.
The audio signal from each fader then gets split.  The high frequency AC signal gets filtered out, full wave rectified and capacitively filtered to provide a DC signal of "where" each fader is.   The faders are non-linear, since they have audio taper, but interestingly that doesn't matter for this app.  Your Arduino simply reads and samples these 24 DC voltages and stores them for re-use.

100kHz is too close to the ADC input bandwidth of professional audio equipment, usually 96, 192 or even 384kSPS.
Surely all the mixing is done in software anyway, the faders just generate a DC signal?  Suppose it depends on the
antiquity of the hardware!

Anyway are there links to the datasheets for some of this hardware?
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


Mackie control it was, then... Midi, while viable, wouldnt have been as practical, i guess ! Nice one, and do keep us updated !

It still regular MIDI! What the Mackie Protocol does is to automatically connect some specific MIDI data to some specific DAW software controls.
I did some reverse engineering and connected a SAC 2.2 (midi controller for DAWs that works with some different protocols including Mackie Control). Then assigned this control surface into live as a Mackie Control surface and monitored MIDI activity. I found out this way that Mackie Control protocol reads Pitch Wheel midi messages from channel #1 to #8 and automatically uses this messages to control faders from track 1 to track 8 of the software (in this case, Ableton Live).
So, what you need to do to control track faders using Mackie Control protocol is to format each fader to send Pitch Wheel messages in different channels (from 1 to 8). Channel #9 is Master volume control.

This is the way to control 8 faders using Mackie Control protocol, but I needed to control 24 tracks.
Unfortunately, this protocol works with an 8 track + master limit, but there is a way to get through this.
In the same SAC 2.2 Controller, I have some track bank navigator, witch allows the user to navigate through tracks and use them to control tracks from 9 to 16, for example. When I monitored this function, I saw that the Pitch Wheel messages from the fader never changed (still Pitch Wheel messages from channel #1 to #8), and the only difference, is that I've pushed this track bank navigation button. I monitored the midi message of this button and I've got a midi Note #47 on.
So what I realized is that if I send this note on message, I get automatic bank change and control the next 8 channels.
Then, I configured in Ableton 3 different Mackie Control surfaces, recieving MIDI from 3 different ports.
The first Mackie Control surface (faders 1 to 8) will recieve and send MIDI to Ardunio #1 port
The second Mackie Control surface (faders 9 to 16) will recieve and send MIDI to Arduino #2 port, and it will automatically send one Note on #47 message as soon as it gets connected, to do the bank navigation and control channel volumes from 9 to 16.
The third Mackie Control surface (faders from 17 to 24) will recieve and send MIDI to Arduino #3 port, and it will automatically send two Note on #47 messages as soon as it gets connected, to do the bank navigation and control channel volumes from 17 to 24.

I tried this with a virtual controller I made in Isadora and it worked perfectly! I can simultaneously control 24 different track volumes in ableton live, getting this midi data from 3 different ports through Mackie Control protocol.

Hope my explanation is understandable! Please let me know any dobut about it.


Hi guys!

I am working with Mytx in this project, and because of speed needs we decided to move to the Arduino Due platform.

We checked and there seems to be libraries for both the capacitive sensing and the tlc5940.

We finally got our ands on a Due and started trying the capacitive sensing, but we can't seem to make it work at all.
It gives us "-1" no matter what.

Tried different timeout values and different pins, but nothing changes...

Anyone knows anything about it?

Any help appreciated!


#include <CapacitiveSensorDue.h>

 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger
 * resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this
 * pin.

CapacitiveSensorDue cs_4_2 = CapacitiveSensorDue(44,45);   // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired

void setup()               

void loop()               
   long total1 = cs_4_2.read(50);

//   Serial.print(millis() - start);   // check on performance in milliseconds
//   Serial.print("\t");            // tab character for debug windown spacing

   Serial.println(total1);         // print sensor output 1

Go Up