A touchscreen-optimized MIDI controller application built with Python and PySide6.
- 8-button MIDI controller interface
- MIDI Learn functionality for easy mapping
- Support for Note, CC, and Program Change messages
- Configuration saving/loading
- Touch-optimized fullscreen interface
- Unstable MIDI device connections
- Configuration saving may fail unexpectedly
- UI elements sometimes become unresponsive
- MIDI Learn mode can get stuck
- Button mappings may not persist correctly
- Python 3.8+
- PySide6
- python-rtmidi
-
Create a virtual environment:
python -m venv .venv source .venv/bin/activate # Linux/Mac # or .venv\Scripts\activate # Windows
-
Install dependencies:
pip install PySide6 python-rtmidi
-
Run the application:
python ui.py
- Launch the application - it will open in fullscreen mode
- Use the top menu to configure MIDI devices and mappings
- Press buttons to send MIDI messages
- Press ESC to exit
- Click "MIDI" > "Select Devices" to choose your MIDI input/output devices
- Use the refresh buttons (⟳) to update device lists if needed
- Click OK to connect to selected devices
There are two ways to map MIDI messages to buttons:
-
MIDI Learn Mode:
- Click the "MIDI Learn Mode" button at the top
- Select a button to configure
- Send a MIDI message from your controller
- Click OK to confirm or Cancel to abort
-
Manual Configuration:
- Click "MIDI" > "View Note Mappings"
- Edit button names, input/output types, and MIDI numbers
- Supported message types: Note, CC, Program Change
- Configurations are automatically saved to
configs/temp_config.json
- Use "Config" menu to:
- Save current configuration
- Save as new configuration
- Load existing configuration
- Default configuration is loaded on first run
ui.py
- Main application codeconfigs/
- Configuration file storagedefault_config.json
- Default configurationtemp_config.json
- Temporary working configuration
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Raspberry Pi Integration: Plan to embed the application on a Raspberry Pi with a touchscreen for a portable and standalone MIDI controller setup.
- Foot Controller Support: Integrate a foot controller to allow hands-free operation, enhancing usability for musicians during live performances.
- Improved Stability: Address known issues with MIDI device connections and configuration management to ensure reliable performance.
- Enhanced UI Responsiveness: Optimize the user interface for better responsiveness, especially on lower-powered devices like the Raspberry Pi.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with PySide6
- MIDI functionality provided by python-rtmidi