Only StandardFirmata works with M4L connection kit

Hi,

I’m new to the Arduino. I have a Neopixel WS2812b strip that works nicely with the Arduino, the Fastled DemoReel100 is AWESOME and I’m getting a grasp on how to program the strip myself.

But my plan is to input simple digital data from Ableton to the Arduino using the Max for Live Arduino connection kit, and use that data to trigger different ledstrip patterns. I’m hoping for either data in from Ableton to 5 or 6 digital pins so I can trigger an LED pattern when e.g. pin 11 receives a HIGH, or a connection in from one pin that could be values from 0-255 and I can script “if value is between 0-20 then do this, if between 20-40 do this” etc etc.

I have had some modest success: I can load the StandardFirmata on the Arduino, run the Ableton M4L Arduino connector and switch on and off a single Led connected to digital pin 13. By assigning pin 13 in output mode in the Ableton device to a macro I can make the led flash every time the kick drum of a dance track plays - which is cool. But only pin 13 works for this - sending to pin 12 & 13 crashes Ableton :frowning:

And it only works in all cases when StandardFirmata is loaded, and Standard Firmata is huge, eating lost of memory, and I don’t understand any of the code which would make it very difficult to incorporate my led commands. I’ve tried SimpleDigitalFirmata and that doesn’t work either.

All my attempts to write a custom sketch that will receive info from the Ableton Max Arduino device and trigger either the LED strip or just an Led stuck directly into a pin and ground have failed.
Example, modified from an “LED pushbutton” sketch, of the kind of thing I’m trying (but which doesn’t work):

#include <FastLED.h>    //tells it to use the FastLED library, always use this.
#define NUM_LEDS 150    // Creates variable NUM_LEDS to equal 150, always use this. 
#define DATA_PIN 6      // Which data pin, always use this.
   
CRGBArray<NUM_LEDS> leds;    //creates an array in memory of 150 leds called "leds",  always use this. 

// digital pin 2 has a pushbutton attached to it. Give it a name:
int abletonIN = 7;     //random, doesn't matter which
int stripOUT = 6;

// the setup routine runs once when you press reset:

void setup() {
 // set the led type 
 FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);   //Tell it the LED type i.e. NEOPIXEL
 // initialize serial communication at 9600 bits per second:
 Serial.begin(9600);
 // make the pushbutton's pin an input:
 pinMode(abletonIN, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
 // read the input pin:
 int buttonState = digitalRead(abletonIN);
 //int buttonState = 1;
if (buttonState = 1)
 {
 // action A
 fill_gradient_RGB(leds,0,CRGB(255,0,0),NUM_LEDS-1,CRGB(0,255,0) );   
 FastLED.show();
 delay(500);  
 }
else
 {
 // action B
 fill_solid(leds, NUM_LEDS, CRGB::Black); // Set all 150 to red.
 FastLED.show();       
     delay(500);
 }
}

I’m really hoping someone can point me towards a solution. I think I just need the essential bits of the serial comms that StandardFirmata enables so I can receive simple on/offs or values from Ableton.

Thanks!

Did you ever find a solution to this? I think I've had a similar issue.

I wish there was solution to this as well,
it'd be a great project to accomplish this.

some things i came across while searching was

  1. http://www.maxuino.org

  2. An Adventure in Hacking Arduino Firmata with NeoPixels - Big Nerd Ranch

actually, i did test it and worked fine !
so at least that might give a good ground to motify Firmata to include neopixel libraries...

  1. now im giving this implementation a shot... !
    little-scale: Neopixel 24 LED Ring as Ableton Live BPM Indicator

anyhoo,

anyone did this???

i actually did it !
no firmata needed , nor connection kit !

just use "serial" and feed it whatever data you need, and parse em on arduino

let me know if you need more details