Control-Surface
Control-Surface copied to clipboard
Help no Codigo
Prezado, a tempo atras havia escrito esse codigo com sua ajuda, porem faz 1 ano que não atualizei mais o mesmo codigo, estou colocando esse mesmo comando num arduino mega usando Multiplexador 16 Canais Analógico Digital CD74HC4067, estou tendo poblemas para carregar no arduino, dando erros de encoder, notes e analog multiplexer.
gostaria de saber se pode me ajudar com esse codigo, lembrando que semprei no inicio o mesmo codigo e funcionava
linhas de comando das notas nos mux estou ainda criando conforme tabelas.
// Include the Control Surface library.
#include <Control_Surface.h>
#include <Encoder.h> // Include the Encoder library.
// This must be done before the Control Surface library.
// Instantiate a MIDI over USB interface.
//USBMIDI_Interface midi;
// Instantiate a multiplexer with three address lines.
AnalogMultiplex<1> mux1= {3, {10, 11, 12, 13 } };
AnalogMultiplex<2> mux2= {4, {10, 11, 12, 13 } };
AnalogMultiplex<3> mux3= {5, {10, 11, 12, 13 } };
AnalogMultiplex<4> mux4= {6, {10, 11, 12, 13 } };
AnalogMultiplex<5> mux5= {7, {10, 11, 12, 13 } };
AnalogMultiplex<6> mux6= {8, {10, 11, 12, 13 } };
AnalogMultiplex<7> mux7= {9, {10, 11, 12, 13 } };
const int speedMultiply = 1; // If the jog wheels or other encoders are too slow in your software, increase this value
// (it will be multiplied with the actual speed of the encoder, as the name implies.) Default is 1.
struct RelativeNoteSender {
static void send(int delta, MIDIAddress address) {
delta = constrain(delta, -127, 127);
if (delta > 0) {
Control_Surface.sendNoteOn(address, delta);
// Send whatever your software expects
} else {
Control_Surface.sendNoteOn(address + 1 /* ??? */, -delta);
// Send whatever your software expects
}
}
};
struct ContinuousNoteSender {
void send(uint8_t value, MIDIAddress address) {
Control_Surface.sendNoteOn(address, value);
}
static constexpr uint8_t precision() { return 7; }
};
struct NoteEncoder : MIDIRotaryEncoder<RelativeNoteSender> {
NoteEncoder(EncoderPinList pins, MIDIAddress address)
: MIDIRotaryEncoder(pins, address, 1, 4, {}) {}
};
// Instantiate a shift register.
// Instantiate the momentary push buttons that send out MIDI Note events.
//NoteButtonLatching switches[] = {
NoteButton buttons[] = {
AnalogMultiplex<1> mux1= { 3, {10, 11, 12, 13 } };
{ mux1.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(14), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux1.pin(15), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<2> mux2= { 4, {10, 11, 12, 13 } };
{ mux2.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(14), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux2.pin(15), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<3> mux3= { 5, {10, 11, 12, 13 } };
{ mux3.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(14), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux3.pin(15), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<4> mux4= { 6, {10, 11, 12, 13 } };
{ mux4.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(14), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux4.pin(15), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<5> mux5= { 7, {10, 11, 12, 13 } };
{ mux5.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(14), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux5.pin(15), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<6> mux6= { 8, {10, 11, 12, 13 } };
{ mux6.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(14), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux6.pin(15), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
AnalogMultiplex<7> mux7= { 9, {10, 11, 12, 13 } };
{ mux7.pin(0), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(1), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(2), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(3), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(4), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(5), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(6), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(7), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(8), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(9), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(10), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(11), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(12), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(13), {0x00, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(14), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
{ mux7.pin(15), {0x0, CHANNEL_1} }, // digital input pin, note number, [channel]
//Exemplos abaixo
// Pode ser assim escrito a linha ou
//{ mux1.pin(0), {0x01, CHANNEL_1} }, // digital input pin, note number, [channel]
//{ mux1.pin(0), {0x01, CHANNEL_1} }, // digital input pin, note number, [channel]
//pode ser tambem assim escrito a linha
//{ mux1.pin(1), 0x01, 1 }, // digital input pin, note number, [channel]
//{ mux1.pin(1), 0x01, 1 }, // digital input pin, note number, [channel]
// Exemplo 2 Controladora no mesmo arduino modo CHANNEL_1 e CHANNEL_2 com Chip4074
// AnalogMultiplex<0> mux7= { 9, {8, 9, 10, 11 } };
//{ mux1.pin(0), {0x01, CHANNEL_1} }, // digital input pin, note number, [channel]
//{ mux1.pin(1), {0x02, CHANNEL_1} }, // digital input pin, note number, [channel]
//{ mux1.pin(2), {0x03, CHANNEL_1} }, // digital input pin, note number, [channel]
//{ mux1.pin(3), {0x04, CHANNEL_1} }, // digital input pin, note number, [channel]
//{ mux1.pin(4), {0x05, CHANNEL_1} }, // digital input pin, note number, [channel]
// AnalogMultiplex<0> mux8= { 9, {8, 9, 10, 11 } };
//{ mux2.pin(0), {0x01, CHANNEL_2} }, // digital input pin, note number, [channe2]
//{ mux2.pin(1), {0x02, CHANNEL_2} }, // digital input pin, note number, [channe2]
//{ mux2.pin(2), {0x03, CHANNEL_2} }, // digital input pin, note number, [channe2]
//{ mux2.pin(3), {0x04, CHANNEL_2} }, // digital input pin, note number, [channe2]
//{ mux2.pin(4), {0x05, CHANNEL_2} }, // digital input pin, note number, [channe2]
};
using namespace MIDI_Notes;
NotePotentiometer pots[] = {
//Exemplo {Qual Pino, note(0xQual Nota,Qual Channel)},
{A0, note(0x0, 1)}, // Fader 01
{A1, note(0x0, 1)}, // Fader 02
{A2, note(0x0, 1)}, // Fader 03
{A3, note(0x0, 1)}, // Fader 04
{A4, note(0x0, 1)}, // Fader 05
{A5, note(0x0, 1)}, // Fader 06
{A15, note(0x0, 1)}, // Fader Grand Master
{A7, note(0x0, 1)}, // Fader
{A8, note(0x0, 1)}, // Fader
{A9, note(0x0, 1)}, // Fader
{A10, note(0x0, 1)}, // Fader
{A11, note(0x0, 1)}, // Fader
};
NoteEncoder enc[] = {
//Exemplo {{ Qual Pino , Qual Pino }, 0xQual Nota },
{{ 40, 41 }, 0x0 }, // Encoder A
{{ 42, 43 }, 0x0 }, // Encoder B
{{ 43, 44 }, 0x0 }, // Encoder C
{{ 45, 46 }, 0x0 }, // Encoder D
};
void setup() {
// Initialize everything.
Control_Surface.begin();
}
void loop() {
// Update the control surface: read new MIDI events, and read all inputs.
Control_Surface.loop();
}