You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A .NET tool for remapping MIDI drum notes between different standards and custom mappings. Designed to help musicians and producers adapt MIDI drum tracks for compatibility with various drum kits, DAWs, and hardware.
3
+
A **.NET 9** cross-platform tool for remapping MIDI drum notes between different standards and custom mappings. Designed to help musicians and producers adapt MIDI drum tracks for compatibility with various drum kits, DAWs, and hardware.
dotnet run --project src/ClI -- GuitarPro StevenSlate midis/test.mid
16
+
dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.mid
17
17
```
18
18
19
-
- Replace `GuitarPro`, `StevenSlate`, and `midis/test.mid` with your desired mapping and MIDI file.
19
+
- Replace `GuitarPro`, `StevenSlate`, and `midis/test.mid` with your desired mappings and MIDI file.
20
+
21
+
---
20
22
21
23
## Requirements
22
24
23
25
-[.NET 9.0 SDK or newer](https://dotnet.microsoft.com/download)
24
26
- Compatible with Windows, macOS, and Linux
25
27
28
+
---
29
+
26
30
## Features
27
31
28
-
- Remap MIDI drum notes using customizable mapping files
29
-
- Support for popular drum mapping standards (e.g., General MIDI, Roland, Yamaha) and custom mappings
30
-
- Batch processing of MIDI files
31
-
- Command-line interface for easy automation
32
-
- Cross-platform support via .NET
32
+
- Remap MIDI drum notes using customizable JSON mapping files
33
+
- Support for popular drum mapping standards (e.g., GuitarPro, StevenSlate, LogicPro, ProTools)
34
+
- Batch processing of MIDI files via CLI
35
+
- Cross-platform support powered by .NET 9
36
+
- Modular architecture with Dependency Injection for easy extensibility
37
+
38
+
---
33
39
34
40
## Usage
35
41
36
-
Run the tool with the following command:
42
+
Run the tool with:
37
43
38
44
```bash
39
-
dotnet run --project src/ClI -- <SourceMap><TargetMap><InputMidiFile>
45
+
dotnet run --project src/CLI -- <SourceMap><TargetMap><InputMidiFile>
40
46
```
41
47
42
-
-`<SourceMap>` and `<TargetMap>`: Mapping names (see **Available Mappings**)
43
-
-`<InputMidiFile>`: Path to your MIDI file
48
+
-`<SourceMap>` and `<TargetMap>`: Mapping names (see **Available Mappings** below)
49
+
-`<InputMidiFile>`: Path to the MIDI file to remap
44
50
45
-
The `--project src/ClI` option tells `dotnet` to run the CLI project directly.
51
+
The `--project src/CLI` option specifies the CLI project.
52
+
53
+
---
46
54
47
55
## Available Mappings
48
56
49
-
Mappings are stored in the **Services/Resources/Maps/** directory. Specify the mapping name as a command-line argument when running the tool.
57
+
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.
58
+
59
+
Included mappings:
50
60
51
-
**Included mappings:**
52
-
- GuitarPro
53
-
- LogicPro
54
-
- ProTools
61
+
- GuitarPro
62
+
- LogicPro
63
+
- ProTools
55
64
- StevenSlate
56
65
57
-
You can use these standards or create your own custom mapping.
66
+
You can also create custom mappings by adding JSON files to the directory.
58
67
59
-
## Configuration
68
+
---
60
69
61
-
Mappings are defined as JSON files in the **Services/Resources/Maps/** directory. You can create or modify mapping files to suit your needs. See the sample files for format and usage.
70
+
## Configuration
62
71
63
-
### Example Mapping File
72
+
Mapping files are JSON documents located in **Services/Resources/Maps/**. Edit or add files to customize drum note mappings.
64
73
65
-
Example (**Services/Resources/Maps/ExampleMap.json**):
74
+
### Example Mapping File (`ExampleMap.json`)
66
75
67
76
```json
68
77
{
@@ -81,43 +90,53 @@ Example (**Services/Resources/Maps/ExampleMap.json**):
81
90
}
82
91
```
83
92
84
-
Customize the `"name"` and MIDI note numbers as needed for your drum kit or standard.
93
+
-`"name"`: Identifier for the map
94
+
- Values correspond to MIDI note numbers
85
95
86
-
> **Note:** The numbers correspond to MIDI note numbers as used by the [DryWetMIDI](https://melanchall.github.io/drywetmidi/) library.
87
-
> For a full list of MIDI note numbers and their corresponding drum sounds, refer to the [General MIDI Percussion Key Map](https://www.midi.org/specifications-old/item/gm-level-1-sound-set), your drum kit's documentation, or the [DryWetMIDI documentation](https://melanchall.github.io/drywetmidi/articles/notes.html).
96
+
> **Note:** MIDI note numbers follow the [General MIDI Percussion Key Map](https://www.midi.org/specifications-old/item/gm-level-1-sound-set). This project uses [DryWetMIDI](https://melanchall.github.io/drywetmidi/) for MIDI handling.
97
+
98
+
---
88
99
89
100
## Example
90
101
91
-
**Input:** A MIDI file mapped for GuitarPro
92
-
**Command:**
102
+
**Input:** MIDI file mapped for GuitarPro
103
+
**Command:**
104
+
93
105
```bash
94
-
dotnet run --project src/ClI -- GuitarPro StevenSlate midis/test.mid
106
+
dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.mid
95
107
```
96
-
**Output:** A MIDI file remapped for StevenSlate drums.
108
+
109
+
**Output:** MIDI file remapped for StevenSlate drums, saved in the current working directory.
110
+
111
+
---
97
112
98
113
## Troubleshooting & FAQ
99
114
100
-
-**Build errors:** Ensure you have the correct .NET SDK installed.
101
-
-**Mapping not found:** Check the spelling and existence of your mapping file in **Services/Resources/Maps/**.
102
-
-**MIDI file issues:** Verify your input file is a valid MIDI file.
115
+
-**Build errors:** Ensure .NET 9 SDK is installed and your environment is configured correctly.
116
+
-**Mapping not found:** Verify spelling and that JSON mapping files exist in **Services/Resources/Maps/**.
117
+
-**MIDI file issues:** Confirm your input file is a valid MIDI file and accessible.
118
+
119
+
---
103
120
104
121
## Contributing
105
122
106
123
Contributions are welcome! Please open issues or submit pull requests.
107
124
108
125
### Adding a New Mapping
109
126
110
-
1.Create a new JSON mapping file in the **Services/Resources/Maps/**directory.
111
-
2.Add your mapping details following the format shown above.
112
-
3. Update the mapping enum in `Models/DrumMapType.cs` to include your new mapping.
113
-
4. Submit a pull request with your changes.
127
+
1.Add a JSON mapping file to **Services/Resources/Maps/**
128
+
2.Follow the existing file format for your mapping
129
+
3. Update the `DrumMapType` enum in `Models/DrumMapType.cs` to include your new map
130
+
4. Submit a pull request
114
131
115
-
This helps keep all mappings organized and available for everyone.
132
+
---
116
133
117
134
## Related Projects
118
135
119
-
-[DryWetMIDI](https://melanchall.github.io/drywetmidi/) - MIDI processing library used by this tool
136
+
-[DryWetMIDI](https://melanchall.github.io/drywetmidi/) — MIDI processing library used by this tool
0 commit comments