Releases: aaronbrataaditama/MIDIRestyle
Release list
MIDIRestyle 1.6.0
An agent release. The same executable now has a second mode: run it with --mcp and it is a headless Model Context Protocol server, so an AI agent can restyle MIDI without touching the window.
Download MIDIRestyle.exe below and run it. No installer, no runtime to install — it is one self-contained file that writes its scales/ folder and settings beside itself on first run, so it works from a USB stick. If the folder it sits in is read-only, it falls back to %APPDATA%. Double-clicking it still opens the app exactly as before; nothing about the desktop experience has changed.
What's new since 1.5.0
The exe is also an MCP server. MIDIRestyle.exe --mcp speaks Model Context Protocol over stdin and stdout — no window, no network, no port. Register it with any MCP host and an agent can inspect a MIDI file, search the ~170 scales, read one in detail, restyle a file, and export a MusicXML score. Five tools and one prompt, choose_a_style, which walks the agent through asking you one question at a time — which musical world, brighter or darker, does it need to play on ordinary instruments, do you need sheet music.
It runs the app's pipeline, not a copy of it. RestyleEngine → ChannelAllocator → MidiFileExporter, with the same default channel ceiling the GUI uses. This is enforced two ways, because one proof is not enough: one test shows the server and the style panel build the same settings object, another shows the emitted bytes match a direct call into the core. A restyle you ask an agent for and a restyle you do by hand produce the same file.
Agent Access, in the Help menu. A window that shows the registration snippet for your MCP host with a button to copy it, so you do not have to type an absolute path to the exe by hand.
Notes for anyone wiring this up
Paths in tool arguments must be absolute, and a path with spaces must be quoted in your host's config. Omitted tonic and source values are filled in by key detection — the resolved block in every report says exactly what was used, so a surprising result is always traceable. A raised clustering tolerance or a muted track is a channel-budget decision, not a fault: one MIDI port gives 15 usable channels, and a microtonal scale spends several per track.
Nothing but JSON-RPC ever reaches stdout — all logging goes to stderr — because a single stray line of output would corrupt the session for every client.
Unchanged
--mcp is additive. The desktop app, the restyling behaviour, the scale library and the file formats are all exactly as they were in 1.5.0. Restyling remains pitch remapping only: rhythm, ornamentation, articulation and drums are never touched.
MIDIRestyle 1.5.0
A presentation release. The piano roll gains the furniture it was missing, the file pane counts bars, and the degree wheel has been rebuilt so it stops moving while you read it.
Download MIDIRestyle.exe below and run it. No installer, no runtime to install — it is one self-contained file that writes its scales/ folder and settings beside itself on first run, so it works from a USB stick. If the folder it sits in is read-only, it falls back to %APPDATA%.
What's new since 1.4.0
The file pane counts bars. The duration line reads 0:14.4 · 8 bars — tenths, because a short loop is routine and 0:14 against 0:14.4 is a real difference across eight bars. The transport readout and the roll's new ruler take their bars from that same reading rather than counting for themselves. A SMPTE-timed file gets neither figure rather than an invented one.
The piano roll has a keyboard and a bar ruler. A keyboard down the left with the octave printed on each C and keys that light as they sound; barlines and numbered bars across the top; bar 3 / 8 and a determinate progress bar at the top right. The lit keys follow the A/B switch, not whichever layer is drawn solid — lighting the restyled keys while the original is sounding is exactly the confusion the A/B switch exists to prevent.
The scale list says what it means. Rows are chipped 12-TET or ±50¢, and the card beneath reads Deviation ±50¢ · 2 bend clusters at 5¢. The old Exact / Close / Approximate graded a scale against a standard you never chose and cannot act on — "Approximate" reads as a fault in Maqam Saba rather than as a fact about twelve equal semitones. A new degree ladder under the list draws one octave as a line, the twelve semitones ticked along it, and the scale's degrees standing where they really fall.
The degree wheel keeps still. Every degree now holds a spoke, a number, a marker and a cents reading at all times, and a sounding degree is shown by recolouring them rather than by adding anything. The 1.2 wheel started as a bare ring and grew spokes, haloes, octave rings and a fading trail as notes arrived, so standing information and momentary information looked alike and there was no still frame to learn the control from. The twelve reference ticks now carry note names, read from the tonic rather than from C, and the tonic is printed in the middle.
One capability removed on purpose
The wheel no longer encodes octave, and the fading trail is gone with it. A bass note and a melody note on the same degree now light the same marker. The octave dots were the single largest source of the clutter — they put marks across the middle of the wheel where the eye had no reason to relate them to anything on the rim — and the piano roll shows octave far better than a ring ever did. It is a real loss, so it is named here rather than left to be discovered.
Fixed
Bar numbers were sparse on files with a pickup bar. Numbering estimated its spacing from the first gap between barlines, so a file opening with a single 1/8 pickup and continuing in 4/4 measured a gap eight times too small and thinned the whole ruler to a number every fourth bar when every bar fitted comfortably. Spacing is now averaged over the piece, snaps to a 1/2/4/8 interval because musicians count bars in fours, and skips any label that would collide with the last one printed.
The horizontal scrollbar over-reported. Its extents measured the whole control rather than the note grid, so it claimed more music on screen than there was and left the last bar permanently just past the right edge with the thumb already at its end.
Unchanged
Restyling is still pitch remapping only — never rhythm, ornamentation or articulation. The 171-scale library, microtonal channel allocation, MusicXML export and the staff view are as they were in 1.4.0.
Verified
1356 tests passing, 0 warnings. Portable publish gate passes: exactly one file, 47.97 MiB. Launched from its own folder and confirmed to materialise scales/ beside itself.
MIDIRestyle.exe 50,296,766 bytes
sha256 ee950fcb76f04598286d741cda4f24e7b6f281411eaba8720047d42aa8e89288
build 1.5.0+d0f7a99
Requires 64-bit Windows. Audio playback needs a MIDI output device; without one the app still loads, restyles and exports, and says so in the status bar rather than greying the Play button without explanation.
MIDIRestyle 1.4.0
MIDIRestyle re-maps the musical scale of a MIDI file. It takes a piece written in Western major or
minor and rewrites its pitches into Chinese Gong pentatonic, Maqam Rast, Gamelan Slendro, a
Carnatic melakarta, or any of around 170 other scales from world musical traditions.
It changes pitch and nothing else — never rhythm, ornamentation or articulation. Internally it
works in cents rather than semitones, so genuinely microtonal tunings (Arabic maqam, Gamelan, Thai
7-equal, Persian dastgāh) sound in tune instead of being rounded off to the nearest piano key.
Download
MIDIRestyle.exe below is the whole application: one self-contained file, no installer, and
no .NET installation required. Copy it anywhere — including a USB stick — and run it. On first run
it writes its settings and a scales/ folder beside itself, falling back to %APPDATA% when
that location is read-only.
Windows x64 only. Playback uses a Windows MIDI output device; the app runs without one, but the
Play button will explain itself rather than going quietly dead.
SHA-256 cbd20fe04d6f04cc024e097d2870ad72607d79f6b7d361563d413a779e526854
Size 50.3 MB (50,292,662 bytes)
The binary is not code-signed, so Windows SmartScreen will likely warn on first run
("Windows protected your PC" → More info → Run anyway). Verify the hash above if you want
certainty about what you downloaded.
What it does
- ~171 scales from world traditions, each hand-authored with a citation, plus the 72 Carnatic
melakarta generated from their own construction rules. - Microtonal output that is actually microtonal. Pitch bend is allocated one channel per
distinct cent-offset rather than per voice, so Maqam Rast costs two channels and keeps unlimited
polyphony. When the 15-channel budget will not stretch, the tuning tolerance is raised for the
whole project rather than per track — mixing 12-TET Slendro against true Slendro clashes by 40
cents on two degrees. - A/B playback, switching between original and restyled mid-performance, with the score
following what you hear. - Three views of the result: a piano roll with ghost originals under the restyled notes, staff
notation laid out as a wrapped page of justified systems, and a scale wheel that puts each degree
at its true cents angle so the deviation from 12-TET is visible rather than implied. - Export to
.midand MusicXML. Playback and export share one channel allocator and pass the
same ceiling, so what you hear and what you get cannot diverge. - Key detection as a suggestion, always overridable, and the source scale is a setting — so a
file that is already pentatonic or in a maqam can be restyled out of it, not just into it.
Licence
MIDIRestyle is MIT licensed. The self-contained executable also redistributes its dependencies and
the .NET runtime; their licences and copyright notices are reproduced in full in
THIRD-PARTY-NOTICES.txt,
and are embedded in the executable itself — readable from About → third-party notices, so a
copied .exe carries its notices with it. That includes the Inter typeface, under the SIL Open
Font License, which requires exactly that.
Built from 33199c0. 1334 tests, 0 warnings.