User Tools

Site Tools


GM Arts MFC for BJ Devices TB-12

versions 1.1, 1.5, 2.1 and 2.2:
download here


I have written a few versions of firmware for the BJ Devices TB-12 MFC. Here are the main features:

  • Total of 125 patches (25 banks each of 5 patches)
    • Each patch can send any MIDI patch number
    • Patch selections in each bank can control the four TB-12 relays^
    • Each patch can set effect states
    • Any MFC bank can be selected with a maximum of 2 presses in BANK mode
  • 10 effects, including Tap (these are CC messages, often referred to as “IAs”)
    • Effects can be toggles, momentary and can operate normally, in reverse, or on press or release only
    • Each effect can send up to two CC messages with any CC value for off and on states
    • One of the CC messages can be used to set the four relay states
    • Tap can send additional CC messages after a preset number of presses
    • Toggle effects can be persistent
    • Toggle effects can belong to up to 4 mutually exclusive groups^
    • Effects can control the four TB-12 relays
  • Patch backtracking, including the ability to backtrack effect states and patch bank^
  • 2 pedals are supported, each with an optional off/on effect at heel-down (for example, turn on a wah effect, or turn on a tuner at minimum volume). Built-in pedal calibration.
  • “Pedal panic” option to send configured pedal resets and disable pedals in case of pedal hardware failure^
  • One of 6 pairs of “custom” CC messages can be selected to be sent after each patch change (for example, set an ambient reverb level, or select a patch scene)^
  • Axe-FX II can automatically display tuner, and can backtrack tempo*

^ versions 1.1 and 2.1 only
* version 2.1 only

Installing Firmware

NOTE: This firmware is for the BJ Devices TB-12 model only !!!

  1. If you don't have it already, you'll need software for updating BJ Devices firmware, called “chip45boot2 GUI” which you can download here. This software is used to upload GM Arts firmware and settings.
  2. Download GM Arts firmware using the link at the top of this page, and find the version of firmware you want. These files have a .hex extension. Then use chip45boot2 GUI to send the hex file to your TB-12 as described at the end of the TB-12 manual.
  3. Restart your TB-12 and if you have pedals connected, you should calibrate them - see below
  4. Load your settings
    1. You can use the PC Editor (sorry, Windows only) to create your own settings file with a .eep extension. This file is also loaded into your TB-12 with chip45boot2 GUI. The editor uses Microsoft .NET version 4.6, so if you don’t already have it, you can get .NET here
    2. Or if you’re a programmer, you may wish to modify the source files with your own default settings and any functionality changes you want, then build and load your own firmware. There's more information on this process here.


Most of the time you will use PLAY MODE:

LCD Screen view in PLAY MODE:

Moving Between Modes

There are 3 modes: STARTUP mode, PLAY mode and BANK mode:


STARTUP mode is identified by the 5 patch LEDs chasing.

Footswitches 7 to 11 select your first patch in the current bank, and goes to PLAY MODE. Footswitches 12 goes to bank mode, where any one of 25 banks can be selected.

Footswitches 1 to 6 can optionally select a pre-configured pair of custom CC messages to be sent after each patch change. This can be used, for example, to set an ambient reverb level, or always select a patch variation such as a scene on the Axe-FX. The change is previewed, and can be de-selected if not required.


Bank mode is identified by the Bank footswitch 12 LED flashing.

There are 25 different banks, separated into groups A, B, C, D & E. Each of these groups has 5 banks numbered 1 to 5. So banks are numbered A1, A2, A3, A4, A5, B1, B2, …, D4, D5, E1, E2, E3, E4, E5. Selecting a bank sets the bank for the next patch selection.

Any one of these banks can be selected with a maximum of two presses:

  • Footswitches 1 to 5 select a group A to E. Select this first when changing banks.
  • Footswitches 7 to 11 select a bank number 1 to 5, and take you back to the previous mode.

Footswitch 12 returns to the previous mode without changing bank.

Once a patch has been selected, footswitch 6 in BANK mode can be used to go to the bank containing the current patch.

More on PLAY Mode

Footswitches 7 to 11 select one of 5 patches in the current bank.

  • Pressing the current patch again will reset the patch to its initial settings (there are options to set initial effect states and which of them must be reset with a patch change). This allows you to reset current effect changes, backtracked or persistent effects.

Footswitch 12 can be configured to backtrack to the previous patch. Holding it down for about one second goes to BANK mode. If backtracking is not required, this footswitch goes to BANK mode immediately.

  • Backtracking can also apply the previous patch’s effect states and optionally go to the bank containing that patch

Footswitches 1 to 5 select effects (IAs) including Tap.

  • Effects can be toggles, momentary and can operate normally, in reverse, or on press or release only
  • Each effect can send up to two x CC off/on messages with any CC value for off and on states, or each effect can send one CC off/on message and set relay states
  • Tap can be set as a momentary footswitch (which might be all you need for tap), or can send additional CC messages after a preset number of presses after a patch change (and its LED turns on)
  • Toggled effects can be set as persistent to retain their state when changing patches (selecting the current patch always resets effect selections)

Footswitch 6 is for FX shift (LED flashes when shifted) so that footswitches 1 to 5 select an additional 5 effects.

Pedal Calibration

This process must be performed to set your pedals to work properly with the MFC. Once set, you would not usually need to do it again until you replace a pedal.

How it works

Press [SETUP] to show the start screen above, with a flashing cursor under the pedal number. You can press [UP] or [DOWN] to select the pedal you want to calibrate. The press [ > ] to start and show the screen with pedal values. This screen briefly shows the previous pedal minimum and maximum values, then shows current values.

Move the pedal throughout its range a few times, from heel down to toe down. You will see the minimum, current and maximum values change as you move the pedal. Press [ < ] when finished.

If you have another pedal, press [UP] to select it and calibrate that the same way.

When finished, press [OK] to permanently save your pedal calibration and restart the MFC, or press [NO] to exit without saving changes.

Pedal Panic

(versions 1.1 and 2.1 only)

Up to two pedals can be connected. They are enabled by setting their CC number to something other than “NONE”.

But pedals are subject to failure or temperamental behaviour due to scratchy pots, internal failures or even connecting lead problems.

The quick fix to disable all pedals is to press [LOAD OK] twice - you could even do this in the middle of a solo:-)

How it works

Pressing [LOAD OK] shows the LCD screen above, with a flashing cursor under “BOTH”. You can press [UP] and [DOWN] to scroll through different choices of which pedals to disable (BOTH, NONE, PEDAL 1, or PEDAL 2).

Press [OK] again to send a configured value for the disabled pedal(s) - for example, send maximum volume for a faulty volume pedal, and to disable the pedal(s). If pedals are not disabled, they will be re-enabled.

This is a temporary change only – configured settings will be used next time the MFC is restarted.

Press [SETUP NO] to exit this screen without making changes.

A Simple MFC

The above descriptions apply to firmware versions 1.1 and 2.1.

Version 1.5 is a simple MFC with only one mode. It's also an easy version for programmers to expand to meet your own needs.

  • Footswitches 7 to 11 select one of 5 patches in the current bank
  • Footswitches 1 to 5 select 10 effects (IAs) including Tap. These can be toggles or momentary and can operate normally, in reverse, on press or release only, and can send any value for off and on.
  • Footswitch 12 is bank-up and footswitch 6 is bank-down.
  • Hold down footswitch 6 for about a second to toggle FX-Shift. LED 6 flashes when shifted, when footswitches 1 to 5 select an additional 5 effects.

Development Ideas

I programmed this pedal to work the way I want. BJ Devices offer development tools to allow you to build a MFC the way you want. You can also use my code as a stating point for your own design. Here are some modifications you may wish to consider:

  • Edit screens for settings would be useful but will require a considerable amount of effort. I already have the settings I use in code as defaults, and programmers can do the same to build their own firmware. I have also provided a PC Editor that saves EEP settings files that can be loaded into your TB-12.
  • MIDI MSB and LSB banks are currently global, however, you may want your MFC to be able to set these per MFC bank, or per patch.
  • This version needs you to keep effect states aligned with your patches, although I use it to set patch states for effects that make significant tone changes. Others prefer the opposite approach where the device tells the MFC which effects are on and off, and there are sample files from BJ Devices showing how this can be done with devices such as the Axe-FX and Kemper.
  • Likewise, some players like to see patch names on their MFCs. I only use a few patches so the LEDs are all I need, but again, the sample files from BJ Devices show how this can be done. Or you may wish to allow users to enter their own patch and bank names directly into the MFC.

Version Details

There are 4 current firmware versions and a PC settings editor. My source code and editor can be downloaded and all feedback is welcome to

  • version 1.1 – a sophisticated generic MFC for all MIDI devices (MIDI OUT only)
  • version 1.5 – a simplified generic MFC (MIDI OUT only)
  • version 2.1 – same as version 1.1 with support for Axe-FX II
  • version 2.2 – same as version 2.1 with a MIDI message library

PC Editor

You can modify settings for these versions with the program GM Arts EEP (sorry, Windows only). The editor saves .eep files that can be loaded into your TB-12 with the same software used to upload firmware.

Compare Versions

All versions have:

  • 25 banks of 5 patches (total 125 patches)
  • 10 effects per patch including Tap
  • Each effect can send 2 x CC (IA) messages, or 1 x CC and settings for the 4 x TB-12 relays
  • Effects can be momentary or toggle, have any off/on value, can be persistent and more
  • Support for 2 x pedals with built-in calibration

Versions 1.1 and 2.1 have additional functions:

  • Patch backtracking with options to backtrack effect states and bank selection as well
  • A startup mode allows preselected custom messages to be sent after each patch change
  • Bank mode allows any bank to be selected with a maximum of 2 presses
  • TB-12 relays can be set per MFC bank
  • Effects can belong to any of 4 mutually exclusive groups
  • Pedal “panic” option to temporarily disable faulty pedals quickly

Version 2.1 adds:

  • Supports MIDI-IN to automatically display the Axe-FX II tuner on the TB-12 screen
  • Tempo backtracking for Axe-FX II

Version 2.2 adds:

  • A small MIDI message library that can be used …
  • for patch selection, with settings per-bank
  • instead of the first CC message for effects
  • instead of custom messages


There are no known bugs in the firmware with the settings I use. But there are hundreds of settings (which means billions of combinations) and there's only one of me, so I can’t make any guarantees. I’m keen to fix any bugs so please let me know at

Settings in Detail

About Patches and Banks

The MFC has 125 patches as 5 patches per bank in 25 banks. Banks are displayed as A1, A2, A3, A4, A5, B1, B2, B3, … , D5, E1, E2, E3, E4, E5. A patch displays as 1 to 5, so for example B3-2 means patch 2 in bank B3.

About Effects

The MFC supports 9 effects plus Tap (which can be used as a momentary footswitch if Tap is not required). It will be helpful to list the effects that you plan to use when making settings.

Patches and Effects Together

Normally patches are created with some effects on and some off. And of course when you select a patch you want to see the initial effect states on your MFC. A common approach is to use an additional MIDI connection so your device can tell the MFC what’s on and what’s off. The TB-12 is capable of doing this, and there is sample code showing how this can be done with devices such as the Axe-FX II and Kemper.

I use a different approach where the MFC controls which effects are on and off when selecting a patch. Each patch has its own settings for effect states, and any or all effects can be set to send their effect state after a patch change. I find this works well for me, when I save patches sometimes with effects on that should be off and vice-versa. No unpleasant surprises at the gig! But the beauty of the BJ Devices MFCs is that we can each program them to work however we want.

MIDI Settings

MIDI Channel
sets the MIDI channel (1 to 16) for sending PC (patch changes) and CC (effect) messages

MIDI Program Bank MSB
MIDI Program Bank LSB
Some devices allow multiple banks of 128 patches. These banks are selected with MSB and LSB numbers (0 to 127) and are sent immediately prior to a PC message.

Patch Settings

Each patch has the following settings:

MIDI Program Number
A program number from 0 to 127. Many devices show these as numbers 1 to 128, so if that’s the case, use a number 1 less for your setting here. If you wish, more than one MFC patch can send the same MIDI program number. This may be useful with different effect settings.

Effects F1 to F9
These should match the state of effects in the selected patch. Settings here merely set the initial state of effects when a patch is selected. There are settings in the effects section to force these effect states to be sent so that the MFC controls which effects are selected in each patch.

Note that even a momentary effect footswitch can be set as on here. In that case, the LED shows the effect is on, and when pressed it sends the effect “off” value; when released it sends the “on” value.

Bank Settings

(versions 1.1 and 2.1)

Each bank can set any of the 4 relays to “no change”, on or off. When a relay is on, its jack connection is shorted to the jack sleeve.

Effect Settings

There are 9 effects F1 to F9 which can be:

  • Toggles (press once for on, press again for off)
  • Momentary (press for on, release for off)
  • Reversed (set these with swapped on and off values)
  • Single press (set as momentary with an on value but no off value)
  • and more

The Tap footswitch is a momentary footswitch and can be inserted anywhere in the order of footswitches F1 to F9.

The left 5 footswitches in the bottom row (numbered 1 to 5) are used for effects, while an FX-Shift footswitch gives access to the additional 5 effects. For example, if we place Tap on un-shifted footswitch number 5, effects would be as follows:

  • Un-shifted switches 1 to 4 are for F1 to F4
  • Tap is on un-shifted footswitch 5
  • Shifted footswitches 1 to 5 are for F5 to F9

In addition to the 9 effects and Tap, there are other effects available:

  • Tap FX - you can configure additional Tap messages after a certain number of tap presses after a patch change. This is useful if you want to switch effects on after you’ve used Tap to set a tempo. This also has off values that are used when this is turned off by another effect in the same mutually exclusive group (see below for more information).
  • Heel FX – each pedal can also switch an effect when at the heel position. This can be used, for example, to switch on a wah effect automatically on a pedal that uses a spring to return to heel-down when you take your foot from the pedal. Another creative use is to switch a tuner on when a volume pedal is off at heel down.

Each of the above effects can:

  • Send one CC message with any value for “off” and/or any value for “on”
  • Send two CC messages with any off/on values
  • Send one CC message and set all four TB-12 relay states
  • Set the relay states only

Where Are My IAs?

IA is a term typically used for a MIDI message used to toggle an effect on and off. There is no such thing as a MIDI IA message, so I use the correct term: CC for control change. This is also more applicable to my firmware that can send any value for off and on.

Each effect has the following settings:

CC Numbers
A CC message has a number and a value. CC numbers are typically used for different purposes. For example CC number 7 is commonly used for volume control, with CC values from 0 to 127 setting volume from off to maximum. CC numbers 0 and 32 are reserved for MIDI patch banks and are not available in my editor or MFC. Any other number from 1 to 31 and 33 to 127 can be used.

CC Values
You can set any number from 0 to 127. Because the MFC allows you to use any value for off and on, you can:

  • Set value 0 for off and 127 for on – this is the most common setting
  • Swap off and on values to operate effects in reverse - for example, use a value of 127 to turn a tuner on when a volume pedal heel effect turns off
  • Use certain values to set a level – for example an effect footswitch could switch between different volume levels for a solo boost
  • You might choose to send an ”on” message but no “off” message or vice-versa. This is useful for Tap messages, and where you have more than one footswitch controlling parts of the same effect.

Effect Types
Each of effects F1 to F9 can be set:

  • As toggles or momentary
  • To always be sent after a patch change (to force the patch effect states to be sent to your device)
  • As persistent, meaning that their states will be retained when switching patches

If you use the Relays option, each effect can set any of the 4 relays to “no change”, on or off. When a relay is on, its jack connection is shorted to the jack sleeve.

Mutually Exclusive Effects (versions 1.1 and 2.1)
Mutually exclusive (ME) effects work so that only one effect is on at the same time. For example, if you include phaser and flange effects in a ME group and phaser is on, turning the flanger on will automatically turn the phaser off.

The MFC has four ME groups which you could use, for example, for modulation effects, drive/boost effects, delay effects and Axe-FX scenes. You can even include effects in more than one ME group if you want to get creative.

ME groups don't control which effects are on when patches are selected (or backtracked). They only turn effects off when another effect is turned on in the same group.

ME groups apply to toggled effects and also Tap FX (where you specify a number of Tap presses to turn on Tap FX).

Note that if effects F1 to F9 don’t have an off value, then once they’re on, they’ll lock on until another effect is selected in the same ME group. Even if you press the same effect, it will just send the “on” value again. This works well with mutually exclusive groups where you use several footswitches to send different CC values such as Axe-FX scenes, because you can always see which one is currently selected.

Pedal Settings

Note that pedals should be calibrated on the MFC before use. See the usage guide for instructions.

CC Number
Each pedal has a CC number from 1 to 31 or 33 to 127. If you don’t set a CC number then the pedal is disabled.

CC Value to Send After Patch Selection
When changing patches you can send a specific value or even send the last pedal value for smooth pedal operation between patch changes.

% Dead Zone Under Toe and Heel
Pedals often have rubber stops under heel and toe and possibly footswitches as well. All of this means that there’s not a precise start and end to pedal travel. You can set from 0 to 25 percent of pedal travel to ensure that the pedal minimum and maximum values are always guaranteed as you get near the pedal extremes.

CC Value to Send if Disabling Pedal (versions 1.1 and 2.1)
There is a pedal panic option to quickly and temporarily disable faulty pedals. When disabled, the CC Value you enter here will be sent. For example, this could send maximum volume on a faulty volume pedal. See the usage guide for instructions.

Set Full Pedal Range
Each pedal should be calibrated on the MFC, however, you can set them here to operate over the full range if you know your pedal operates from fully off to fully on (many don’t).

Custom Settings

(versions 1.1 and 2.1)

When the MFC is first powered on you are in startup mode until a patch is selected. In startup mode you can press one of the bottom-row 6 footswitches to select custom CC messages to be sent after each patch change. These messages can be used, for example, to set an ambient reverb level to suit your playing environment, or select particular Axe-FX scenes to suit different gigs.

There are 2 x CC messages that can be sent, and the second message can be used to set relay states instead.

CC Number
Can be from 1 to 31 or 33 to 127.

Off Value
When you select the custom messages on footswitches 1 to 6, the message is sent so you can hear the change it makes. If you toggle a selection off, this “off” value is sent. It is only used in startup mode for preview purposes, so should be set to a value that represents no custom message being sent.

Values #1 to #6
One of these values can be sent after each patch change by selecting the corresponding footswitch in startup mode.

For the “Off” setting and for each custom message #1 to #6, you can set any of the 4 relays to “no change”, on or off. When a relay is on, its jack connection is shorted to the jack sleeve.

Send Custom Messages Last
The custom messages can be sent before or after CC reset messages that follow a patch change.

Other Settings

Tap Footswitch Settings

Tap Footswitch Number
The Tap footswitch is inserted into the order of F1 to F9 effects by selecting which footswitch is used for Tap here.

Tap Presses for Tap FX
In addition to the normal Tap messages sent when pressing and releasing the Tap footswitch, it can send additional messages after a certain number of Tap presses after a patch change. You can set this off, or from 1 to 9 presses.

After Patch Change Settings

Turn FX-Shift Off
Select this if you want to ensure that FX Shift is off after a patch change.

Wait After Patch Change
Some devices may need a small amount of time after a patch change before processing additional CC messages.

Backtracking Settings (versions 1.1 and 2.1)

Use Backtracking
This allows you to toggle between the current and previous patch.

Backtrack Effect States
When backtracking with this option, the effect states of the previous patch are also set. Another use of this option is that by reselecting the current patch and setting different effect states, you can then use backtracking to toggle between different effect states in the same patch!

Backtrack Banks
This option sets the MFC bank with the backtracked patch.

Axe-FX II Settings (version 2.1 only)

Show Tuner
This option shows the tuner automatically on the lower LCD row.

Axe-FX Model
This is required if you wish to use the Tempo Backtracking option.

Tempo Backtracking
This option is available when Backtracking is enabled. It ensures that when you backtrack to the previous patch, the last tempo you set in that patch is reset. This is useful for delays synchronised to song tempo.

MIDI Message Library

(version 2.2 only)

One for the MIDI geeks!

Up to 15 messages can be set with a total of up to 255 bytes. Each message can be any type of MIDI message, such as system exclusive, CC, PC, note off/on, etc. Each of the 15 messages can even chain multiple messages. For example one of the messages could be a system exclusive followed by a CC!

These 15 messages can be configured for use after patch selection with settings for each MFC bank. They can also be used instead of the first effect CC message, or instead of the first custom CC message.

The default settings for the library is that it is empty. To use messages, they must be configured in the PC editor, then saved as an .eep file and loaded into your TB-12.

gm_arts_tb-12_v1.txt · Last modified: 2017/06/28 00:07 (external edit)