PDA

View Full Version : Example: Basic Foot Switch Controller


John
05-18-2010, 09:43 PM
Here's a configuration for a basic footswitch MIDI controller. Each MIDI CPU input is configured as a basic switch input.

The wiring diagram:

http://highlyliquid.com/support/img/midi-cpu/midi-cpu-switch-input-90.jpg

Unneeded switches can be replaced with an open circuit. Let's assume that each foot switch is momentary.

Here's a basic SysEx configuration that assigns each switch to a different program change command. (also sometimes called patch select, etc.)

This is very basic--we can also do things like generate multiple messages from each input, different types of messages, etc.

What would everyone like to see?


// MIDI CPU Control Terminal Configuration
// 24 momentary switch inputs

// Fixed Header Identifies the Control Terminal Configuration Message
F0 00 01 5D 04 01

// This byte identifies the configuration "layer". Layer 0 is the "primary" layer.
00

// Control Terminal Configuration Chunks
// Each chunk is 6 bytes: nn tt mm ch d0 d1
// nn = terminal number
// tt = transition
// mm = mode
// ch = channel
// d0 and d1 are mode-specific parameters

// Control Terminal 0: Logic Input, Program Change (Mode 50)
// nn = 0
// tt = 0 (midi command is generated when the switch changes from open-to-closed
// mm = 50 (program change, fixed program #)
// ch = 00 (channel determined by channel jumper)
// d0 = 00 (Program 0)
// d1 = 00 (this mode ignores d1)
00 00 50 00 00 00
// this line is for switch transition from closed-to-open
// mode 7F: do nothing
00 01 7F 00 00 00

// next 23 inputs: same thing, but for program #s 2-23
// Control Terminal 1: Program #1
01 00 50 00 01 00
01 01 7F 00 00 00

// Control Terminal 2: Program #2
02 00 50 00 02 00
02 01 7F 00 00 00

// Control Terminal 3: Program #3
03 00 50 00 03 00
03 01 7F 00 00 00

// Control Terminal 4: Program #4
04 00 50 00 04 00
04 01 7F 00 00 00

// Control Terminal 5: Program #5
05 00 50 00 05 00
05 01 7F 00 00 00

// Control Terminal 6: Program #6
06 00 50 00 06 00
06 01 7F 00 00 00

// Control Terminal 7: Program #7
07 00 50 00 07 00
07 01 7F 00 00 00

// Control Terminal 8: Program #8
08 00 50 00 08 00
08 01 7F 00 00 00

// Control Terminal 9: Program #9
09 00 50 00 09 00
09 01 7F 00 00 00

// Control Terminal 10: Program #10
0A 00 50 00 0A 00
0A 01 7F 00 00 00

// Control Terminal 11: Program #11
0B 00 50 00 0B 00
0B 01 7F 00 00 00

// Control Terminal 12: Program #12
0C 00 50 00 0C 00
0C 01 7F 00 00 00

// Control Terminal 13: Program #13
0D 00 50 00 0D 00
0D 01 7F 00 00 00

// Control Terminal 14: Program #14
0E 00 50 00 0E 00
0E 01 7F 00 00 00

// Control Terminal 15: Program #15
0F 00 50 00 0F 00
0F 01 7F 00 00 00

// Control Terminal 16: Program #16
10 00 50 00 10 00
10 01 7F 00 00 00

// Control Terminal 17: Program #17
11 00 50 00 11 00
11 01 7F 00 00 00

// Control Terminal 18: Program #18
12 00 50 00 12 00
12 01 7F 00 00 00

// Control Terminal 19: Program #19
13 00 50 00 13 00
13 01 7F 00 00 00

// Control Terminal 20: Program #20
14 00 50 00 14 00
14 01 7F 00 00 00

// Control Terminal 21: Program #21
15 00 50 00 15 00
15 01 7F 00 00 00

// Control Terminal 22: Program #22
16 00 50 00 16 00
16 01 7F 00 00 00

// Control Terminal 23: Program #23
17 00 50 00 17 00
17 01 7F 00 00 00

// Fixed Footer
F7

vovan
05-18-2010, 11:43 PM
Hi,

It is great. 24 presets would be quite comprehensive.

By adding bank change control ( say Bank 1, 2, 3 , or bank up/down - but it would be more difficult to arrange with LEDs), which would take up to 3 control change positions so configutration would be 3x21 =63 presets.... which is outstanding for modern processor as AXE-FX or else. I beleive it was a thread how to hook up LED lights?

Thanks John, great job. I am ordering one right away.



Cheers
Vo

rlejr
05-19-2010, 01:29 AM
Hi John....great start....thank you. So here is my wish list for more wiring diagrams and sysex code.

1) Bank change up and down for 4 or more program changes per bank. Bank switches would be momentary.
Example:
Bank 0 - Programs 0-3
Bank 1 - Programs 4-7
Bank 2 - Programs 8-11....etc...
2) Continuous controller (0-120) assignable momentary switches. These are for turning parameters on and off.
3) Program and continuous controller switch active LED lights
4) Numeric LED showing current selected bank number... or
5) Alpha/Numeric LED showing current selected Bank#, Program# and Program Name. Would need ability to assign names to programs.
6) Continuous controller (0-120) assignable stereo phone jacks to connect up to 2 pedals (volume, WAH, etc.)

For me to build something better than the controller I already have, the listed items above are 'must haves', except #5 is a nice to have.

My perfect controller would have:
Bank up/down with 4 programs per bank and support for at least 4 banks
12 continuous controllers for params on/off
2 continuous controllers for pedals

Thanks,
Ross

Sorry if this is just a repeat of the diagrams I sent you.

John
05-19-2010, 10:44 PM
In response to vovan and rlejr:

I'm going to add support for "bank increment/decrement" in a firmware update. I should have something by early next week.

Same goes for LED indicators--the 1.0 firmware does not support this, but it will not be difficult to add.

I am thinking of allowing up to 16 LEDs in a 4x4 matrix. Does that sound good? You'd be able to specify which LED is associated with which program switch, etc.

Support for an alphanumeric display may have to wait a while. I'm going to have to research serially-controlled displays and see if there is some sort of standardized protocol to interface with them.

Thanks for the valuable feedback!

rlejr
05-20-2010, 02:47 AM
John,

The updated firmware to support banks and LEDs sounds great. I really appreciate your responsiveness. 16 LEDs would fit the bill exactly for my perfect controller, though I'm not exactly sure what you mean by a '4x4 matrix'. Just so we are on the same page, the LEDs would need to function like this.

Program Change Switches (patches, presets)
In each bank of 4, only the LED for the current selected patch would be lit

Continuous Controller Switches
Each switch would have a static assignment to a given state or effect parameter, like delay, chorus, flanger, boost, engage tuner, etc. Each switch would turn it's assigned parameter on or off. Example would be if the delay has been turned on with the footswitch, the delay assigned switch LED would be lit. If the delay was turned off it would be unlit. All 12 states/effects could potentially be on at the same time so in that case all 12 LEDs would need to be lit at the same time.

On the LED display, I understand the idea of alphanumeric capability and naming adds a lot of complexity. But how about just the idea of a single digit numeric display that shows only the current selected bank. Without at least this there will be no way to determine what program/patch is selected without physically looking at the master device (eg. Axe FX) display. If just the current bank number could be displayed, then patch name labels could be affixed to the controller for a visual queue. Example: I label program change button #1 with:
1-MegaChorus
2-EuroCrunch
3-Freewill
4-ThorsHammer
I see the program change button #1 LED is lit and I see that the bank LED display shows a value of 4. Now I know that the ThorsHammer patch is active.

Thanks for humoring me. I promise you once we get far enough along here, I'm good for at least two of your CPU boards. If things work well and I do a little strategic posting on the Axe FX forum, I suspect there will be a lot of interest.

John
05-20-2010, 08:50 PM
rlejr,

Thanks again for the feedback. I'm going to consider everything and in a few days will let everyone know what I come up with.

John
05-25-2010, 09:32 PM
Hi All,

Still working on this. More soon.

John
06-11-2010, 06:26 PM
Ok, here's a controller design from rlejr that happens to include the "bank select" functionality described by vovan:

http://forum.highlyliquid.com/showthread.php?t=300

John
06-14-2010, 09:52 PM
An alternative to "bank up" and "bank down" switches is to have an individual selector switch for each bank. Here's an example that includes a "bank select" switch for each of 10 banks, and includes 10 preset selectors in each bank:

http://forum.highlyliquid.com/showthread.php?t=302