Arduino MIDI Foot Pedal for Peavey Vypyr Amp

I was asked to take a look at a Peavey Vypyr amp to think about how the foot pedal for it works.  This is a set of links and notes by way of recording what I found out, and some initial experiments with an Arduino.

Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments (or in this case, amplifiers)!

If you are new to Arduino, see the Getting Started pages.

Introduction and Background

The Peavey Vypyr series of amplifiers are sophisticated, computer-modelling amps with a whole range of digital signal processing features.  As a consequence, many of the settings can be stored in memories and there are a number of “preset” configurations readily available to use, in the same way as a digital synth might have a set of preset patches.

Apparently it is possible to change presets using a foot switch, so I set out to work out how.

Here are some links with more information:

The Vypyr MIDI Interface

There is an 8-pin DIN socket on the rear of the Vypyr amps labelled “remote switch” and it turns out that this is a MIDI socket with a couple of extra pins. This is designed to connect to the Peavey Sanpera series of intelligent, digital footswitches. So far I haven’t found anything else that will use an 8-pin MIDI socket, so I’m guessing this is bespoke to the Peavey setup?

From the Peavey Vypyr Schematics collection, we can see the pinout defined for the MIDI socket as follows:

Pins 4 and 5 are the standard MIDI IN functions, with 2 (GND) unconnected as expected. The MIDI_IN+ and MIDI_IN- signals link up to a standard opto-isolator MIDI IN circuit.

If a standard 5-pin DIN MIDI cable is used then this can act as a standard MIDI IN port quite happily.

But in addition to MIDI in functionality it also has the following pins:

  • Centre pin: An additional GND.
  • Pin 7 – FTSW_MIDI_OUT – this is a MIDI OUT signal.
  • PIn 6 – UNREG – this is an unregulated power line.

I infer that these are for use with the Sanpera foot switch and provide a MIDI return path, from the amp to the pedal, and power for the foot switch.

So what is this power connection? It is labelled as UNREG on the MIDI circuit schematic.

Following this through to the DSP schematic and then finally to the power/amp schematic, we can see that it will be sitting at 8V, being tapped off before any of the built-in power regulator circuits.

Note that the sense of P6 in the above diagram (from the DSP board) appears to be reversed in comparison with P6 in the previous diagram (from the MIDI board).

We can also note here that the MIDI IN/OUT signals from the MIDI board would appear to be connected directly to a microcontrollers UART RX/TX pins, given the labelling… but more on that in a moment!

It’s a little hard to tell, but one presumes that the P16/P15 connectors connect to the mains transformer that is mounted on the underside of the main amp chassis. I don’t see where else the input to those diodes to produce the 8V could come from…

So going back to those MIDI IN/OUT links that are labelled UART_RX/UART_TX on the DSP schematic. Here is the other end of those signals.

Whilst UART_RX is indeed connected directly into the microcontroller (an analog devices ADSP-21375 SHARC 32-bit digital signal processors “optimised for audio applications”), we can see that UART_TX actually goes through two 74HC14 inverters and a 221Ω resistor – essentially a standard MIDI OUT circuit, except we can see that the 74HC14 is powered from 3V3 rather than 5V, as would be expected when using a 220Ω resistor.

So where does this leave us? We can conclude that the 8-pin MIDI port on a Peavey Vypyr amp provides the following:

  • A standard 5-pin DIN MIDI IN port.
  • An additional unregulated 8V power supply and additional GND.
  • An additional 3V3 level MIDI OUT signal.

Armed with this knowledge, we can set about hooking up an Arduino. The simplest option is an independently powered Arduino (USB or barrel jack) with a standard MIDI interface.

A more complex solution would utilise the 8V unregulated supply to power the Arduino via the barrel jack and hook up the 3V3 level TX/MIDI OUT too. Warning: I can’t find any details of the current capacity of the 8-pin MIDI UNREG power pin! I guess if it can drive the official foot switch it can drive the Arduino. But this is just a guess!

The Code

It would appear that there are many functions of the Peavey Vypyr that are accessible over MIDI. The specification of the official Sanpera foot switches will give a pretty good idea of what is possible.

A fuller explanation can be inferred from the Vypyr Pro MIDI Specification, along with the following forum links:

At this stage, I only want to be able to select the different preset configurations, so the relevant part of the MIDI implementation spec is as follows:

CC 0x01 BANK SELECT
This CC is used to specify the bank to switch to on the next program change input message. The preset to load is specified in a subsequent program change message. Values from 0 to 25 map to banks ‘A’ through ‘Z’ and values from 26 to 125 map to banks ’00’ through ’99’ while the values 126 and 127 are ignored. The preset number must be between 0 and 3 and it maps to preset numbers 1 to 4.

The following CC message followed by a program change message selects bank ‘B’ and loads preset 4.
B0 01 01 C0 03
Note that the MIDI PROGRAM CHANGE message can also be used to select banks. Program change messages without use of the bank select CC compute the bank and preset from the provided program number allowing access to the first 32 banks.
C0 00 Select the first bank, first preset (A-1)
C0 7F Select the thirty-second bank, last preset (05-4)

So whilst the presets are arranged in banks of 4, which can be selected using the BANKSEL MIDI CC message followed by a PC message, it would appear that program numbers 0 to 127 are mapped onto banks 0 to 31 automatically.

So increasing the program number will cycle through presets A1, A2 A3, A4, B1, B2, B3, B4, C1, C2, C3, C4 – which are all the presets available from the front panel controls.

So at this point we pretty much have everything we need to know to build a preset selector for the Peavey Vypyr.

The following previous projects should “just work”:

I tried it with my Arduino MIDI Rotary Encoder Controller – Part 2 which builds the encoder and 7-segment LED display onto one of my Arduino MIDI Proto Shields and that just worked fine.

I also configured up my JC Pro Macro (V2) as a MIDI controller, using the following configuration and the SoftwareSerial MIDI mode (in the ccmidi.h file):

const uint8_t midiCC[NUM_MIDICC][3] = {
{PROGRAM, CCSW, 0},  // SW 2
{PROGRAM, CCSW, 1},  // SW 3
{PROGRAM, CCSW, 2},  // SW 4
{PROGRAM, CCSW, 4},  // SW 5
{PROGRAM, CCSW, 6},  // SW 6
{PROGRAM, CCSW, 7},  // SW 7
{PROGRAM, CCSW, 5},  // SW 8
{PROGRAM, CCSW, 3},  // SW 9
};

This configures the buttons for the first 8 presets.

Closing Thoughts

I was really intrigued to find that the foot switch was totally MIDI driven. This presents some really interesting options for the future, so I might come back to this one.

The key feature missing though is the mechanics. To be a foot switch, this needs to be robust and “stomp-on-able”, but foot switches are available online so I’ll see what I can find. I might even be able to repurpose a foot switch from another application – an old sewing machine switch, a keyboard foot switch, or even my organ pedals

But either way to be really useful this will need a dedicated build. But at least I know all I need to know to actually do it now.

In the mean time, I’ll just leave this note from the manual here for future reference…

Kevin

Leave a comment