Pages: [1]   Go Down
Author Topic: MIDI Foot Controller  (Read 1740 times)
0 Members and 1 Guest are viewing this topic.
Manchester, England, UK
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi there,

I am fairly new to the arduino and have tested a few simple programs out with leds, sending midi notes etc.

However i am wanting to make a foot controller that sends program changes for my rack gear and not sure how to
go about it as there's quite abit of code on the internet but nothing thats fairly simple and stands out with program changes.

I want 10 switches to send program changes (0-127) with 10 banks (0-9 up/down).

I kinda know what i am after but not sure how to go about it?


Regards
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Man, talk about timing, I was putting in my post about something similar when you posted this smiley-wink

Sounds like you're trying to do something along the lines of a Voodoo Labs Ground Control Pro, is that correct?  Do you have anything drawn up or coded yet?  We might be working along the same lines in some areas.
Logged

Manchester, England, UK
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nice, yeah that kind of thing but i want it for midi program changes for my ADA MP1. I haven't written anything up yet, just browsing
other peoples code and trying to make sense of it.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Like I said in my thread, I had trouble finding examples for MIDI decoding but while searching found a ton of projects that send MIDI data out.  Let me know if you have trouble finding what you need and I'll go back through the myriad of links I saved and post the relevant ones here for you.

I was tempted to do this myself although I couldn't figure out a way to make it programmable without connecting it to a computer.  However, I only gave it a few minutes of thought since I already have a GCP.  Although, I must admit, I would be kind of cool to build one and then sell the GCP to fund other projects smiley-cool.

Have you decided how you want it to work?  If you're using it only for the MP1 and don't mind having to adjust the code to make changes, it shouldn't be that difficult.  Just make sure you shop around for your switches since they can get expensive and vary widely in price.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 627
Posts: 34246
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

If you have something that sends MIDI note on messages it is easy to modify it for program change.
A program change message is just two bytes long not three.
The first byte is:-
1100nnnn    
or 0xC0 + the MIDI channel
the second byte is:-
0ppppppp    
with the most significant bit being zero and the other bits being the is the new program number.
Logged

Buenos Aires
Offline Offline
Newbie
*
Karma: 0
Posts: 35
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't want to stop you in your project, sounds interesting. But I hacked an old Roland FC-100 mkII foot controller and I got 8 foot switches and 8 banks, sending already seted midi messages (the hack consists in changing the output cable for a midi cable). It also has some more functions. Maybe you are looking fully do it yourself, in that case ignore my advise. Good luck!

http://music-electronics-forum.com/t2932/
(Roland FC-100 hack)
Logged


Manchester, England, UK
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cheers for the info.

I dont really want to hack anything but do the majority from scratch, even thought it will be tough.
i have a roland/edirol midi keyboard and behringer fcb1010, keyboard will do notes and behringer will
do all but i have problems with trying to set the foot controller how i want it which i why i want to make
my own and have it programmed for program changes and not notes.

i know program change is always C0 then the data byte is the program change 01-128 or 00-127 depending how the gear is setup for.

Status                          Data Byte(s)     
D7----D0                       D7----D0

(BIN) 1100 XXXX             
(HEX) C0                       00-0F or 01-0F

So for banks 0-10 will be

            (1-10)
bank 0 - 01-0A

            (11-20)
bank 1 - 0B-14........etc.

Its just getting 1 to 10 switches to send the program change message down TX
and then have 2 switches for bank up and down to flick the next set/decade of hex numbers

if any of that makes sense. i am not sure how to go about that

Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 627
Posts: 34246
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
i know program change is always C0
Only for MIDI channel 1
for MIDI channel 2 it is C1
for MIDI channel 3 it is C2
for MIDI channel 4 it is C3
and so on.

Quote
Its just getting 1 to 10 switches to send the program change message down TX
So get that going first.
Just detect when the button is pressed for the first time, using an if statement to test both the current state of the switch and the previous state, then send the data using Serial.write().

Logged

Manchester, England, UK
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
i know program change is always C0
Only for MIDI channel 1
for MIDI channel 2 it is C1
for MIDI channel 3 it is C2
for MIDI channel 4 it is C3
and so on.

Quote
Its just getting 1 to 10 switches to send the program change message down TX
So get that going first.
Just detect when the button is pressed for the first time, using an if statement to test both the current state of the switch and the previous state, then send the data using Serial.write().

oh, i dont remember reading that C0 changes when the channel is changed. i take it, thats so the device knows the channel has been changed and theres no conflict between program change
messages etc.
Logged

Manchester, England, UK
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have messed around with the debounce switching that toggles the led, is there any code that will help with
multiple switches toggling multiple leds as a test before sending hex code serially?

like 4 pins for 4 switches

and 4 pins for 4 leds?

Need to get in to the swing of programming again as its been sometime
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 627
Posts: 34246
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Just add a:-
Code:
delay(25);
After you detect a state change in the switch.
Logged

Pages: [1]   Go Up
Jump to: