# The newest tag is v1.0, the source says 1.0.1, and the Windows download is the 2022 build

> azuwis/pianotrans packages ByteDance's piano transcription model as a desktop GUI and a command line tool for Windows, Linux and macOS. It is one Python file with one unpinned dependency, distributed as a 1.5GB archive on Windows and as a Nix flake elsewhere.

**azuwis/pianotrans** — Simple GUI for ByteDance's Piano Transcription with Pedals

- Repository: https://github.com/azuwis/pianotrans
- Stars: 1,528 · Forks: 147
- Language: Nix
- License: not declared
- Published: 2026-09-17 · Updated: 2026-09-17 · Language: en
- Canonical page: https://hysenlabs.com/projects/azuwis-pianotrans

## The newest tag is v1.0 and the source has been at 1.0.1 since 2023

Two version numbers are in play and they are not the same. The published releases stop at v1.0, dated 22 February 2022, after v0.2.1 and v0.2 in 2021. The setup script declares 1.0.1, and the changelog has an entry for 1.0.1 dated 9 February 2023 describing a new option to force the command line, a fix for a crash caused by passing a file-type argument to a file dialog, an updated Nix flake and a test workflow. So a version exists in the source tree that was never cut as a release. It matters because the Windows instructions download a specific asset from the v1.0 release, meaning the documented Windows path installs the 2022 build while the repository has moved on by a patch release that nobody received as a binary.

## The Python side is one module with one unpinned dependency

The whole application is a single module named with a capital letter, listed as the only module in the packaging configuration, and exposed as a console script that calls its main function. That entry point is why the command on a terminal and the window on a desktop are the same program, and why the changelog could add a flag to disable the interface entirely without splitting anything. The dependency list has one entry, the upstream inference package, with no version constraint, and everything else the program needs, the machine learning framework, the audio libraries, the MIDI writer, comes from that package's own requirements. The consequence is that this repository controls packaging and nothing else, which the project states directly in its own question-and-answer section.

## Windows is a 1.5GB archive that needs a runtime installed first

The Windows procedure is five steps and two of them are about the machine rather than the program. First you install the Microsoft C++ runtime for Visual Studio 2015, 2017 and 2019, the 64-bit redistributable, because the bundled build needs it. Then you download a 1.5GB archive and unpack it with 7zip. Then you are told to close other applications so that at least 2GB of memory is free. Only then do you run the executable, choose audio or video files, hold the control key for multiple selection, and collect the resulting MIDI files next to the inputs. Two extra batch files sit beside the executable: one forces CPU inference when the automatic GPU path misbehaves, and one registers a right-click menu entry, which the 1.0 notes remind you to re-run after an update.

## Linux and macOS go through a Nix flake, and upgrading needs a cache flag

The other platforms are installed with Nix rather than with a Python package. You install Nix in daemon mode, create a configuration directory, and write one line into the configuration to enable the command and flakes interfaces:

```sh
sh <(curl -L https://nixos.org/nix/install) --daemon
mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' > ~/.config/nix/nix.conf
```

Then the project itself is one command, a profile install pointing at the GitHub flake, after which the same binary opens a window or takes file arguments. Upgrading is where the documentation earns its keep. Because the flake is fetched from GitHub, the tarball is cached, so a plain upgrade silently reuses the old source. The documented fix is to override the cache lifetime for that one call:

```sh
nix --option tarball-ttl 1 profile upgrade 0
```

The worked example in the page shows the store paths before and after, and both name a Python 3.9 interpreter, which is the runtime the package builds against.

## The Nix overlays were deleted because nixpkgs accepted the patches

One line in the 1.0.1 changelog describes a change with more effect than it first appears. The overlay that pinned four packages, two audio libraries, a librosa helper and the upstream inference package itself, was removed, on the grounds that all of the patches had been accepted upstream into nixpkgs. The stated consequence is that more dependencies can now be fetched directly from the Nix binary cache, with fewer local builds. That is a genuine improvement for anyone installing on a fresh machine, and it is also a good example of the maintenance pattern this project follows: stop patching, wait for upstream, delete the patch. The same entry adds a GitHub test workflow, so the flake now has a check of its own.

## Three platforms are claimed and three are tested, and one of them is from 2019

The stated requirements are Windows 7 or later in 64-bit, Linux, and macOS on either Intel or Apple silicon, with at least 4GB of memory. The tested list immediately below is much narrower: Windows 10, Debian Linux 10, and macOS 12.1 on Apple silicon. Those are the three configurations the author actually ran. Debian 10 is the interesting one, because it predates the nixpkgs releases that absorbed the patches this project used to carry, so the most-tested Linux baseline is older than the dependency situation the flake now assumes. The memory figure also has a second face: the requirements say 4GB, while the Windows procedure separately asks for 2GB free after closing other applications.

## The project defines its own boundary: MIDI out, quality upstream

There is one question in the documentation and the answer is a scope statement. Asked whether the transcription result can be improved, the reply is that this project is about packaging the upstream transcription system, and that as long as it hands you MIDI files, every other issue is out of scope here and belongs in the upstream issue tracker. That is worth taking at face value and also worth noticing: the citation is the upstream paper, describing high-resolution piano transcription with pedals by regressing onsets and offsets times, and there is no model, no accuracy figure and no comparison on the page. The GUI also grows a transcribe queue so files can be added before processing, which is the one piece of workflow this project adds on top.

## No licence is declared, and the language count points at the packaging

The project's licence metadata records nothing recognisable, and there is no licence file at the top of the tree, so there are no terms stated anywhere in the repository. The rest of the root is small and tells you what this project is made of: the application module, the packaging script, a Nix flake with its lock file, a directory of Nix expressions, an environment file for a directory-based tool, a test directory, a windows directory for the batch scripts, a screenshots directory, and the workflow configuration. The recorded primary language is Nix, which reflects that packaging rather than the application, since the application is a single Python file whose only job is a window and a command line.

## Conclusion

Pianotrans suits someone who already trusts the upstream transcription model and wants it behind a file picker or a command line without assembling a Python environment, and who is happy with a tool whose stated scope stops at producing MIDI. Three things to know. The project publishes no licence, neither in its metadata nor as a file in the tree, so there are no terms to rely on. The newest published release is v1.0 from February 2022 while the source has been at 1.0.1 since February 2023, so the Windows archive you download is older than the code. And the single dependency is unpinned, which means a fresh install resolves whatever the upstream package needs today.

## FAQ

### What is azuwis/pianotrans?

It is a simple GUI and command line wrapper around ByteDance's piano transcription implementation, a PyTorch system that turns piano recordings into MIDI files with pedal information. The application is a single Python module exposed as a console script, and the project positions itself as packaging rather than as a transcription system of its own.

### How do I install pianotrans on Linux or macOS?

With Nix. Install Nix in daemon mode, write experimental-features = nix-command flakes into the Nix configuration, then run nix profile install github:azuwis/pianotrans. Run the resulting pianotrans command with no arguments to open the window, or with file names to transcribe from a terminal. To upgrade, run nix --option tarball-ttl 1 profile upgrade 0.

### How do I install pianotrans on Windows?

Install the 64-bit Microsoft C++ runtime for Visual Studio 2015, 2017 and 2019, then download and unpack the PianoTrans archive from the v1.0 release, which is a 1.5GB download needing 7zip. Free at least 2GB of memory, run PianoTrans.exe, and results are written as MIDI files beside the inputs.

### Can pianotrans improve transcription accuracy?

Not according to its own documentation. The project states that it is about packaging the upstream transcription system and that, as long as it produces MIDI files, every other issue is out of scope and should be reported to the upstream project's issue tracker.

### What is the latest version of pianotrans?

The packaging script declares 1.0.1, with a changelog entry dated 9 February 2023, but the newest published release tag is v1.0 from 22 February 2022. The Windows download instructions point at an asset from that v1.0 release, and no licence is declared in the project's metadata or as a file in the repository.

## Sources

- [azuwis/pianotrans on GitHub](https://github.com/azuwis/pianotrans)
- [Issues](https://github.com/azuwis/pianotrans/issues)
- [README](https://github.com/azuwis/pianotrans/blob/master/README.md)
- [Releases](https://github.com/azuwis/pianotrans/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/azuwis-pianotrans
