mTroll Home

mTroll MIDI controller process milestones

Changed expression pedal status message display.
Added application manifest for Windows 10.
Renamed configuration bank\patchmap to bank\switch (old name still supported for backwards compatibility).
Updated to Qt 5.10.1 resulting in ~50% reduction in size of installer.
Modernized some of the code.
Fix for inadvertant toggle patch state changes when processing exclusive group switches (if a patch is assigned to multiple switches in the group, or if a switch is pressed multiple times).
When pressing a button, patch name is no longer displayed for inactive patches in main display window. Patch number continues to be displayed but without name since it is confusing to turn off a patch and then see its name show up in the main display.
Fix for RefirePedal command failing to work as expected when activating a patch (RefirePedal didn't work when transitioning from one patch to another).
Prevent propagation of switch groups from default bank if any buttons in target banks are already assigned to another group (banks should define entire switch groups rather than rely on partial propagation).
Renamed the "Time Display" page to "Time + utils."
Elapsed time is now calculated from application start up rather than from file load (so reload does not reset timer).
Added command to reset the timer manually.
Added support for pause/resume of elapsed time.
Added multiple application exit commands to the "Time + utils" page; 1) exit application, 2) exit and sleep, 3) exit and hibernate
Automatically sync Axe-Fx effects/state at startup.
Fix persistentPedalOverride failure when a PatchListSequence is activated.
Added new patch type persistentPedalOverride that is a toggle patch used to reassign expression pedals such that the reassignment sticks until the patch is toggled off or until another persistentPedalOverride patch is activated. It overrides pedal assignments made in subsequently activated patches that are not of type persistentPedalOverride.
Secondary switch functions no longer inadvertently deactivate expression pedal settings of primary switch functions.
Updated for Axe-Fx II firmware version 18 (Rotary X/Y).
Fixed LED mapping after loading a bank via the Bank Direct Access command/mode.
Fixed another case where secondary function was not properly displayed in the main display in certain circumstances.
Added sysex ID support for Axe-Fx II XL and XL+ (untested).
Added 1280x800 ui config for use on Dell Venue 8 Pro.
Updated Main display window text formatting of bank patchmaps for more consistent columns when using fixed-width font.
Fix for font names with spaces not being read from ui config files (see tinyxml QueryValueAttribute() vs Attribute()).
Fixed case where loadbank in a secondary function caused update to switch label text after new bank was loaded.
Made secondary functions update main display (if bank is still loaded) even if no action is taken, to note that the new function state was registered.
Support for width and height overrides in ui config inside of switchAssembly on the individual sub-elements.
Support for putting vOffset and hOffset in the switchAssemblyConfig elements rather than duplicating for every switchAssembly element.
Changed "Mode select" to "Menu" and Mode button to Menu button.
Deprecate EngineMetaPatch patch type in favor of PatchMap "command" attribute.
Deprecate PatchMap "name" attribute in favor of "label" attribute.
MIDI port in localExpr blocks now use the midi port of the specified device if port is not explicitly set.
Support for optional name on PatchMap entries to eliminate need for separate name placeholder patches.
All LEDs turned off before releasing monome device.
MidiDevice port binding routine supports multiple attempts with different names (create multiple entries for the same port each with a different device name).
MidiDevice port binding doesn't bind same port once bound successfully.
GlobalExpr now supports port binding (port is still required on parent expression tag for default binding of GlobalExprs that don't explicitly override port).
Axe-FX support: the entire main display is updated by Axe-FX preset name and scene number instead of appended to text already present.
Axe-FX support: 'LED' UI of present but inactive effect is dimmed (in software UI, not hardware).
Axe-FX II support: inverted X/Y LED handling such that X is LED off (dimmed in software UI) and Y is LED on.
Added support for specifying computer MIDI device by name rather than OS index for portability of config file to different systems.
Added menu command to Suspend/Resume MIDI device connections.
Added elapsed time to the time display engine mode.
Improved support for Axe-Fx II scenes.
Added support for Axe-Fx II looper modes.
Displays Axe-Fx II preset number when name is displayed.
Created installer which includes all dependencies and sample files.
Moved samples files to .\config sub-directory.
Created config file for Axe-Fx II.
Added support for a new meta-patch: ResetExclusiveGroup.
Buttons support long-press and momentary press when invoked via touch (previously touch caused immediate press and release events).
Menus displayed in alternate style more suitable for fingers if touch input is detected.
Moved to Qt 5.0.2 (unfortunately causing significant increase in size of dependencies).
Fixed situation where some LEDs in an exclusive switch group did not turn off when they should have.
Fixed propagation of exclusive switch groups defined in the default bank to other banks where applicable (when switches are not otherwise redefined in the target banks).
Added support for Axe-Fx II scenes (introduced in firmware version 9).
Normal-type patches are deactivated, when stepping through a PatchListSequencePatch.
Fix for crash when loading/reloading configuration in some circumstances.
Fix for incorrect initial size of window after refresh/reload when maximized.
Fix for bug where switch release was routed to a different bank than switch press if the press caused the load of a different bank (bank loads now occur on switch release instead of press).
Display and switch LEDs update when changing presets via Axe-Fx II front panel if using recent versions of firmware that send notification of preset loads.
Added Axe-Fx II support.
Created patchListSequence patch type that steps through a list of patches.
Added secondary function switch support accessed via long-press of switches (defined in a PatchMap of a Bank).
Mode switch invokes Backward metapatch on long-press.
Updated LED illumination of mode, next and back switches.
Fixed inadvertent change of LED state of first LED.
Fixed handling of loadState/unloadState/override/sync attributes (loadState was also inadvertently being set for unloadState).
Improved timing of sync after AxeFxProgramChange.
Added interactive control change engine mode.
Added support for Axe-Fx Feedback Return block bypass synchronization (via external ctrl modifier).
Fixed off by one channel error when defining local expression pedal using implicit device default channel (as opposed to explicit channel).
Fixed occassional expression pedal status text corruption.
Created project and uploaded source to SourceForge.
Added support for Axe-Fx processors (via special device name, new patch types, patch commands and metapatch).
Allow expression pedals to be active while in some engine modes other than the default bank mode.
DeviceChannelMap supports device to MIDI port binding.
Status updates to main display by expression pedals are prepended to existing text rather than overwriting it.
Expression pedals are bound only to the first patch if there are multiple patches assigned to the same switch.
Patches can optionally define a default channel for all commands (that can be overridden on individual commands).
Added a Sleep patch command.
PatchMap accepts empty patch number in order to defeat a default mapping without actually overriding it.
Mappings in PatchMaps have new optional override and sync attributes.
Added time display engine mode.
Added interactive program change engine mode.
Switch mappings during Mode Select are customizable.
Added support for direct access to any mTroll bank during mode select (reducing need for the LoadBank metapatch).
Made the recall, backward and forward metapatches available during mode select.
Reorganized default switches used in mode select.
Created new LoadNextBank and LoadPreviousBank metapatches that load the next/previous bank (without confirmation, in contrast to the Next and Prev commands of Bank Navigation mode).
Added support for spaces in button labels.
Made UI background and element frame colors customizable.
Updated default colors.
Fixed problem opening MIDI device during reload.
Added support for expression pedal response curves.
Added support for expression pedal virtual toggle footswitches at toe and/or heel positions.
Added interactive engine commands that are accessible from the hardware via engine mode select:
- toggle display of trace window (previously only available in the GUI)
- set ADC overrides (previously only available in the GUI)
- invert LEDs (previously only available via the config data file)
- test LEDs (previously only occurred during hardware handshake)
Fixed failure to load some elements that followed comments in XML files
Minor update to expression pedal jitter control.
Many changes to XML data files:
- Added support for multiple commands per patch group (instead of a single, long hex string per patch).
- Added support for simpler non-binary commands for ProgramChange, ControlChange, NoteOn, NoteOff (which can be used instead of midiByteStrings).
- Added support for new patch command: RefirePedal.
- Added config data file validation messages.
- Fixed crash loading malformed data files.
Improved expression pedal jitter control.
Fixed handling of interrupted USB reads which would cause occassional unknown command trace statements.
Added menu items to disable ADC ports/expression pedals independently of the config files. These items either let the file-defined state pass untouched, or override them to force the ADCs off. Useful if, for example, you load a config file that has defined ADC behavior but you don't actually have any pedals hooked up. The overrides are retained across file loads and sessions.
Added support for double byte expression pedal control changes (though the monome hardware only supports 1024 steps - at least it's an improvement over the 128 steps possible using a single byte control change) (use doubleByte attribute).
Fixed crash that occured when opening a config file with a bank that maps to a non-existent patch.
Created XSL file for nicer display of config files in web browsers (compare without XSL to with XSL).
Added "Toggle trace window visibility" command (Ctrl+T) that hides/shows the trace window and resizes the main display window appropriately.
A handful of changes resulting from experience on the Asus eee PC Model 900.
Added 1024x600 ui profile for 8.9" display.
Added auto-scrollbars to main display.
Previous builds apparently didn't work if Visual Studio 2008 wasn't installed due to the damn SxS manifest crap. It's addressed now but requires an update of the Qt libraries.
Qt build released.
Released source code.
User-defined banks can make patch mappings to the switches reserved for Next Bank and Previous Bank. The switches are still reserved in the alternate operating modes. You can now override and use the Next and Previous switches in none/some/all banks. If no mapping is specified, the switches default to Next and Previous functionality (to switch from standard Bank mode to Bank Navigation mode).
Finished port to Qt 4.4 including Qt-based monome client implementation. Now, a Mac or Linux developer will only need to write their own MIDI out implementation (and create their own makefile).
Started port from Windows-only WTL to cross-platform Qt 4.4
Added support for new meta-patches: Backward, Forward and Recall
Automatically disable screensaver and system sleep/shutdown timers while application is running if monome is found at startup (previous settings restored at exit)
Added support for exclusive switch groups (for radio button functionality)
Added support for a new meta-patch: Load Bank
Added support for inverse LED display (specified in the hardware node of the .ui.xml file)
Added support for instant access switches
After biting the bullet and ordering a firmware programmer, it arrived this week; tweaked the adc filtering/smoothing. Happy now.
Automatically loads last opened files at startup
Fixed flicker in the GUI
Made LED intensity user definable
Cleaned up GUI (removed unused default elements)
Added Raw ADC Value engine mode
Added first meta-patch: Reset patches in active bank
Started on this page
Worked out expression pedal calibration and load of pedal settings from file
Wired up the switches
Initial pass at expression pedal support
Wired up the LEDs
Finally got around to assembling the logic board
Fixed some bugs in the monome software framework, app now works with the board
My neighbor, Brian Barron, drilled extra holes in the Ground Control Pro case
Met Josh Fiden at Voodoo Lab in Santa Rosa and scored a Ground Control Pro chassis - this was huge! Not being too handy with metal, without this the alternatives would have been: Many thanks to Josh and Harmony at Voodoo Lab!
Initial pass at FTDI and monome software support
Read about and ordered the monome logic kit after having looked at other USB bridge boards (like Phidgets, EleXol and CREATE USB Interface)
Initial pass at midi out device, UI and file loader implementation
Completed initial UI and got it all to compile
Completed first pass at engine control logic
Exhibits at Maker Faire provide inspiration and get the gears turning