Skip to content

Commit 19efaf2

Browse files
authored
Add Release Workflow (#6)
* Add Release Workflow * Update Docs * Update Release Workflow
1 parent b27df78 commit 19efaf2

File tree

3 files changed

+116
-48
lines changed

3 files changed

+116
-48
lines changed

.github/workflows/build-and-release.yml

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build Drum Midi Remapper (Windows/macOS/Linux)
1+
name: Build Drum Midi Remapper (Windows/macOS)
22

33
on:
44
push:
@@ -7,6 +7,9 @@ on:
77
pull_request:
88
branches: [ main ]
99

10+
permissions:
11+
contents: write
12+
1013
jobs:
1114
version:
1215
name: 🏷️ Generate Version
@@ -131,24 +134,45 @@ jobs:
131134
path: |
132135
DrumMidiRemapper-${{ needs.version.outputs.version }}.dmg
133136
./cli-publish/**
137+
release:
138+
name: 🚀 Publish GitHub Release
139+
runs-on: ubuntu-latest
140+
needs: [build-windows, build-macos, version]
141+
steps:
142+
- uses: actions/checkout@v4
134143

135-
# build-linux:
136-
# name: Build Linux CLI only
137-
# runs-on: ubuntu-latest
138-
# needs: version
139-
# steps:
140-
# - uses: actions/checkout@v4
141-
# - uses: actions/setup-dotnet@v4
142-
# with:
143-
# dotnet-version: 8.0.x
144-
145-
# - name: Restore dependencies
146-
# run: dotnet restore ./src/CLI/CLI.csproj
147-
148-
# - name: Build CLI Linux
149-
# run: dotnet publish ./src/CLI/CLI.csproj -c Release --framework net8.0 --self-contained true -p:Version=${{ needs.version.outputs.version }} -o ./cli-publish --no-restore
150-
151-
# - uses: actions/upload-artifact@v4
152-
# with:
153-
# name: DrumMidiRemapper-LinuxCLI-${{ needs.version.outputs.version }}
154-
# path: ./cli-publish/**
144+
- name: Download all artifacts
145+
uses: actions/download-artifact@v4
146+
with:
147+
path: ./artifacts
148+
149+
- name: Create GitHub Release
150+
id: create_release
151+
uses: actions/create-release@v1
152+
env:
153+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
154+
with:
155+
tag_name: v${{ needs.version.outputs.version }}
156+
release_name: "Drum Midi Remapper v${{ needs.version.outputs.version }}"
157+
draft: false
158+
prerelease: false
159+
160+
- name: Upload Windows Artifact
161+
uses: actions/upload-release-asset@v1
162+
env:
163+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
164+
with:
165+
upload_url: ${{ steps.create_release.outputs.upload_url }}
166+
asset_path: ./artifacts/DrumMidiRemapper-Windows-${{ needs.version.outputs.version }}/DrumMidiRemapper-Windows-${{ needs.version.outputs.version }}.zip
167+
asset_name: DrumMidiRemapper-Windows-${{ needs.version.outputs.version }}.zip
168+
asset_content_type: application/zip
169+
170+
- name: Upload macOS Artifact
171+
uses: actions/upload-release-asset@v1
172+
env:
173+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
174+
with:
175+
upload_url: ${{ steps.create_release.outputs.upload_url }}
176+
asset_path: ./artifacts/DrumMidiRemapper-macOS-${{ needs.version.outputs.version }}/DrumMidiRemapper-${{ needs.version.outputs.version }}.dmg
177+
asset_name: DrumMidiRemapper-macOS-${{ needs.version.outputs.version }}.dmg
178+
asset_content_type: application/x-apple-diskimage

README.md

Lines changed: 71 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,84 @@
11
# Drum MIDI Remapper
22

3-
A **.NET 8** 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.
3+
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.
44

5-
![Build Status](https://img.shields.io/github/actions/workflow/status/Abstractize/drum-midi-remapper/ci.yml?branch=main)
5+
Includes both a CLI and a .NET MAUI GUI for easy drum MIDI remapping.
6+
7+
![Build Status](https://img.shields.io/github/actions/workflow/status/Abstractize/drum-midi-remapper/build-and-release.yml?branch=main)
68
![License](https://img.shields.io/github/license/Abstractize/drum-midi-remapper)
79

810
---
911

12+
## Features
13+
14+
- Remap MIDI drum notes using customizable JSON mapping files
15+
- Supports popular drum mapping standards (GuitarPro, StevenSlate, LogicPro, ProTools)
16+
- Batch processing of MIDI files via CLI
17+
- Modular architecture with Dependency Injection for extensibility
18+
- .NET MAUI cross-platform GUI with drag-and-drop interface
19+
- Export remapped MIDI files directly from the GUI
20+
- Compatible with Windows and macOS via MAUI
21+
- CLI supports Windows, macOS, and Linux
22+
- Powered by .NET 8
23+
24+
---
25+
26+
## Requirements
27+
28+
- [.NET 8.0 SDK](https://dotnet.microsoft.com/download)
29+
- Windows, macOS, and Linux (CLI only)
30+
31+
---
32+
33+
## Download
34+
35+
Pre-built binaries are available for Windows and macOS from the [Releases](https://github.com/Abstractize/drum-midi-remapper/releases) page.
36+
37+
- **Windows:** Download the `.zip` file containing the `.msix` installer, extract it, and double-click the `.msix` to install.
38+
- **macOS:** Download the `.dmg` file, open it, and drag the app to your Applications folder.
39+
40+
No installation required on Windows other than running the installer. See the release notes for details.
41+
42+
---
43+
1044
## Quick Start
1145

46+
### CLI (Cross-platform)
47+
1248
```bash
1349
git clone https://github.com/Abstractize/drum-midi-remapper.git
1450
cd drum-midi-remapper
1551
dotnet build
1652
dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.mid
1753
```
1854

19-
- Replace `GuitarPro`, `StevenSlate`, and `midis/test.mid` with your desired mappings and MIDI file.
20-
21-
---
22-
23-
## Requirements
55+
### Windows (.NET MAUI GUI)
2456

25-
- [.NET 8.0 SDK or newer](https://dotnet.microsoft.com/download)
26-
- Compatible with Windows, macOS, and Linux
57+
```powershell
58+
dotnet build -f net8.0-windows10.0.19041.0
59+
dotnet run --project src/GUI -f net8.0-windows10.0.19041.0
60+
```
2761

28-
---
62+
### macOS (.NET MAUI GUI)
2963

30-
## Features
64+
```bash
65+
dotnet build -f net8.0-maccatalyst
66+
dotnet run --project src/GUI -f net8.0-maccatalyst
67+
```
3168

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 8
36-
- Modular architecture with Dependency Injection for easy extensibility
69+
Replace `GuitarPro`, `StevenSlate`, and `midis/test.mid` with your desired mappings and MIDI file.
3770

3871
---
3972

40-
## Usage
73+
## CLI Usage
4174

4275
Run the tool with:
4376

4477
```bash
4578
dotnet run --project src/CLI -- <SourceMap> <TargetMap> <InputMidiFile>
4679
```
4780

48-
- `<SourceMap>` and `<TargetMap>`: Mapping names (see **Available Mappings** below)
81+
- `<SourceMap>` and `<TargetMap>`: Mapping names (see **Available Mappings** below)
4982
- `<InputMidiFile>`: Path to the MIDI file to remap
5083

5184
The `--project src/CLI` option specifies the CLI project.
@@ -58,13 +91,15 @@ Mappings are stored as JSON files in the **Services/Resources/Maps/** directory.
5891

5992
Included mappings:
6093

61-
- GuitarPro
62-
- LogicPro
63-
- ProTools
94+
- GuitarPro
95+
- LogicPro
96+
- ProTools
6497
- StevenSlate
6598

6699
You can also create custom mappings by adding JSON files to the directory.
67100

101+
Feel free to add a new mapping by creating a JSON resource file and submitting a pull request.
102+
68103
---
69104

70105
## Configuration
@@ -90,7 +125,7 @@ Mapping files are JSON documents located in **Services/Resources/Maps/**. Edit o
90125
}
91126
```
92127

93-
- `"name"`: Identifier for the map
128+
- `"name"`: Identifier for the map
94129
- Values correspond to MIDI note numbers
95130

96131
> **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.
@@ -110,10 +145,18 @@ dotnet run --project src/CLI -- GuitarPro StevenSlate midis/test.mid
110145

111146
---
112147

148+
## Screenshot
149+
150+
![Drum MIDI Remapper UI](docs/screenshots/app-ui.png)
151+
152+
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.
153+
154+
---
155+
113156
## Troubleshooting & FAQ
114157

115-
- **Build errors:** Ensure .NET 8 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/**.
158+
- **Build errors:** Ensure .NET 8 SDK is installed and your environment is configured correctly.
159+
- **Mapping not found:** Verify spelling and that JSON mapping files exist in **Services/Resources/Maps/**.
117160
- **MIDI file issues:** Confirm your input file is a valid MIDI file and accessible.
118161

119162
---
@@ -124,9 +167,9 @@ Contributions are welcome! Please open issues or submit pull requests.
124167

125168
### Adding a New Mapping
126169

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
170+
1. Add a JSON mapping file to **Services/Resources/Maps/**
171+
2. Follow the existing file format for your mapping
172+
3. Update the `DrumMapType` enum in `Models/DrumMapType.cs` to include your new map
130173
4. Submit a pull request
131174

132175
---
@@ -140,3 +183,4 @@ Contributions are welcome! Please open issues or submit pull requests.
140183
## License
141184

142185
MIT License
186+

docs/screenshots/app-ui.png

1.08 MB
Loading

0 commit comments

Comments
 (0)