NeuralSheet
Audio-to-MIDI transcription as a native macOS app. Record or drop a track, pick the instruments, and NeuralSheet turns it into MIDI you can play back, mix, and drag straight into your DAW. Transcription runs entirely on your machine.
macOS 26, Apple silicon · 4.3 MB · Release notes
What it does
- Record or load audio. Record from any input device, or drop a
.wav,.aiff,.flac,.mp3or.oggfile onto the window. - Transcribe with MuScriptor. A 100M to 1.4B parameter transformer from Kyutai and Mirelo, running locally on the GPU through Metal. Restrict it to the instruments you know are in the mix, or let it detect them.
- Watch the notes arrive. The piano roll fills in as each five-second chunk is decoded. You can start playing back the part that is done while the rest is still running.
- Listen and mix. Play the transcription through the built-in synthesizer, blend it with the original audio, and set the level, mute and solo of every instrument.
- Edit the notes. Move, resize, draw and erase notes, reassign them to other instruments, set velocities, snap and quantize to a tempo grid, with undo. Edits are saved with the session.
- Get the MIDI out. Drag the result onto a track in your DAW, or export a multi-track
.midfile with one track per instrument.
Why a rewrite
NeuralSheet is a from-scratch Swift rewrite of NeuralNote by Damien Ronssin, built to fix the two things that held the original back on the Mac: audio latency and interface smoothness. It keeps NeuralNote's design, behaviour and transcription engine, and replaces the cross-platform C++/JUCE application layer with SwiftUI, AppKit and AVAudioEngine.
- Audio goes through one
AVAudioEnginegraph: a source node owns the clock and schedules synth notes one buffer ahead, sample-aligned with the original audio, with a 128-frame I/O buffer where the device allows it. - Drawing is done by AppKit views that repaint only the strip that changed. A ten-minute file scrolls at 120 Hz.
- Everything else is SwiftUI, with the original palette, typography, metrics and interaction rules ported one for one.
The transcription engine, muscriptor.cpp, is unchanged and linked as a static library.
Usage
- Get some audio. Press record (or r) and play, or drop a file on the waveform area. Choose your input and output devices in the Audio menu.
- Choose instruments. Use + in the sidebar to tick the instruments in the recording, or leave it on Automatic. Transcriptions are better when the model is told what to listen for.
- Transcribe. The first run downloads a model. Progress shows in the status bar; you can cancel at any time.
- Listen. Space plays and pauses. The ORIG / MIDI slider blends the source audio with the synthesized notes; each instrument has its own fader, mute and solo.
- Edit. ⌘2 opens the Edit tab. V selects, D draws, E erases; drag notes, or their ends; ⌥-drag duplicates; arrows nudge. Set the tempo and where bar 1 falls in the toolbar.
- Export. Drag the MIDI button onto a track in your DAW, or use Export to save a
.midfile. The export tempo sets how seconds map to beats.
Space play/pause · ⇧Space go to start · r record · m mute · c centre the playhead · ⇧⌫ clear · ⌘+scroll or pinch to zoom the timeline · ⌘1/⌘2 tabs · ⌘Z undo · ⌘U quantize · ⌘A select all · ⌘-drag ignores snap
Models
MuScriptor comes in three sizes. NeuralSheet downloads them from
DamRsn/muscriptor-gguf on Hugging Face into
~/Library/NeuralSheet/models (it also picks up models already in
~/Library/NeuralNote/models). Downloads resume if interrupted and are verified by SHA-256.
| Size | Download | Speed on an M1 Pro (Metal) | Notes |
|---|---|---|---|
| small | 209 MB | ~3.5× real time | Fastest |
| medium | 618 MB | ~1.5× real time | Recommended |
| large | 2.7 GB | ~0.5× real time | Best quality |
The model weights are not open source. Kyutai and Mirelo released them under CC BY-NC 4.0: they may only be used non-commercially. NeuralSheet's own code is Apache-2.0, which does not extend to the weights.
Playback uses the General MIDI synthesizer built into macOS, so no soundfont is bundled. It sounds different from NeuralNote's MuseScore soundfont.
Build from source
macOS 26 on Apple silicon, Xcode 27, and CMake (brew install cmake) for the transcription engine. The first build fetches ggml.
git clone --recurse-submodules https://github.com/bring-shrubbery/neural-sheet.git
cd neural-sheet/app
xcodebuild -scheme NeuralSheet -configuration Release build
Or open app/NeuralSheet.xcodeproj in Xcode and run the NeuralSheet scheme. The
README has the details, including the pure-Swift core package and its tests.
Contributing
NeuralSheet is developed by a small team working with AI coding agents that we run and supervise ourselves. Because of that:
- Feature requests, ideas and questions go to Discussions. The most requested and best argued ideas are what we build next.
- Bug reports go to Issues, using the template, for bugs you have reproduced yourself.
- Pull requests are not accepted and are closed automatically.
CONTRIBUTING.md explains the reasoning and the details.
Credits
NeuralSheet started on 2026-09-17 as a rewrite of NeuralNote v2 at commit
20ca45a. Everything a user sees, and the
audio and MIDI logic underneath, follows NeuralNote's design; the Swift code was written new against a detailed
inventory of its behaviour, and the note scheduler, resampler, waveform peaks, MIDI writer and piano-roll
geometry are ports of the original C++.
- NeuralNote v2 was developed by Damien Ronssin, with AI assistance.
- NeuralNote v1 was developed by Damien Ronssin and Tibor Vass; its interface was designed by Perrine Morel.
- muscriptor.cpp, the transcription engine, is by Damien Ronssin. MuScriptor, the model, is by Kyutai and Mirelo (paper, project).
- NeuralSheet is by Antoni Silvestrovic, built with Claude Code.
License
NeuralSheet's code is licensed under the Apache License 2.0, the same licence as NeuralNote. NOTICE records the origin of the work, and THIRD_PARTY_NOTICES.md lists every third-party component: muscriptor.cpp and ggml (MIT), PFFFT (BSD-style), stb_vorbis (public domain), and the Inter and JetBrains Mono typefaces (OFL 1.1).
The MuScriptor model weights are CC BY-NC 4.0, non-commercial use only, and are downloaded separately at run time.