Skip to content

natedreger/MidiMapper-Public-Beta

Repository files navigation

MidiMapper

VERY MUCH A BETA!

I built MidiMapper to be a one stop shop for controlling various devices using USB MIDI keyboards or pads. I'm running this as a daemon on a Raspberry PI 4 to provide a stand alone solution.

At it's most basic is a USB MIDI host to convert between USB keyboards and traditional 5-Pin MIDI. A 'thru' mode allows MIDI to pass directly from one device to another with minimal latency.

On a more advanced level MidiMapper allows keymaps to be created allowing note on commands to be converted to any of the following types:

  • MIDI NOTE_ON (with channel)
  • Program Change
  • OSC command
  • MQTT

MidiMapper also contains a builtin web interface for monitoring and setup.

Still To Do :

  • loop connection attempts
  • keymap needs to track channel and message_type
  • keymap edit same note on two devices
  • host management (reboot and shutdown)
  • Rotating logs
  • GUI for log management
  • Edit keymap via web interface
  • Edit settings via web interface
  • Change midi mode via web interface
  • Match mapping device control
  • remove lag from mode change
  • encrypt passwords in settings file

Known Issues to fix :

  • keymaps in activesettings getting corrupted (rework how gui gets the keymap)
  • keymaps don't reload on update
  • knowndevices error if file not exist
  • rescan midi I/O results in corrupt data upon next note (for now midi will be restarted)
  • remove mqtt publish all midi
  • i\o list not reloading on rescan\restart (settings not pushing???)
  • match device check on apply_settings
  • apply settings not right
  • keymap edit only works when output selected
  • quit dialog box triggers on cancel
  • settings['match_device'] getting set 'on' not true somewhere
  • web PC not sending in mapped mode
  • ValueError: 'dummy message' is not in list
  • match device not working
  • keymap gui not working

Future features to implement :

  • gui for wifi connection
  • note to GPIO
  • Channel Routing
  • Device to Device mapping
  • OSC to MIDI
  • Logs

Built using :

  • python-rtmidi
  • python-socketio==5.5.0
  • Flask==2.0.2
  • python-osc==1.8.0
  • Flask-SocketIO==5.1.1
  • python-dotenv==0.19.2
  • requests==2.22.0
  • simple-websocket==0.5.0
  • websocket-client==1.2.3

OSC input examples:

  • /MIDI/note_on/1/55/127
  • /MIDI/program_change/2/17
  • /OSC/host_machine.local/8000/Qlab/go

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors