Skip to content

Releases: Metacreation-Lab/MIDI-GPT

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 09 Jul 10:28

Added

  • Prism Documentation: Full docs/models.md section for the prism_medium checkpoint — same wide attribute/genre set as expressive, standard 32-level velocity, num_bars_map up to 16 bars.
  • Real-Checkpoint Smoke Tests: New test_pretrained_checkpoints.py downloads and exercises prism_medium/expressive_medium end-to-end (AR + infill generation, attribute/genre conditioning, MaskBar-mode rejection).

Changed

  • Dynamic Checkpoint Resolution: InferenceEngine.from_pretrained now resolves checkpoint filenames dynamically against the HuggingFace repo's file listing (preferring -final, falling back to the highest -step<N>) instead of a hardcoded filename map — re-uploading a checkpoint no longer requires a code change.

Fixed

  • Attribute Token Names: Corrected TOKEN_TYPE_TO_ATTRIBUTE and individual attribute classes' token_type strings to match the C++ TokenType::name() runtime values (TrackLevelPitchRangeMax, TrackLevelSilenceProportionMax, BarLevelPitchClassSet), fixing silent attribute auto-inference and BPE classification failures.

Removed

  • Ghost Model References: "ghost" removed from InferenceEngine.from_pretrained's known model names (no checkpoint has ever been trained for it); docs now explicitly mark it as an unreleased, planned architecture instead of implying it's usable today.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Jul 16:34

Added

  • Token Diagnostics: Opt-in TokenLogger for SamplingSession — per-token JSONL logs capturing token id/type/value, the grammar-masked T=1 distribution (log-prob, entropy, top-5 alternatives), grammar-collapse events, per-step summaries (context size, token budget, velocity mode) and per-bar summaries of the decoded result. No behavior change when no logger is attached. Also warns when the context window is nearly full and late tracks would be silently truncated.
  • Replay Scoring: SamplingSession.score_from_tokens() — teacher-forced log-probability of a previously generated token sequence under the session's context, applying the same grammar legality masks used at sampling time. Enables cross-conditional scoring (score a generation made under conditioning A against conditioning B) without re-sampling. Sequences longer than the model's positional window are scored with a sliding window; generation paths are untouched.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 03:37

Added

  • Expressive Encoder & Controls: Support for sub-grid microtiming (Delta) tokens, 128 velocity levels (vs 32), and piece-level switchable microtiming and velocity controls.
  • NOMML Attribute: Added TrackLevelNomml (median metric depth) attribute control end-to-end to steer rhythmic quantization.
  • Genre Grouping: Piece-level genre conditioning via GenreGrouping for model training and inference.
  • HTTP Server Timeout: New --idle-timeout flag to support automatic shutdown on inactivity.
  • Developer Documentation: Added comprehensive implementation and design guides for both Attribute Controls and Encoder Configs.
  • Preprocessing Acceleration: Added a --workers flag to parallelize preprocessing across multiple parquet shards.
  • Training Tests: Integrated training pipeline end-to-end tests using MIDI-fixture-based parquet data.

Changed

  • Checkpoint Format: Switched to .safetensors as the default serialization format (format_version: 2), embedding weights and configuration metadata in the SafeTensors header.
  • Tension Attribute: Refactored Tension extraction into a separate module structure, and updated tension quantization to decile bins.

Fixed

  • Grammar Constraints: Allowed NoteOnset immediately following FillInStart (at onset = 0).
  • Quantization Agnosticism: Refactored NoteDurationQuantile to be TPQ- and time-signature-agnostic.
  • DDP & Lightning Training: Corrected training configs (num_epochs -> max_steps), fixed DDP learning rate scaling, and removed unnecessary deepcopy operations.
  • Worker Safety: Made dataloader worker spawning fork-safe for C++ pybind11 tokenizer.
  • Genre Validation: Improved error validation to list canonical genres upon validation failures.

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 03 Jun 19:36

Added

  • Stateless HTTP server (midigpt[http] install extra) with end-to-end tests.
  • CITATION.cff and root CONTRIBUTING.md.
  • MkDocs documentation site, dark slate theme, brand styling, docs badge in README.
  • Ruff + pre-commit linting setup.
  • Curated CHANGELOG.md — release workflow now uses per-version sections as the GitHub Release body.
  • Auto-publish GitHub Release on tag push (previously created a draft only).

Changed

  • Checkpoint format migrated to safetensors (format_version: 2). The .pt packed-bundle loader still reads format_version: 1.

Fixed

  • Session device mismatch on GPU inference.
  • PyPI publish environment name.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 01 Jun 19:26

Full Changelog: v0.2.2...v0.2.3