Transformer MIDI Implementation

(mostly from the manual)


In this page:
Patch Spec
Global Spec

The Transformer is designed to be an all-in-one guitar amplification system using the PFC4 footswitch. However, there are plenty of other uses for those MIDI jacks on the back, and that's what we'll cover here. We'll start with the simpler stuff, and move on to the more complicated stuff later.

MIDI Channel on the Transformer

The Transformer's MIDI channel is 1 by default (after re-initialization). This means that any channel messages that are received on another channel are ignored, and any channel messages that are generated are sent on this channel. To change the channel, hold the STORE button down for at least a second, and (while holding) select channel 1-16 using the Preset Matrix selector.

MIDI Out as a MIDI Thru

Most likely, you'll be using the PFC4 to drive the MIDI In, since it adds so much to the usability of the amp. If you decide to link another Transformer up for stereo operation, you can have the second one be slaved to the first one's PFC4 by connecting a MIDI cable from the first's Out to the second's In. They will track program changes, EFX mode changes, TAP tempo, other preset edits, etc. Even if the audio link is from the first's effects send to the second's effects return, it's still useful to have the same presets in the second amp and link them since the Amp Model selection (which changes per preset) affects the voicing of the power amp.

The MIDI Out jack will echo virtually all commands that arrive at the MIDI In (with the exception of certain Sysex messages meant for the Transformer), so it can be used in the middle of a MIDI chain when driving a rig from another MIDI source, instead of using the PFC4. This is called a "soft" thru, which means it is dependent upon the software (processing power and MIDI buffer) of the unit. What's a hard thru? That's when there is a jack labeled "Thru" and not "Out" or "Out/Thru." It's usually accompanied by a separate MIDI In and Out, and it's usually in the middle. Most importantly, it's directly driven from the In jack, so it is not dependant on the software to do the echoing work. So if your other MIDI units are "3-jack" units, it may be wise to put the Transformer at the end of the chain, since a soft thru is never quite as bullet-proof as a hard thru. Not that we expect problems with ours, but a little insurance doesn't hurt!

Preset Synchronization with an External Effects Unit

Back to top

You may have a programmable effects unit with a MIDI In that you want to use in the Transformer's effects loop. If you want this unit to change presets when the Transformer does, connect a MIDI cable from the Transformer's MIDI Out to the MIDI In of the effects unit. Then the first 16 presets in the effects unit will be aligned with the 16 presets in the Transformer.

For this to work, the MIDI channel of the effects unit must either be set to OMNI, or match that of the Transformer.

Preset Backup

You can back your presets up to a computer, sequencer, or other type of MIDI librarian / recorder. You can also transfer them to another Transformer! Connect a MIDI cable from the Transformer's MIDI Out to the MIDI In of the recording device. Prepare the recording device or software program to receive data. (In the case of transferring to another Transformer, it just needs to be on.) We're now set to send the presets.

To initiate the transmission manually, hold the amp's TAP button and then press the MODULATION Select button. The six Amp Model LED rings (Pre Gain through Reverb) should go off for a second or two to verify the operation. When they come back on, the operation is done.

NOTE: The size of the System Exclusive preset dump is 1000 bytes.
If your recording device can send a request string to automate this operation, the string can be found in the Sysex table below. Another cable will have to go from the recorder's out to the Transformer's In for this to work. Sending that string to the Transformer will initiate the dump operation.

To dump Globals:  hold TAP and press STORE
To dump a Single Preset:  hold TAP and press USER

Channel Messages

Back to top

The Transformer will accept (and echo) the following channel messages when they are sent on its MIDI Channel (values are shown in hexadecimal):

NOTE: The Main Volume will be located after the preamp and EQ and before the time-based effects. Other channel messages will be echoed to the MIDI Out, but will not affect the Transformer.

The Transformer will generate the following channel messages on its MIDI Channel:

System Common and System Real Time Messages

The Transformer will echo these messages to the MIDI Out when received. None will be generated by the Transformer.

System Exclusive Messages

Back to top

We've equipped the Transformer with an extensive MIDI Sysex implementation. In addition to simple preset dumps and preset sharing via the Internet and such, this enables the amp to be programmed remotely by a computer program or hardware editor like the Peavey PC1600X.

All of the Transformer's Sysex messages start with a common header and end with an End of Sysex [EOX] byte. The table below shows the "unique" section (including the command and optional data) of each message that falls between the header and the EOX.

Here is the common part, along with descriptions of each byte's purpose:

F0 - Start of Sysex [SOX]
1B - Peavey Manufacturer ID = 00 00 1B
10 - Transformer Product ID
00 - Reserved for future use (keep fixed at zero)
CMD - Command byte that defines which Sysex message it is.
<data> - Optional data.
F7 - End of Sysex [EOX]

NOTE: Each time a preset is recalled, it is first loaded into a RAM buffer that we call the Edit Buffer (could also be called "current preset"). If another preset is recalled, the Edit Buffer is erased, so any changes will be lost unless stored to a User location (or externally). In the table below, we refer to this preset location as the "EdBuf." Now for the unique stuff:
CMD Number (in HEX) / Name
<data> description
Resulting Action
00 / PFC4 Online None Amp sends PFC4 Setup data
01 / PFC4 Switch Press Footswitch #, 0-5 Amp responds based on mode
02 / Version Request None Amp sends message 03
03 / Version of Software Version #, 00-7F Amp ignores if received
04 / Send Presets None Amp sends message 05
05 / Receive Presets Preset data, nibbleized * Amp saves presets in User slots
06 / Send Single Preset Preset # (00 - 0F) Amp sends message 09 ****
07 / Receive Single Preset Preset #, preset nibs * Amp saves preset to User slot
08 / Send EdBuf None Amp sends message 09
09 / Receive EdBuf Preset nibbles * Amp loads and activates EdBuf
0A / Store EdBuf Preset # (current preset???) Amp stores EdBuf to User preset
0B / Send EdBuf Byte EdBuf address (00 - 1E) Amp sends message 0C
0C / Receive EdBuf Byte EdBuf address, value nibs * Amp activates EdBuf parameter
0D / Send EdBuf Partial Byte Partial address ** Amp sends message 0E
0E / Receive EdBuf Partial Byte Partial address, partial value ** Amp activates EdBuf parameter
0F / Send EdBuf Current Primary address *** Amp sends message 10
10 / Receive EdBuf Current Primary address, current value *** Amp activates EdBuf parameter
11 / <reserved>    
12 / Send Globals None Amp sends message 13
13 / Receive Globals 14 Global Bytes, nibbleized * Amp saves and activates globals
14 / Send Global Partial Byte Partial address, 00-0D ** Amp sends message 15
15 / Receive Global Partial Byte  Partial address, partial value ** Saves and activates global in amp
* Nibbleized data is sent hi nibble, then low nibble. E.g. a hex byte value of 74 will be sent as two bytes: 07 04. This is because MIDI data bytes really only have 7 bits - the most significant is reserved to be set for status bytes only.

** Partial addressing is a way of programming a portion of an EdBuf byte, while not disturbing the other bits in that byte. A Partial address is made up of 3 bytes. The first is the byte address of the preset byte you are targeting (00-1E). The second byte is the bit number you want to start writing at (0 for least significant, 7 for most significant). The third byte defines how many bits you want to program (1-6, should be 1-7 ... see errata). The next byte will be the value, and since it is a partial, it does not need to be nibbleized. For example, to set the Delay Rolloff bit, send the following string:

F0 00 00 1B 10 00 0E 1D 07 01 01 F7

The 1D points to the Delay Separation Byte, whose bit 7 is used for the rolloff flag.

The 07 says that we're poking bit #7.

The first 01 says that we're programming one bit.

The second 01 says that we're setting (vs. clearing) the bit.

*** "Current" addressing is an alternate method of controlling the 10 preset parameters that have dual settings. Instead of the programming device needing to have 2 different strings for the 2 levels of, say, Pre Gain, it can use these messages with the address of the first Pre Gain parameter, and the status of the Boost will determine which of the two bytes will actually be read or written. For example, 10 sliders (out of 16) of a PC1600X can write current Pre Gain through Delay Level, and four of the PC1600X's buttons could emulate the EFX Select Mode of the PFC4. Then, all 20 levels could be edited with 10 sliders, instead of needing 20 (which the unit does not have).

**** This message sends a Receive EdBuf message so it is less destructive upon return to the amp (overwrites the EdBuf). If the Receive Single Preset message is sent to the amp, it overwrites a User preset. A PC program can easily modify the header if this is the desired result, or follow up with a Store command (0A).

Transformer Preset Definition

Back to top


Range (Decimal)
00 Amp Model High nib is Cabinet Model, 0-11 *(see below)

Low nib is Preamp / Power Amp Model, 0-11
NOTE:  amp  + cab go 0-15 on V2

Clockwise rotation for both nibs:

0 = Classic Clean
1 = Classic Crunch
: : :
11 = British Clean

01 <reserved> (controlled by model)
02 <reserved> | Mod Select High nib is reserved (controlled by model)

Low nib is Modulation Select:
0-4 = Chorus, Flanger, Phaser, Tremolo, Rotary
NOTE:  5 = octaver on V2

03,04 Pre Gain (non-boost, boost) 1-33
05,06 Low (non-boost, boost) 1-33
07,08 Mid (non-boost, boost) 1-33
09,0A High (non-boost, boost) 1-33
0B,0C Post Gain (non-boost, boost) 1-33
0D,0E Reverb (primary/off, secondary/on) 0-33 (0 = reverb off)
0F Mid Shift 1-33 *(see below)
10 <reserved> <reserved>
11,12 Rate (primary/off, secondary/on) 1-25
13,14 Depth (primary/off, secondary/on) 0-25 (0 = modulation off)
15 Flanger Feedback 1-25 **(see below)
16 Flanger Delay Time 1-25 **(see below)
17 Delay Time (see errata) 1-255 
18,19 Delay Feedback (primary/off, secondary/on) 1-25
1A,1B Delay Level (primary/off, secondary/on) 0-25 (0 = delay off)
1C Delay Time Scale 1-25 ***(see below)
1D Delay Stereo Separation Bit 7 is Delay Treble Rolloff (active high)

Bits 6-0 are L/R delay time separation, 1-25

1E PFC4 Tap Function | EFX Mode Status Bits
(see errata)
High nib controls function of TAP footswitch:

0000 = Tap Tempo (default)
0001 = EFX mode status reset (from preset)
0010 = <reserved> 2/3 tap time in v2.0
0100 = <reserved> Dotted 8th tap time in v2.0
1000 = <reserved> 1.5 tap time in v2.0
Multiple 1's flags toggles to the corresponding
bits in the low nibble. Examples:
0101 = Toggles boost and delay mode
1110 = Toggles all effects, but not boost
etc. etc.

Low nib is EFX mode status:

Bit 0 is Boost (on/secondary = high)
Bit 1 is Modulation (on/secondary = high)
Bit 2 is Delay (on/secondary = high)
Bit 3 is Reverb (on/secondary = high)

* Values are automatically set with model selection. Write after model selection to tweak.

** Values are automatically set with flanger selection. Write after flanger selection to tweak.

*** Value is centered (@13, which is basically 0) after a Tap function from the amp or PFC4. Write after Tap function to tweak.

Transformer Globals

Back to top


Range (Decimal)
00 <reserved> Reserved (keep at zero)
01  Bank Select Method 0 = Preset (1-4) stays the same after bank select (default)
1 = Preset goes to #1 after bank select
2 = Preset light blinks, waits for user preset selection
02  PFC4 All Info 0 = Inactive mode - LED's off
1 = Inactive mode - LED's dim (default)
2 = Inactive mode - LED's bright for both modes
03  MIDI Channel (- 1) 0-15 for 1-16 (default = 0, channel 1)
04  Global Bits Bit 0 set for User patches at powerup (default = 0, factory)
Bit 1 set for Stereo mode (default = 0, mono)
Bits 2-7 are reserved (keep at zero)
05  Noise Gate Threshold 0=off, 1-25 (default = 5) 
06  Noise Gate Sensitivity 0-25 (default = 5)
07  <reserved> Reserved (keep at zero)
08  <reserved> Reserved (keep at zero)
09  Tuner Bits Bit 0 set for Eb mode (default = 0, standard E mode)
Bit 1 set for Chromatic mode (default = 0, guitar mode)
Bits 2-7 are reserved (keep at zero)
0A Tuner Volume Level 0-25. Default is 13 (12:00). Zero is muted.
0B <reserved> Reserved (keep at zero)
0C  <reserved> Reserved (keep at zero)
0D <reserved> Reserved (keep at zero)

Back to top

Errata - 12/17/01

During development of Peavey's Windows editor/librarian program, I came across a few bugs in version 1.4 pertaining to patch editing via sysex. All had workarounds in my case, but I list them here for anyone designing 3rd party support. Version 1.5 and 2.0 has fixes for these..

Bug: When sending the Delay Time byte via sysex, the amp accepts the value but doesn't update the audible delay time.
Workaround: Anytime Delay Time is sent, I also send bit 6 of the Delay Separation byte (which is always zero, so it's a harmless message).

Bug: Partial addressing is not accepted by the amp if trying to send 7 bits (it only handles up to 6). One of those < vs. <= blunders (D'OH!).
Workaround: Delay Separation is the only likely candidate, and it only goes 0-25, so 5 or 6 bits will do the trick.

Bug: When programming the PFC4 Tap Function with a partial poke of the high nibble, the amp reloads the EFX mode status bits from the original recalled program. It's better to leave them be.
Workaround:I read the status bits first, then re-send them after I send the Tap Function. This undoes the change at the amp.

Bug: When changing the modulation effect to flanger via sysex, the two tweak values are not set correctly by the amp (which also sends these wrong values back to the PC.
Workaround: I send the correct values to the amp after the selection, and ignore the wrong values coming back from the amp.

Back to top


Visitor #