Skip to content

Transposer+Change Channel #1106

@jeremydte

Description

@jeremydte

Hello, I would like to add the transpose function to each note. I can't manage CHANGE_CHANNEL and transpose at the same time.

#include <Control_Surface.h>

HardwareSerialMIDI_Interface midi_ser {Serial1};

CD74HC4067 M1 = { 6, {2, 3, 4, 5} };
CD74HC4067 M2 = { 7, {2, 3, 4, 5} };
CD74HC4067 M3 = { 8, {2, 3, 4, 5} };
CD74HC4067 M4 = { 9, {2, 3, 4, 5} };
CD74HC4067 M5 = { A1, {2, 3, 4, 5} };
CD74HC4067 M6 = { A2, {2, 3, 4, 5} };

///MIDI CHANNEL//
Bank<8> bank(1);
ManyButtonsSelector<8> programSelector = {
bank,
{{M3.pin(7), M3.pin(6), M3.pin(5), M3.pin(4), M3.pin(3), M3.pin(2), M3.pin(1), M3.pin(0)}},
};

//OCTAVE SELECT//
Transposer<-2, +2> transposer {12};
IncrementDecrementSelector<transposer.getNumberOfBanks()> selector {
transposer,
{M1.pin(1), M1.pin(2)},
Wrap::Clamp,
};

Bankable::NoteButton buttons[] {

{{bank, BankType::CHANGE_CHANNEL}, M1.pin(15), 48}, //C
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(14), 49}, //C#
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(13), 50}, //D
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(12), 51}, //D#
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(11), 52}, //E
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(10), 53}, //F
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(9), 54}, //F#
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(8), 55}, //G
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(7), 56}, //G#
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(6), 57}, //A
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(5), 58}, //A#
{{bank, BankType::CHANGE_CHANNEL}, M1.pin(4), 59}, //B

{{bank, BankType::CHANGE_CHANNEL}, M1.pin(3), 60}, //C
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(15), 61}, //C#
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(14), 62}, //D
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(13), 63}, //D#
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(12), 64}, //E
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(11), 65}, //F
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(10), 66}, //F#
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(9), 67}, //G
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(8), 68}, //G#
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(7), 69}, //A
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(6), 70}, //A#
{{bank, BankType::CHANGE_CHANNEL}, M2.pin(5), 71}, //B

{{bank, BankType::CHANGE_CHANNEL}, M2.pin(4), 72}, //C
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(11), 73}, //C#
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(10), 74}, //D
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(9), 75}, //D#
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(8), 76}, //E
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(7), 77}, //F
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(6), 78}, //F#
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(5), 79}, //G
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(4), 80}, //G#
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(3), 81}, //A
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(2), 82}, //A#
{{bank, BankType::CHANGE_CHANNEL}, M4.pin(1), 83}, //B

{{bank, BankType::CHANGE_CHANNEL}, M4.pin(0), 84}, //C

};

Bankable::CCPotentiometer Potentiometers[] = {

{{bank, BankType::CHANGE_CHANNEL}, M5.pin(0), {MIDI_CC::Modulation_Wheel} }, //M Wheel

{{bank, BankType::CHANGE_CHANNEL}, M6.pin(0), {10} }, //Pot1
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(1), {11} }, //Pot2
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(2), {12} }, //Pot3
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(3), {13} }, //Pot4
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(4), {14} }, //Pot5
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(5), {15} }, //Pot6
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(6), {16} }, //Pot7
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(7), {17} }, //Pot8
{{bank, BankType::CHANGE_CHANNEL}, M6.pin(8), {18} }, //Pot9

};

Bankable::PBPotentiometer Potentiometer[] = {
{{bank, BankType::CHANGE_CHANNEL}, M5.pin(1), CHANNEL_1 }, //P Wheel
};

Bankable::CCButton Buttons[] = {
{{bank, BankType::CHANGE_CHANNEL}, M3.pin(8), {20, CHANNEL_1} }, //PLY
};

void setup() {
Control_Surface.begin();
}

void loop() {
Control_Surface.loop();
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions