MuScriptor

August 10, 2026 ยท View on GitHub

MuScriptor is an audio-to-symbolic tool that converts music audio into note-event JSON or a MIDI file. The default download is the standalone F32 GGUF package; the original safetensors layout is still supported for local development.

python3 tools/model_manager_v2.py install muscriptor
audiocpp_cli --task midi --family muscriptor \
  --model models/MuScriptor-Small-GGUF/muscriptor-small-f32.gguf \
  --backend cuda \
  --audio song.wav \
  --request-option instruments=drums,electric_bass \
  --out result.mid

Streaming mode accepts audio chunks and returns the final MIDI/event result:

audiocpp_cli --task midi --mode streaming --family muscriptor \
  --model models/MuScriptor-Small-GGUF/muscriptor-small-f32.gguf \
  --backend cuda \
  --audio song.wav \
  --request-option instruments=drums,electric_bass \
  --out result.mid
OptionValuesDefaultMeaning
--request-option instruments=<csv>instrument namesemptyConstrain generated MIDI events to instrument groups.
--request-option output_format=midi|jsonmidi, jsonmidiSelect the primary output serialization written by --out.
--out <file>pathnot setWrite the selected primary output. Use .mid for MIDI or .json for event JSON.
--text-out <json>pathnot setOptionally also write generated note-event JSON.
--max-tokens / --request-option max_tokens=<n>integer2000Maximum generated MIDI-event tokens per chunk.
--request-option do_sample=true|falseboolfalseUse sampling instead of greedy token selection.
--temperaturefloat1.0Sampling temperature. 0 selects deterministic argmax.
--guidance-scale / --request-option guidance_scale=<f>float1.0Classifier-free guidance coefficient; 1 disables CFG.
--num-beams / --request-option num_beams=<n>integer1Beam-search width; 1 disables beam search.
--request-option batch_size=<n>integer1Number of chunks decoded per batch when prelude_forcing=false.
--request-option prelude_forcing=true|falsebooltrueForce open-note prelude tokens between sequential chunks.
--seedinteger0Sampling seed.
--session-option muscriptor.weight_type=<type>native, f32, f16, bf16, q8_0nativeTransformer weight storage type.
--session-option muscriptor.perf_mode=<mode>off, flash_attentionflash_attentionDecoder attention mode.
--session-option muscriptor.weight_context_mb=<mb>integer MiB512Weight context arena size.
--session-option muscriptor.conditioning_graph_arena_mb=<mb>integer MiB128Condition graph arena size.
--session-option muscriptor.decoder_prefill_graph_arena_mb=<mb>integer MiB768Decoder prefill graph arena size.
--session-option muscriptor.decoder_decode_graph_arena_mb=<mb>integer MiB512Decoder cached-step graph arena size.