You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi!
I'm creating MIDI controller based on Arduino Mega. I have a couple of encoders and potentiometers. Now, I already can use it with DAWs (particularly, Ableton Live) to control any elements that support control via MIDI, including any plugins (e.g. Portal or Thermal).
The only last thing I need is to read the actual value of this plugin or raw Ablton elements and print it on a small LCD screen. I have no issues with working with the screen. I just need to retrieve the correct values from those elements. Cause, for example, my encoder just sends +1 or -1 to MIDI channel and I don't know the actual value of what I'm changing in Ableton.
So my question - Is there any way to read such values via MIDI output or other protocols?
The one approach I have in my thoughts -
Is to create Arduino internal counter with the same limit range as Ableton elements have (e.g. from 0 to 127).
Do not allow that counter to go out of this limit range.
Increment and decrement this counter when sending the signal to MIDI.
And when I increment/decrement the encoder to one side more times than limit range length - I can guarantee that both, Ableton element and my internal counter would have the same value (e.g. 0 or 127).
But this approach has lots of inconveniences, so I'm looking for a way to know the exact value from Ableton.
Thanks in advance to everyone willing to help!
Attaching my Arduino code below.
`
#include <Control_Surface.h> // Include the Control Surface library
#include <LiquidCrystal_I2C.h>
// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
CCRotaryEncoder enc1 {
{22, 23}, // pins
{MIDI_CC::Dry_Wet, CHANNEL_10}, // MIDI address (CC number + optional channel)
4, // optional multiplier if the control isn't fast enough
};
CCRotaryEncoder enc2 {
{29, 30}, // pins
{MIDI_CC::Speed, CHANNEL_10}, // MIDI address (CC number + optional channel)
4, // optional multiplier if the control isn't fast enough
};
// Instantiate a CCPotentiometer object
CCPotentiometer Macro1 {
A0, // Analog pin connected to potentiometer
{MIDI_CC::Macro1, CHANNEL_10}, // Midi CC 3
};
CCPotentiometer Macro2 {
A1, // Analog pin connected to potentiometer
{MIDI_CC::Macro2, CHANNEL_10}, // midi CC 9
};
void setup() {
Control_Surface.begin(); // Initialize Control Surface
lcd.init(); // initialize the lcd
lcd.backlight();
// Print a message to the LCD.
lcd.setCursor(3,0);
lcd.print("Hello, world!");
Serial.begin(9600);
}
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi!
I'm creating MIDI controller based on Arduino Mega. I have a couple of encoders and potentiometers. Now, I already can use it with DAWs (particularly, Ableton Live) to control any elements that support control via MIDI, including any plugins (e.g. Portal or Thermal).
The only last thing I need is to read the actual value of this plugin or raw Ablton elements and print it on a small LCD screen. I have no issues with working with the screen. I just need to retrieve the correct values from those elements. Cause, for example, my encoder just sends +1 or -1 to MIDI channel and I don't know the actual value of what I'm changing in Ableton.
So my question - Is there any way to read such values via MIDI output or other protocols?
The one approach I have in my thoughts -
But this approach has lots of inconveniences, so I'm looking for a way to know the exact value from Ableton.
Thanks in advance to everyone willing to help!
Attaching my Arduino code below.
`
#include <Control_Surface.h> // Include the Control Surface library
#include <LiquidCrystal_I2C.h>
// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
CCRotaryEncoder enc1 {
{22, 23}, // pins
{MIDI_CC::Dry_Wet, CHANNEL_10}, // MIDI address (CC number + optional channel)
4, // optional multiplier if the control isn't fast enough
};
CCRotaryEncoder enc2 {
{29, 30}, // pins
{MIDI_CC::Speed, CHANNEL_10}, // MIDI address (CC number + optional channel)
4, // optional multiplier if the control isn't fast enough
};
// Instantiate a CCPotentiometer object
CCPotentiometer Macro1 {
A0, // Analog pin connected to potentiometer
{MIDI_CC::Macro1, CHANNEL_10}, // Midi CC 3
};
CCPotentiometer Macro2 {
A1, // Analog pin connected to potentiometer
{MIDI_CC::Macro2, CHANNEL_10}, // midi CC 9
};
void setup() {
Control_Surface.begin(); // Initialize Control Surface
lcd.init(); // initialize the lcd
lcd.backlight();
// Print a message to the LCD.
lcd.setCursor(3,0);
lcd.print("Hello, world!");
Serial.begin(9600);
}
void loop() {
Control_Surface.loop();
}
`
Beta Was this translation helpful? Give feedback.
All reactions