A cross-platform tool built with .NET 8 for remapping MIDI drum notes between different standards and custom mappings. Designed for musicians and producers to adapt MIDI drum tracks for compatibility with various drum kits, DAWs, and hardware.
Includes both a CLI and a .NET MAUI GUI for easy drum MIDI remapping.
- Remap MIDI drum notes using customizable JSON mapping files
- Supports popular drum mapping standards (GuitarPro, StevenSlate, LogicPro, ProTools)
- Batch processing of MIDI files via CLI
- Modular architecture with Dependency Injection for extensibility
- .NET MAUI cross-platform GUI with drag-and-drop interface
- Export remapped MIDI files directly from the GUI
- Compatible with Windows and macOS via MAUI
- CLI supports Windows, macOS, and Linux
- Powered by .NET 8
- .NET 8.0 SDK
- Windows, macOS, and Linux (CLI only)
Pre-built binaries are available for Windows and macOS from the Releases page.
- Windows: Download the
.zipfile containing the.msixinstaller, extract it, and double-click the.msixto install. - macOS: Download the
.dmgfile, open it, and drag the app to your Applications folder.
No installation required on Windows other than running the installer. See the release notes for details.
git clone https://github.com/Abstractize/drum-midi-remapper.git
cd drum-midi-remapper
dotnet build
dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.middotnet build -f net8.0-windows10.0.19041.0
dotnet run --project src/GUI -f net8.0-windows10.0.19041.0dotnet build -f net8.0-maccatalyst
dotnet run --project src/GUI -f net8.0-maccatalystReplace GuitarPro, StevenSlate, and midis/test.mid with your desired mappings and MIDI file.
Run the tool with:
dotnet run --project src/CLI -- <SourceMap> <TargetMap> <InputMidiFile><SourceMap>and<TargetMap>: Mapping names (see Available Mappings below)<InputMidiFile>: Path to the MIDI file to remap
The --project src/CLI option specifies the CLI project.
Mappings are stored as JSON files in the Services/Resources/Maps/ directory. Specify the mapping name as a command-line argument when running the tool.
Included mappings:
- GuitarPro
- LogicPro
- ProTools
- StevenSlate
You can also create custom mappings by adding JSON files to the directory.
Feel free to add a new mapping by creating a JSON resource file and submitting a pull request.
Mapping files are JSON documents located in Services/Resources/Maps/. Edit or add files to customize drum note mappings.
{
"name": "ExampleMap",
"mapping": {
"Kick": 36,
"Snare": 38,
"HiHatClosed": 42,
"HiHatOpen": 46,
"TomLow": 41,
"TomMid": 45,
"TomHigh": 48,
"Crash": 49,
"Ride": 51
}
}"name": Identifier for the map- Values correspond to MIDI note numbers
Note: MIDI note numbers follow the General MIDI Percussion Key Map. This project uses DryWetMIDI for MIDI handling.
Input: MIDI file mapped for GuitarPro
Command:
dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.midOutput: MIDI file remapped for StevenSlate drums, saved in the current working directory.
The screenshot shows the Drum MIDI Remapper application's main form. Users can upload a MIDI file and select both the source and target drum mapping standards from dropdown menus. The interface provides an intuitive workflow for remapping drum notes, with clear options for file selection and mapping configuration.
- Build errors: Ensure .NET 8 SDK is installed and your environment is configured correctly.
- Mapping not found: Verify spelling and that JSON mapping files exist in Services/Resources/Maps/.
- MIDI file issues: Confirm your input file is a valid MIDI file and accessible.
Contributions are welcome! Please open issues or submit pull requests.
- Add a JSON mapping file to Services/Resources/Maps/
- Follow the existing file format for your mapping
- Update the
DrumMapTypeenum inModels/DrumMapType.csto include your new map - Submit a pull request
- DryWetMIDI β MIDI processing library used by this tool
MIT License
