Go Down

Topic: multiplexing and max/msp ? a survey (Read 4 times) previous topic - next topic


Sep 07, 2007, 08:17 pm Last Edit: Sep 07, 2007, 08:17 pm by boligrafoe Reason: 1
Hello all.

I am currently working on a simple interface for controlling software through max/msp. Im hoping to have a nice box to work in conjunction with my DIY monome (monome.org). My question is about multiplexing? I'd like to have a box with as many as 24 potentiometers and I have read the document in the playground on multiplexing using the 4051 chip. Looks great but I'm a bit of an electronics/programming newb (which is why arduino was so alluring) I was wondering if anyone had some input as to the difficulty of modifying the great arduino2max patch (http://www.arduino.cc/playground/Interfacing/MaxMSP) to read all the pins once I have the arduino sufficiently setup.

I would assume that would mean adjusting the arduino sketch significantly and I'm just a little nervous about that. Thanks for any help in advance.


Sep 07, 2007, 10:04 pm Last Edit: Sep 08, 2007, 12:24 am by Daniel Reason: 1

I wrote that patch, for my students in an interactive art class to use. It's derived from the excellent prior work of Thomas Ouellet Fredericks' SimpleMessageSystem.

All it does is:

- send an "r" to the Arduino
- The Arudino receives the "r" and executes a loop, reading all the pins and sending it back to Max.
- max receives the pin data and splits it up and sends it to "send" objects that make it available anywhere in MAX.

So as you can see, it would be really easy to modify it. All you would do is replace the loop reading the pins with something else, and process that in MAX. The possible speed would be reduced 33%,  as you are talking about 24 pins, rather than 18.

If you want to try it, just replace the code that reads the pins with code to read the 4051, and modify MAX to do the rest :)  See the template code below.

What do you have in mind exactly? We might be able to collaborate on it.

BTW, Arduino2MAX is implicitly released copyleft, so make sure any improvements you make give credit and keep it open and free for others to use! this means you can't wrap a "non-commercial" license around it, or at least you are asked not to, and that you are implicitly also asked to release your code and files. That way we can continue to have cool developments like the one you are proposing.



Code: [Select]
*  Arduino2Max
*  Send pin values from Arduino to MAX/MSP
*  Arduino2Max.pde
*  ------------  
*  Latest update: September 2007
*  ------------
*  Copyleft: use as you like
*  by djmatic
*  Based on a sketch and patch by Thomas Ouellet Fredericks  tof.danslchamp.org

int x = 0;                              // a place to hold pin values
int ledpin = 13;

void setup()
 Serial.begin(115200);               // 115200 is the default Arduino Bluetooth speed
 digitalWrite(13,HIGH);              ///startup blink

void loop()

if (Serial.available() > 0){         // Check serial buffer for characters
   if (Serial.read() == 'r') {       // If an 'r' is received then read the pins
   // your code goes here. This is where you would prep the data
   // by reading it with the 4051 etc.  
   sendValue (x);                    // this is the statement to send data to Max
   Serial.println();                 // Send a carriage returnt to mark end of pin data.
   delay (5);                        // add a delay to prevent crashing/overloading of the serial port


void sendValue (int x){              // function to send the pin value followed by a "space".
Serial.print(32, BYTE);


rad thanks for your help? collaboration would be much appreciated. And no worries on the keeping it open tip, anything im doing im eager to share and im not working on a product of any kind, just an interface for personal use.

with reference to the speed issue does that just relate to adjusting more than one of the pots at a time? ill throw up a sketch of what im thinking of in the next couple of days. but to describe it for you what im thinking is a simple matrix of 24 pots (originally i was gonna do 64 but realized it was overkill) and a smaller matrix of buttons which would change the midi channel that all pots would control. I was planning on doing all of that in MAX. The reason for the switches would be so that i could have all the pots control different effects in abelton live midi channel 1 --> effect one 2 --> effect two etc.

The thing i really need help with i think is modifying your excellent software (which works perfectly for me right now), and maybe someone looking over my should with the electronics just a tiny bit.


sounds good... what do you have so far?



well right now? nothing. but since you think its feasible im gonna request some samples of this 4051


and buy myself some pots i'm thinking of using a salvaged telephone keypad for the remaining digital ins.

as far as software goes I haven't even begun!

Go Up