-
Notifications
You must be signed in to change notification settings - Fork 2
Getting Started
Well, technically, you could manually press the keys in-game, but that’s tricky. Let’s get you set up!
Download the latest release from the project Releases page, then run the executable.
I recommend the package ending with _portable.zip to avoid issues on PCs that do not have .NET installed.
For advanced users, the package ending with _net_install.zip can be used if .NET is already installed on the device.
Note
If you get a SmartScreen popup, click on "More info" and then "Run anyway" The reason this appears is because the application is not signed. Signing costs money which can get very expensive.
git clone https://github.com/Jed556/AutoMidiPlayer.git
cd AutoMidiPlayer
dotnet publish AutoMidiPlayer.WPF -r win-x64-c Release --self-contained false -p:PublishSingleFile=trueFor other runtimes, visit the RID Catalog and change the runtime value.
git clone https://github.com/Jed556/AutoMidiPlayer.git
cd AutoMidiPlayer
dotnet buildgit clone https://github.com/Jed556/AutoMidiPlayer.git
cd AutoMidiPlayer
dotnet publishThe process for adding or adjusting notes and keyboard mappings has a few discrete steps. Below is a friendly checklist along with example snippets to help you get started.
-
Create or select a game folder
- Go to
AutoMidiPlayer.WPF/Core/Games/and either open the existing game directory or create a new one with the game's name.
- Go to
-
Prepare layout & instruments subfolders
- In the game folder make sure you have two items:
-
KeyboardLayout.cs– holds any custom key‑assignment maps. -
Instrumentsdirectory – contains one.csfile for each instrument.
-
- Look at
Heartopia/orGenshin/for real examples; the structure is identical.
- In the game folder make sure you have two items:
-
Add or edit instrument config files
- Inside
Instruments, you can copy and paste an existing config (e.g.Piano.cs) and then adjust fields such asgame,name, and thenoteslist. - Specify additional
keyboardLayoutsif the instrument uses a different mapping.
public static readonly InstrumentConfig MyNewInstrument = new( game: "MyGame", name: "Special Harp", notes: [ 60, 62, 64, 65, 67 ], // C4,D4,E4,F4,G4 keyboardLayouts: [ MyGameLayouts.QWERTY ] );
- Inside
-
Create a keyboard layout (if necessary)
- Edit
KeyboardLayout.csand add aKeyboardLayoutConfigwith the characters that correspond to each note.
internal static readonly KeyboardLayoutConfig QWERTY = new( name: "QWERTY", keys: ['q','w','e','r','t','y','u'] );
- Edit
-
Register the game in
GameRegistry.cs- Add a new
GameDefinitionentry to theAllGameslist so the app knows about your game. For example:
new GameDefinition( id: "MyGame", displayName: "My Game Title", instrumentGameName: "MyGame", imageResourcePath: "pack://application:,,,/Resources/MyGame.png", processNames: ["MyGameExe"], defaultExeName: "MyGame.exe", defaultSearchPaths: [ @"C:\Program Files\MyGame\MyGame.exe", ], getLocation: () => Settings.MyGameLocation, setLocation: v => Settings.Modify(s => s.MyGameLocation = v), getIsActive: () => Settings.ActiveMyGame, setIsActive: v => Settings.Modify(s => s.ActiveMyGame = v) ),
- Add a new
You might be wondering… “so where’s the part where I actually play a song?” 😅
Don’t worry, this is it.
- Add a song from a MIDI file.
- Enable only the tracks you want.
- Select target game, instrument, and keyboard layout.
- Adjust speed or transpose if needed.
- Press Play!
No Preview yet
But if your song doesn’t sound quite right or isn’t playing properly, don’t worry, that’s normal at first. Head over to How To Use to learn how to properly configure songs and get the best playback.