FootSmart

MIDI devices







Introduction

Devices are a major difference between the Morningstar MC6Pro on its own vs. the MC6Pro plus FootSmart. On its own, there is not much support other than the MIDI channel portion of Controller Settings. With FootSmart, devices are entities in their own right. They have names, are strongly tied to a MIDI channel, have an associated set of PC and CC messages, and have properties (including enable/disable messages and startup messages).

Instead of remembering CC 42 1 on channel 4, you just say "H9 Chorus type Classic".

Syntax

The Devices section is the keyword devices with a list of devices as a value.

A device is a set of fields:

A message (including enable or bypass messages) is a set of fields:

A message group is two fields:

Semantics

A device has a name (used in building message names (see below)), and the MIDI channel (a value from 1 to 16). Each device should have a set of messages defined - these are PC, CC or Delay messages. These messages must have a name. A device can also have an enable and bypass message. They are also PC or CC messages, but should not have a name defined. Instead the enable name is automatically set to Enable and the bypass name is Bypass. This is explained further in the bypass preset.

PC, CC and Delay messages can have a setup or followup field. This is the name of another message that is executed first (or after), to set up (or followup) for the current message. A common use is when using the PC message to select a preset, to have the setup field choose a bank that the preset exists in. Or if a CC messages needs a time buffer, using the followup field to specify a delay message.

The device can have a set of initializing messages. These are executed on power on by making them Bank 1 messages with trigger On Bank Entry (execute once).

The device can have a set of group messages. A group message is a message that consists of several other messages. They are executed in left to right order. Each group is assigned to a preset in an unused bank (added to the end of the bank list) and is executed via the engage preset MC6Pro message. This allows much longer scroll presets.

Message Names

Message names come in two flavors: short and long. The short version of the message name is the text that appears in the message definition. The long version of the message name is the device name, a space, and the short name. For example, Enable is a short name, and Iridium Enable is a long name. The short name is used within the device definition, and the long name is used in the banks section.

Examples

Example 1:
This is an abbreviated version of a Strymon Iridium pedal, for demonstration purposes. See the second example for a full implementation.


            devices:
              # The Strymon Iridium amp-in-a-pedal
              - name: Iridium
                channel: 1
                enable: {type: CC, number: 102, value: 127}
                bypass: {type: CC, number: 102, value: 0}
                messages:
                # Choose a Iridium preset
                - { name: Set Bank 0, type: CC, number: 0, value: 0 }
                - { name: Set Bank 1, type: CC, number: 0, value: 1 }
                - { name: Set Bank 2, type: CC, number: 0, value: 2 }
                - { name: Preset 0, type: PC, number: 0, setup: Set Bank 0 }
                - { name: Preset 128, type: PC, number: 0, setup: Set Bank 1 }
                - { name: Preset 256, type: PC, number: 0, setup: Set Bank 2 }
                # Choose the amp type
                - {name: Deluxe Reverb, type: CC, number: 19, value: 1}
                - {name: AC30, type: CC, number: 19, value: 2}
                - {name: Plexi, type: CC, number: 19, value: 3}
                # Level
                - {name: Level, type: CC, number: 12, value: 0}
                - {name: Clean Level, type: CC, number: 12, value: 106}
                - {name: Burry Level, type: CC, number: 12, value: 40}
                - {name: Distorted Level, type: CC, number: 12, value: 32}
                - {name: Plexi Level, type: CC, number: 12, value: 32}
               # Drive
                - {name: Drive, type: CC, number: 13, value: 0}
                - {name: Clean Drive, type: CC, number: 13, value: 0}
                - {name: Burry Drive, type: CC, number: 13, value: 70}
                - {name: Distorted Drive, type: CC, number: 13, value: 96}
                - {name: Plexi Drive, type: CC, number: 13, value: 127}
                groups:
                  - name: Clean
                    messages: [Deluxe Reverb, Clean Drive, Clean Level]
                  - name: Burry Rhythm
                    messages: [AC30, Burry Drive, Burry Level]
                  - name: Distorted Rhythm
                    messages: [AC30, Distorted Drive, Distorted Level]
                  - name: Distorted Plexi
                    messages: [Plexi, Plexi Drive, Plexi Level]
                initial:
                  [Enable]
This shows several features:

Example 2:
For a fully functional Iridium definition (and a couple of other devices), see my config file.

Future Direction

In the future, I plan for this to be broken into two sections:

For example, the Eventide H9 is a versatile pedal, and you may own two of them. With the current implementation there would be redundancy in the two device entries in the config file, and by having device characteristics this redundancy could be eliminated. Device characteristics can be shared publicly, making it much easier to get started.