For controller change messages change this piece of code:-
//Sends controller change to the specified controller
void controllerChange(int controller, int value) {
Serial1.write(byte(0xb0));
Serial1.write(byte(controller));
Serial1.write(byte(value));
Serial1.write(byte(0xb1));
Serial1.write(byte(controller));
Serial1.write(byte(value));
Serial1.write(byte(0xb2));
Serial1.write(byte(controller));
Serial1.write(byte(value));
}
The last digit in 0xb0 sends this to channel 1, to change this to channel 4 make this number 0xb3.
The last digit in 0xb1 sends this to channel 2, to change this to channel 5 make this number 0xb4.
The last digit in 0xb2 sends this to channel 3, to change this to channel 6 make this number 0xb5.
If after trying you do not get it to work then what you do is post what you have tried, say what it does and what you want it to do and we can be more specific.
In that way you will become less of a noob.
search in the code for noteOn( call - this is not the noteOn in the function definitions but in the body of the code - that has three numbers in the brackets seperated by ',' the first one defines the command and the MIDI channel. So when you see:-
noteOn(0x90 + i, noteFretted[i], vel);
That is saying send a 'note on' message to channel 1 plus the value in the variable i. If you don't want to send it on another channel just remove the "+ i" bit. Then the "cmd += 3" will ensure everything is sent on channel 4.
You have to do the same for the noteOff calls.
for testing purposes I also tried to put all controller messages to just channel 1 (0xb0) and it works,
So if you want it to be all one channel then you only need the first of the controller sends, you can remove the other two.