Skip to main content

Metacreation Lab

midigpt

PyPI Python CI Docs Code license: MIT arXiv HuggingFace

A transformer model for computer-assisted multitrack music composition.

  • Fill in missing bars while preserving your existing arrangement
  • Generate new tracks from scratch, conditioned on musical attributes
  • Steer the output with attribute controls (note density, polyphony, note duration, and on prism/expressive also key, pitch range, pitch classes and genre), globally or per bar
  • Run a MIDI-GPT API server over HTTP, with streaming, cancellation and several models in one process
  • One-line setup — load pretrained models from HuggingFace Hub, no compiler needed

Installation

pip install "midigpt[inference]"

Pre-built wheels for CPython 3.10–3.14 on Linux (x86_64), macOS (x86_64 + arm64), and Windows (AMD64). No compiler needed.

On Intel Macs, midigpt[inference] needs Python 3.12 or older: PyTorch stopped publishing macOS x86_64 wheels after 2.2, so it installs with torch<2.3 and numpy<2.

Extra What it adds
inference torch>=2.0, tqdm, huggingface_hub, safetensors
train PyTorch Lightning, HuggingFace datasets, pyarrow, python-dotenv, wandb
realtime python-osc, Flask, Flask-SocketIO
http FastAPI, uvicorn
dev pytest, ruff, mypy
docs mkdocs-material, mkdocstrings
all realtime + train

Quick start

Load a pretrained model from HuggingFace Hub and generate music in four lines:

from midigpt import Score, Track, Bar
from midigpt.inference import InferenceEngine, GenerationRequest, InferenceConfig, TrackPrompt

engine = InferenceEngine.from_pretrained("yellow_medium")

# 4-bar score with one empty melodic track
score = Score(tracks=[Track(bars=[Bar() for _ in range(4)])])

result = engine.session(
    score,
    GenerationRequest(
        tracks=[TrackPrompt(id=0, bars=[0, 1, 2, 3])],
        config=InferenceConfig(model_dim=4, mask_mode="attention"),
    ),
).run()

total = sum(len(b.notes) for t in result.tracks for b in t.bars)
print(f"Generated {total} notes")
result.to_midi("output.mid")

The model is downloaded once and cached by huggingface_hub in ~/.cache/huggingface/hub/. When the model repo is gated, accept its license on Hugging Face and run hf auth login (or set HF_TOKEN) first; see access tokens.


Models

Model Checkpoint num_bars_map Context (tokens) Infill Attributes
yellow_medium checkpoint 4, 8 2048 yes note density, polyphony (min/max), note duration (min/max)
yellow_small checkpoint 4, 8 2048 yes note density, polyphony (min/max), note duration (min/max)
prism_medium checkpoint 4, 8, 12, 16 4096 yes key signature, pitch range, silence, note duration, note density (bar), polyphony (bar), pitch class set, genre
expressive_medium checkpoint 4, 8, 12, 16 4096 yes key signature, pitch range, silence, note duration, note density (bar), polyphony (bar), pitch class set, nomml, genre

InferenceEngine.from_pretrained(name) downloads the current checkpoint for that model name.

model_dim in InferenceConfig is the context window in bars, not a vocabulary dimension — pass a value from the model's num_bars_map. expressive_medium additionally encodes sub-grid timing via delta tokens and supports switchable velocity/microtiming controls. yellow has no MaskBar token, so use mask_mode="attention" (or "attention_approx", "attention_skip", "remove") with it. See docs/models.md for the full breakdown.

The weights are licensed separately from the code, under the Metacreation Non-Commercial Research License: non-commercial research (including research-creation) and education. They were trained on GigaMIDI; see the model card for details.


Inference API

Load a model

# By name (downloads from Metacreation/MIDI-GPT on HuggingFace Hub)
engine = InferenceEngine.from_pretrained("yellow_medium")   # or "prism_medium", "expressive_medium"

# From a local checkpoint (.safetensors or .pt bundle)
engine = InferenceEngine.from_checkpoint("path/to/model.safetensors")

Infill existing bars

score = Score.from_midi("my_song.mid")

request = GenerationRequest(
    tracks=[
        TrackPrompt(id=0, bars=[4, 5, 6, 7]),   # bars to regenerate
        TrackPrompt(id=1, bars=[], ignore=True), # leave track 1 unchanged
    ],
    config=InferenceConfig(temperature=1.0, top_p=0.95, model_dim=8, mask_mode="attention"),
)

result = engine.session(score, request).run()
result.to_midi("output.mid")

Autoregressive generation from scratch

score = Score(tracks=[Track(bars=[Bar() for _ in range(8)])])   # one empty 8-bar track

request = GenerationRequest(
    tracks=[
        TrackPrompt(
            id=0,
            bars=list(range(8)),                   # bars to generate, in order
            autoregressive=True,
            attributes={"max_polyphony": 3},      # quantized attribute level
            controls={"time_signature": 0},        # index into encoder TS list
        ),
    ],
    config=InferenceConfig(temperature=1.0, model_dim=8, mask_mode="attention", polyphony_hard_limit=4),
)
result = engine.session(score, request).run()

Every track in the score needs a TrackPrompt; use ignore=True for tracks to leave out.

Key types

Class Module Purpose
InferenceEngine midigpt.inference Top-level loader and session factory
GenerationRequest midigpt.inference Bundle of per-track prompts and config
TrackPrompt midigpt.inference Per-track bars, mode, attributes, controls
InferenceConfig midigpt.inference Temperature, sampling filters, step planner
SamplingSession midigpt.inference Token-level sampling loop (returned by session())

TrackPrompt fields

Field Type Default Meaning
id int — Track index in the score
bars list[int] — Bars to generate
autoregressive bool False Generate bars from scratch, continuing the track's earlier bars (no per-bar prompt)
ignore bool False Leave this track out of the prompt; it comes back unchanged in the result
mask_bars list[int] [] Bars hidden with MASK_BAR (disjoint from bars)
attributes dict[str,int] {} Quantized attribute overrides
controls dict[str,Any] {} Token locks e.g. {"time_signature": 0}
bar_attributes dict[int,dict] {} Per-bar attribute overrides (absolute bar index)
bar_controls dict[int,dict] {} Per-bar control overrides (absolute bar index)

Sampling filters

InferenceConfig exposes a four-stage logit-filtering pipeline (top_k → top_p → mask_k → mask_p):

Field Default Meaning
top_k 0 (off) Keep top-k highest-probability tokens
top_p 1.0 (off) Nucleus: keep the smallest set summing to ≥ top_p
mask_k 0 (off) Remove the top-k most-likely tokens (novelty pressure)
mask_p 0.0 (off) Anti-nucleus: remove tokens summing to ≥ mask_p from the top

A small mask_k=1 or mask_p=0.3 pushes the model off its most-confident picks — useful for getting diverse outputs when novelty_check=True.

Generation options

A few more InferenceConfig fields (see docs/api.md for all of them):

Field Default Meaning
model_dim / bars_per_step / tracks_per_step 4 / 1 / 1 Window size and step size; each also takes "auto" to let the planner choose
num_candidates 1 Generate several independent takes (one seed each) from the same prompt
infill_probability 1.0 Infill only a random share of the target bars; session.generated_bars says which
novelty_check / novelty_threshold True / 1.0 Retry a step whose result shares at least this share of its notes with the original
context "auto" When a step won't fit the model, leave out whole context tracks ("auto", "listed", "all"); session.dropped_context lists them
plan_only False Return the step plan without generating

Mask modes

Control how future bars appear in the context window:

Mode Behaviour
"token" Encoder emits a MaskBar token (requires vocab support)
"attention" Future bars zeroed in the KV cache via exact span masking
"attention_approx" Single prefill mask + KV surgery; cheaper than "attention"
"attention_skip" Future tokens filtered from input; position_ids passed explicitly
"remove" Future bars omitted entirely from the token stream

Set via InferenceConfig(mask_mode="attention"). "attention" works on all encoders; "token" requires the encoder vocab to include a MaskBar domain.

Attribute controls

Introspect available controls at runtime:

engine._analyzer.attribute_sizes()         # {"note_density": 10, "min_polyphony": 10, ...}
engine._analyzer.attribute_value_labels()  # {"note_density": ["very sparse", ...], ...}
engine._analyzer.attribute_track_types()   # {"note_density": "drum", "min_polyphony": "melodic", ...}

Pass quantized levels (integers in [0, size)) in TrackPrompt.attributes. Each attribute applies to melodic tracks, drum tracks or both (attribute_track_types()); on yellow, note_density is drum-only and polyphony and note duration are melodic-only.


Training

1. Preprocess parquet shards

python -m midigpt.training.preprocess \
    --parquet /data/train/*.parquet \
    --checkpoint models/yellow_medium-final.safetensors

Builds a valid-index cache so dataset initialization is instant on subsequent runs. Cached in ~/.midigpt/ (override with MIDIGPT_CACHE).

2. Launch training

python -m midigpt.training.trainer \
    --config     models/train_config.json \
    --train-data /data/train/*.parquet \
    --eval-data  /data/valid/*.parquet \
    --output-dir checkpoints/run_001

3. Python API

from midigpt.training.trainer import TrainConfig, train

config = TrainConfig.from_file("models/train_config.json")
train(config, train_path="/data/train/00000.parquet", eval_path="/data/valid/00000.parquet")

train() uses PyTorch Lightning and writes a packed .safetensors bundle at the end of training containing weights, architecture config, and encoder config.

Key TrainConfig fields

Field Default Notes
n_embd / n_layer / n_head 512 / 6 / 8 Model architecture
max_seq_len 2048 Token sequence cap
infill_probability 0.75 Fraction of samples trained with FillIn tokens
mask_apply_probability 0.5 Fraction of samples with MASK_BAR applied
precision "fp16" "fp16", "bf16", or "fp32"
logger "none" "tensorboard", "wandb", or "none"
num_workers 0 Data loader workers; the loader uses a spawn context, so above 0 is safe

HTTP server

pip install "midigpt[http]"

# From a local checkpoint (.safetensors or .pt)
midigpt-http --ckpt checkpoints/run_001/model_final.safetensors --port 8000

# From HuggingFace Hub, by checkpoint name (optionally from another repo with --hf-repo)
midigpt-http --pretrained yellow_medium --port 8000

# Several models in one server
midigpt-http --config models.yaml

A stateless REST API — every request carries the full score and generation parameters. The interactive API docs are available at http://localhost:8000/docs.

Endpoint Description
GET /health Liveness probe, with queue depth
GET /info A model's capabilities, valid model_dim values, context length and attributes
GET /models The loaded models and the default one
POST /generate {score, request} → {score, timing, tokens, ...}; "stream": true streams notes and progress as server-sent events
POST /generate/{request_id}/cancel Stop an in-flight generation; its /generate call returns "cancelled" with what it has so far

A generation whose client disconnects is cancelled; --max-generation-seconds caps how long one may run. See docs/http.md for the config file, response fields and streaming.

# Score: 1 melodic track, 4 empty bars — generate all 4 from scratch
curl -s -X POST http://localhost:8000/generate \
  -H "Content-Type: application/json" \
  -d '{
    "score": {
      "resolution": 480, "tempo": 500000,
      "tracks": [{
        "instrument": 0, "track_type": "melodic",
        "bars": [
          {"ts_numerator": 4, "ts_denominator": 4, "notes": []},
          {"ts_numerator": 4, "ts_denominator": 4, "notes": []},
          {"ts_numerator": 4, "ts_denominator": 4, "notes": []},
          {"ts_numerator": 4, "ts_denominator": 4, "notes": []}
        ]
      }]
    },
    "request": {
      "tracks": [{"id": 0, "bars": [0, 1, 2, 3]}],
      "config": {"model_dim": 4, "mask_mode": "attention"}
    }
  }' | jq .score

The server runs on the CPU by default. Add --device cuda for an NVIDIA GPU (with a CUDA build of PyTorch), --device mps for Apple Silicon, or --device auto to pick CUDA, then MPS, then CPU. See docs/http.md.


Real-time OSC server

pip install "midigpt[realtime]"
midigpt-server --ckpt models/yellow_medium-final.safetensors --port 7400

Listens for OSC messages on a UDP port and streams generated notes back in real time. Generation is triggered bar-by-bar via /midigpt/bar/end on a background thread.

Selected OSC addresses:

Address Direction Description
/midigpt/session/init in Start a new session
/midigpt/track/create in Register a track
/midigpt/note in Push an incoming note
/midigpt/bar/end in Signal bar end (triggers generation)
/midigpt/param/set in Adjust sampling parameters at runtime
/midigpt/attr/set in Set attribute overrides
/midigpt/generated/note out Emit a generated note
/midigpt/generated/features out Per-bar statistics
/midigpt/capabilities out Attribute support for the loaded checkpoint

Development

Setup

git clone https://github.com/Metacreation-Lab/MIDI-GPT.git
cd MIDI-GPT
pip install -e ".[inference,dev]"   # compiles the C++ extension in-place

Prerequisites: Python 3.10+, CMake 3.21+, a C++20 compiler.

Tests

# Python
pytest tests/python/
pytest tests/python -m "not slow and not inference"   # CI subset (no model needed)

# C++
cmake -S . -B build_cpp -DCMAKE_BUILD_TYPE=Release
cmake --build build_cpp -j
ctest --test-dir build_cpp --output-on-failure

Linting

ruff check src/ tests/    # lint
ruff format src/ tests/   # format

pre-commit runs both automatically on commit:

pip install pre-commit && pre-commit install

Release

Tag a commit vX.Y.Z → .github/workflows/wheels.yml builds wheels on Linux / macOS / Windows × Python 3.10–3.14, drafts a GitHub Release, and publishes to PyPI via OIDC Trusted Publishing.

Logging

Set MIDIGPT_LOG_LEVEL=DEBUG (or a numeric level) before importing. Accepts both string names (DEBUG, INFO, WARNING) and integers.


Citation

@misc{pasquier2025midigptcontrollablegenerativemodel,
      title={MIDI-GPT: A Controllable Generative Model for Computer-Assisted Multitrack Music Composition},
      author={Philippe Pasquier and Jeff Ens and Nathan Fradet and Paul Triana and Davide Rizzotti and Jean-Baptiste Rolland and Maryam Safi},
      year={2025},
      eprint={2501.17011},
      archivePrefix={arXiv},
      primaryClass={cs.SD},
      url={https://arxiv.org/abs/2501.17011},
}

License

The code is released under the MIT License — Copyright (c) 2026 Metacreation Lab. See LICENSE.

The pretrained weights are not covered by the MIT License: they are under the Metacreation Non-Commercial Research License, for non-commercial research and education. For other uses, contact pasquier@sfu.ca.

Metadata

Release files for midigpt 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for midigpt 0.4.1
File Size Uploaded Provenance Actions
midigpt-0.4.1.tar.gz 9.2 MB With provenance Details for midigpt-0.4.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for midigpt 0.4.1
File Actions
midigpt-0.4.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for midigpt-0.4.1-cp314-cp314-win_amd64.whl
midigpt-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for midigpt-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
midigpt-0.4.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for midigpt-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
midigpt-0.4.1-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details for midigpt-0.4.1-cp314-cp314-macosx_10_15_x86_64.whl
midigpt-0.4.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for midigpt-0.4.1-cp313-cp313-win_amd64.whl
midigpt-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for midigpt-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
midigpt-0.4.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for midigpt-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
midigpt-0.4.1-cp313-cp313-macosx_10_15_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.15+ x86-64 Details for midigpt-0.4.1-cp313-cp313-macosx_10_15_x86_64.whl
midigpt-0.4.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for midigpt-0.4.1-cp312-cp312-win_amd64.whl
midigpt-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for midigpt-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
midigpt-0.4.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for midigpt-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
midigpt-0.4.1-cp312-cp312-macosx_10_15_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.15+ x86-64 Details for midigpt-0.4.1-cp312-cp312-macosx_10_15_x86_64.whl
midigpt-0.4.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for midigpt-0.4.1-cp311-cp311-win_amd64.whl
midigpt-0.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for midigpt-0.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
midigpt-0.4.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for midigpt-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
midigpt-0.4.1-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details for midigpt-0.4.1-cp311-cp311-macosx_10_15_x86_64.whl
midigpt-0.4.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for midigpt-0.4.1-cp310-cp310-win_amd64.whl
midigpt-0.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for midigpt-0.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
midigpt-0.4.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for midigpt-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
midigpt-0.4.1-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details for midigpt-0.4.1-cp310-cp310-macosx_10_15_x86_64.whl

Total release size: 26.2 MB

Release files / midigpt-0.4.1.tar.gz

Download URL midigpt-0.4.1.tar.gz
Size 9.2 MB
Tags Source
SHA-256 checksum
How to use checksums
f777960aca63f7bbe18f875e04be01590e7a9892403332e384f1b624c6814778
BLAKE2b-256 checksum
How to use checksums
c03e4c87b6af9a0e9d6190c34946f92b68603450da3129b4c062c3205a7c71dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp314-cp314-win_amd64.whl

Download URL midigpt-0.4.1-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
92e46b7c2a5d64789a7191b07c3f2e356fbf7b70f9a04cef59ebc6e463ff0915
BLAKE2b-256 checksum
How to use checksums
5cdd738ea41231a386fb6a7e9a90b2ec84268daa6b6f856fcde312b742a9525c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.4 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c2b5ee60a0a4343afdbb50643f88508ce1e89e1f542bf337a8c1ad8902b6f6ea
BLAKE2b-256 checksum
How to use checksums
fa71877be938b0eac4f746f551f241d7eaf05ffca420dd53bf11cffa0e4166a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL midigpt-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
Size 641.6 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b24c970b1b84999a67f23b1204b29c5f52bf0bb30bf3cadb3fa2f17ab19e0498
BLAKE2b-256 checksum
How to use checksums
19d4e7d5e34c16197ca1641a96940162afd1d2c1f9141248610a90cd548ac2ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp314-cp314-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.1-cp314-cp314-macosx_10_15_x86_64.whl
Size 728.9 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
151c47be10c23e5bd2bae4f7fa5551efd2574535347757bb3d52e0e0129dcb0c
BLAKE2b-256 checksum
How to use checksums
4152d70766572bc84bb7dfe5972eb82a8b41bf5718c0a55de52cfd1cc1eeaf11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp313-cp313-win_amd64.whl

Download URL midigpt-0.4.1-cp313-cp313-win_amd64.whl
Size 1.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
e0b3a4edfd1d2025431ec57112dceed92c419fc388d69306c8372cc7ecea78b5
BLAKE2b-256 checksum
How to use checksums
581eb5d74b02ce9d6ef5d35aba1b84cee2c3eb5b83ba61d63c7d5e33ccb6e964
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.0 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5b07f9546720702d9578dc1b65a6e688fd80cd1c2ac155c44fd12febf13c0223
BLAKE2b-256 checksum
How to use checksums
d844d92ff08e3539fd142630d4760226717daf63bc6719b87b4e2f7ffa7d8a8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL midigpt-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Size 640.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3fffd4b017af21ebd37651e4a6a6fd181822259be4779799e583fba6eb10a067
BLAKE2b-256 checksum
How to use checksums
860f5bfd2aef9a3fba1e19ecc17e7bd815764b63cd75c5fd9a5f3f86f28f3d3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp313-cp313-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.1-cp313-cp313-macosx_10_15_x86_64.whl
Size 728.6 kB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
b9ef44f05af84d2ae6ab205c194cef6e66403b5088560aa08b7237746b03441d
BLAKE2b-256 checksum
How to use checksums
e202910aac5546ae4851235fdc620dbd2821eb45ad89f131c20b3674b8c59f0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp312-cp312-win_amd64.whl

Download URL midigpt-0.4.1-cp312-cp312-win_amd64.whl
Size 1.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4bb291f6935460fdef6d2c81b089d0c99ae8ec03c9c584f413c2ab4952bc57c4
BLAKE2b-256 checksum
How to use checksums
adc77d0216f4da07b3b6b8530d27aa9ffa2cb7ef2fa703f93c03548bfd058471
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.3 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7258cba94b05f11dbcf583495ffa9dc2f0260c8bfb5356bbfb1698c30167f080
BLAKE2b-256 checksum
How to use checksums
0ff82f2f852ad83d56518a9686b51d3bcace3c309b0d0a1ff40ff2e0e0bb9ff4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL midigpt-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Size 640.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
88af49bc7270c31260cd408c6de62dadf062475385bcecdaeeec9297d4ba8bf5
BLAKE2b-256 checksum
How to use checksums
ca241a6a0adca7a53924036cba17456b97829157949173b2e0093a93caaaa0ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp312-cp312-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.1-cp312-cp312-macosx_10_15_x86_64.whl
Size 728.6 kB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
bf5d3c5019ed43ef4e70e384e24b5ada43eb217e474955dc1a0196d69bd6b452
BLAKE2b-256 checksum
How to use checksums
0f0c8abcd5c58bd3dbf14148ed5a74b7d8625f6738cdd5b6788c0e25b3a0054e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp311-cp311-win_amd64.whl

Download URL midigpt-0.4.1-cp311-cp311-win_amd64.whl
Size 837.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
07db4ad19153d37ab1119b85e60f188253fd9ac0b13581a85cd606a054840a1c
BLAKE2b-256 checksum
How to use checksums
43ef1da15096e8306283beacae3f1eb97d10e05334b1e5e1758d2ba9907da2ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 862.7 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a14c72542e9966a4da129d41ca5c3a81bfbf84004f873da6944f28433c8db17b
BLAKE2b-256 checksum
How to use checksums
11b5eec9059d34acb7628746ce2fa02a6242d9ffd910268c6723cd994237ea5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL midigpt-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Size 639.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a1759ea9c1de0b64829283d6bfe5ee85de5201736bb2f3d5665e36fff2fed136
BLAKE2b-256 checksum
How to use checksums
74f8c1b73be6dbd268dcef9b2d0c999b45b96708a3cd009bbd33221302839fb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp311-cp311-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.1-cp311-cp311-macosx_10_15_x86_64.whl
Size 724.6 kB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
a75bb285d4c2cffe34d913e0a373db2c4bbe0d1ae143d8d62e5f126ee7db1775
BLAKE2b-256 checksum
How to use checksums
b73661f1ca651705c48f5f0a46a635ee6eebdd68d7be8f4d0836bdbd3fc292a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp310-cp310-win_amd64.whl

Download URL midigpt-0.4.1-cp310-cp310-win_amd64.whl
Size 510.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d313b6e2563920c89fec514ca1da3751293255005b92fc49e205c3af5307bdc5
BLAKE2b-256 checksum
How to use checksums
78df73105ad74768d4c7b480c2418151844d9dd49e35491f94749093cea44d30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 862.0 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4b31fd54ae6feb4882a45c2fbde991104a399ab78245dd757ed477cbc8a77a32
BLAKE2b-256 checksum
How to use checksums
cd9c2444bb38f683c14668303cab2837ef62e62b1492c60df3497ddebf23ddc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL midigpt-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Size 637.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a747be8f3ba73d80af1942ccafd595cbfcd8d001de8897a9e6694991b267526d
BLAKE2b-256 checksum
How to use checksums
a2f20156c03b13262e8de1efebea23a392ec7b672d915e41cb1cea10ce67bfe3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / midigpt-0.4.1-cp310-cp310-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.1-cp310-cp310-macosx_10_15_x86_64.whl
Size 723.2 kB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
d9d9d7043edaf8a54fc373178d852e93025f7fa48eea6cc4c4380bff3b498139
BLAKE2b-256 checksum
How to use checksums
d0c9ccbfcac857ac18a843831f382b292b3ca7d2d556a621f5d2695cd626902f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Security for midigpt 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for midigpt-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page