Skip to content
/ mTroll Public

mTroll is the software MIDI control engine part of a hybrid hardware/software MIDI foot controller, but can be used standalone on Windows.

License

Notifications You must be signed in to change notification settings

sean-e/mTroll

Repository files navigation

mTroll Hybrid MIDI Controller

mTroll is the software portion of a hybrid hardware/software MIDI foot controller. mTroll is the MIDI control engine that I use with my monome-based foot controller. mTroll outputs MIDI in response to input from the monome or the gui. mTroll can be used standalone without hardware as a virtual foot controller. mTroll has native support for Axe-Fx processors with round tripping of effect block bypass and channel states, scene control, and looper block control. mTroll has native support for displaying global and local parameter state of Echoplex Digital Pro and Echoplex Digital Pro Plus devices. mTroll supports listening for MIDI CC state changes.

Original Project Homepage

Software Feature Overview

screenshot
(click to enlarge)

Patches

  • Unlimited patch count
  • Patches can send multiple MIDI messages of any length
  • Patches support Normal, Toggle, Momentary, Sequence or patchListSequence modes
  • Normal mode sends one of set MIDI messages when switch pressed, and a different set when another Normal mode patch is selected
  • Toggle mode sends one set of MIDI messages when switch pressed, and a different set when pressed again
  • Momentary mode sends one set of MIDI messages when switch pressed, and a different set when released
  • Sequence mode increments through a list of messages to send when a switch is pressed repeatedly (a toggle with more than 2 sets/states) (Dr. Z )
  • patchListSequence mode increments through a list of other patches when a switch is pressed repeatedly
  • Patch state is retained across bank loads
  • Meta-patch for resetting all patches loaded in a bank
  • Meta-patch for loading another bank
  • Native support for Axe-Fx processors (when used with MIDI In)
  • Native support for displaying global and local parameter state of Echoplex Digital Pro and Echoplex Digital Pro Plus (when used with MIDI In)

Banks (Pages)

  • Banks are basically the same as pages as implemented in full-featured MIDI foot controllers that started being produced after 2010 (i.e., every bank is an explicitly defined page)
  • Unlimited bank count
  • Banks are simply mappings of patches to switches (physical or virtual)
  • Banks can address more switches than are physically present on input hardware
  • A single patch can be used in multiple banks or on multiple switches in the same bank
  • Multiple patches can be assigned to a single switch in any given bank (the first patch assigned to a switch in a bank owns the expression pedals, switch label and indicator)
  • Banks can be configured with load and unload patch states (optionally activate or deactivate particular patches at bank load or unload)
  • Support for default mappings (for instant access switch creation)
  • Support for defining exclusive switch groups per bank (for radio button functionality)

Expression Pedals

  • Support for four expression pedals
  • Each pedal can be configured globally and/or locally per patch
  • Supports minimum and maximum transmission values, value inversion and manual pedal calibration
  • Each pedal can be configured for one or two controllers (per pedal, up to 2 globals and 2 per patch locals)
  • Only one patch at a time has control of the pedals (in addition to the global control which can be disabled per patch)
  • Support for manual calibration
  • Support for virtual toggle footswitches at toe and/or heel positions
  • Support for multiple sweep response curves

Configuration

  • Patch and bank settings are stored in plain text XML file (example)
  • UI is configured via an independent plain text XML file (example)
  • Same data file can be used with different UI files for display on different resolutions or form factors

Other

  • Can be used without input hardware (using computer keyboard, and on-screen buttons and indicators)
  • Support for multiple MIDI out devices (one MIDI out assignment per patch)
  • Supports independent labels for each switch/button (Dr. Z )
  • Supports secondary functions per switch via long-press
  • User-definable LED colors

Download

application software

Latest mTroll Win32 application installer is available on the releases page.

Usage notes here.

To use with a monome board, you must install the FTDI D2XXX drivers (not necessary for operation without a controller).

Developer Notes

The core of the app is written in cross-platform C++. The GUI and hardware device support (MIDI out and monome) were originally implemented for Win32 (using WTL for the GUI). It has since been ported to Qt 5.15. The MIDI In/Out device support is only implemented for Win32 at this time.

The GUI and hardware are accessed from the core through core-defined interfaces, so a Mac or Linux developer will be able to "fill in the blanks" using whatever native OS APIs are available without having to modify the core.

The application uses TinyXML for parsing of the XML data files (licensed under the zlib/libpng License). (TinyXML was being used in the WTL version of the app, before the Qt port.)

The monome uses a simple serial protocol over USB (by way of an FTDI serial to USB module). The application communicates with the monome using the FTDI D2XXX API.

The repository includes the modified monome firmware and TinyXML source.

Source directory hierarchy:

./Engine
Cross-platform interfaces, engine control logic, data file loaders, and patch and bank implementations
./midi
MIDI implementation (Win32 only at this time)
./mTrollQt
Qt application and interface implementations
./Monome40h
FTDI and monome interfaces, and monome serial protocol helpers
./Monome40h/qt
monome interface implementation in Qt
./setup
project for building Win32 installer using Inno Setup (https://jrsoftware.org/isinfo.php)
./tinyxml
TinyXML source (http://tinyxml.sourceforge.net/)

About

mTroll is the software MIDI control engine part of a hybrid hardware/software MIDI foot controller, but can be used standalone on Windows.

Topics

Resources

License

Stars

Watchers

Forks