Desktop audio-to-MIDI conversion tailored for piano recordings
Runs entirely offline on Windows, CPU-first by design, with optional CUDA or DirectML acceleration
A2M (Audio to MIDI) is a Windows desktop app that converts local, piano-focused audio into .mid files.
The app uses ONNX Runtime, supports CPU by default, and can switch to optional GPU acceleration through runtime packs (CUDA or DirectML). It includes two transcription engines in settings: Legacy v1.0.0 and Modern v2.0.0 (Legacy default).
- Download and install from the latest release.
- If prompted, allow the model download.
- Click Choose audio and select a local file.
- Select CPU or GPU mode in settings.
- Click Convert to MIDI.
- Open the output folder from the footer (Open downloads folder) or from your configured save path.
- Local audio-to-MIDI transcription workflow.
- ONNX Runtime inference pipeline.
- CPU-first behavior with optional GPU runtime packs.
- GPU provider preference options:
Auto,CUDA,DirectML. - In-app runtime-pack installation for GPU dependencies.
- Legacy and Modern transcription engines.
- Modern tuning options for adaptive thresholds, input normalization/denoise, overlap stitching, and auto calibration.
- Output location controls, UI scale controls, and update checks.
- Stop/cancel handling for model download, runtime-pack download, cuDNN install, and conversion.
- A2M runs on CPU by default.
- Optional GPU runtime packs are installed per-user under:
%LOCALAPPDATA%\A2M\runtime_packs\cuda%LOCALAPPDATA%\A2M\runtime_packs\dml
- Runtime-pack endpoints are defined in
A2M/a2m/core/config.py.
Legacy v1.0.0is the default engine.Modern v2.0.0exposes additional behavior controls and diagnostics.- Modern controls are shown contextually in settings based on selected engine/calibration mode.
- Project page: https://www.justagwas.com/projects/a2m
- Download page: https://www.justagwas.com/projects/a2m/download
- Releases: https://github.com/Justagwas/a2m/releases
For Developers
- Windows (primary runtime target).
- Python 3.11+.
- Dependencies in
A2M/requirements.txt.
cd A2M
py -m pip install -r requirements.txt
py A2M.py- App metadata/constants and release/update/runtime URLs:
A2M/a2m/core/config.py A2M/a2m/core/app_config.jsonhas been removed; metadata now lives directly inconfig.py.- Runtime settings serialization and normalization:
A2M/a2m/core/config_service.py - Runtime/path resolution helpers:
A2M/a2m/core/paths.py - Model download/storage logic:
A2M/a2m/core/model_service.py - GPU runtime-pack management:
A2M/a2m/core/runtime_pack_service.py
- Windows SmartScreen may show warnings for newer or unsigned binaries.
- Download from official links only:
- Security policy and private vulnerability reporting:
.github/SECURITY.md
Contributions are welcome.
- Start with
.github/CONTRIBUTING.md - Follow
.github/CODE_OF_CONDUCT.md - Use Issues for bugs, requests, and questions
- Wiki: https://github.com/Justagwas/A2M/wiki
Licensed under the GNU General Public License v3.0 (GPL-3.0).
See LICENSE.
- Email: email@justagwas.com
- Website: https://www.justagwas.com/projects/a2m
