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.2

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.2
File Size Uploaded Provenance Actions
midigpt-0.4.2.tar.gz 9.2 MB With provenance Details for midigpt-0.4.2.tar.gz

Built distributions (wheels)

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

Total release size: 26.2 MB

Release files / midigpt-0.4.2.tar.gz

Download URL midigpt-0.4.2.tar.gz
Size 9.2 MB
Tags Source
SHA-256 checksum
How to use checksums
211331510578251e606bad210155d8cb28023165c630e9e9c0841f49a2ecc903
BLAKE2b-256 checksum
How to use checksums
f165b4eba64f35ef8a0659ad1ee679cc2cde3b4f8596954d8a591f124b1f52d6
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.2-cp314-cp314-win_amd64.whl

Download URL midigpt-0.4.2-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
96d459878742338bd4c0ea426261591d1c0c084af340d34a05aa39c298747304
BLAKE2b-256 checksum
How to use checksums
07d1699abf35c1cb4e03ab143d52b641be6783ba15a8080444e9f54a98c79557
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.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.5 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bfe280c4ec4de6fc18e495888c5c7def752b9f409a69df1e323227a402ff336e
BLAKE2b-256 checksum
How to use checksums
782ece00e09371cb39cc9ee49409e2679b60ec03ada63b7c9a3ff6d898cfdbc7
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.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL midigpt-0.4.2-cp314-cp314-macosx_11_0_arm64.whl
Size 641.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f08e8a0adb426e09b536f3546adf53d177b12d9c8c5e13a40d3587df59e51732
BLAKE2b-256 checksum
How to use checksums
332a4b66d4252ab65248e8fffa5a5471ddb0cbd0ae87b07f8c6b2c360b0da1b0
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.2-cp314-cp314-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.2-cp314-cp314-macosx_10_15_x86_64.whl
Size 729.0 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
4b117998ae9a877f40623ae201b96d4e6581900129f1b93c49786e28a1fbedae
BLAKE2b-256 checksum
How to use checksums
6ab114ed1f97e39f2e77b38b5a5d6b936235268ca4c4d9e72e2bdba91f7a420b
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.2-cp313-cp313-win_amd64.whl

Download URL midigpt-0.4.2-cp313-cp313-win_amd64.whl
Size 1.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d8d64ac5e0a3cc7d846a4482acdf5e67374ddccbb9c48aa9889b4d6a2568edca
BLAKE2b-256 checksum
How to use checksums
45825ab59001f727d0b836cf828df096dc878fd53c097331858d8681088ed342
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.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.1 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
08c0e540b5116bc3163bd604616feae01cb060ea2fa79ea57e99b8bfd048e768
BLAKE2b-256 checksum
How to use checksums
b7a9b5c6b20756dcaf06412ef19e5f8fcb16549fd069418ed2cabf38c1edfdbf
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.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL midigpt-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
Size 641.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
aba53d690f0b26206e6b55db6c1ef9d6da75cc28ebdf6b8ac68c179c3c48a107
BLAKE2b-256 checksum
How to use checksums
3b831ae65f2cd15c29efd4dfc0b023af72862144fb95104cc59a9af0afe77dd1
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.2-cp313-cp313-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.2-cp313-cp313-macosx_10_15_x86_64.whl
Size 728.8 kB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
c9cb33c80e780410d0befb898579a77dbb79efe159a0789a3b54d08cc142a553
BLAKE2b-256 checksum
How to use checksums
dc09d62ccf64163c7bc8c9e58f31279a63c8a6bbb10eaf89309a1be9d10f2e86
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.2-cp312-cp312-win_amd64.whl

Download URL midigpt-0.4.2-cp312-cp312-win_amd64.whl
Size 1.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
1375ef9d8ace54e83af4e6fe450b6b0a4725a15cea1821081c3cccfeaaffd541
BLAKE2b-256 checksum
How to use checksums
ea8681485c8f89b2265e01468e0b0dd27e02ec9b62ee40dedcd1076e521600c7
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.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 864.4 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
93b6cc2d208ce1d1772e568b9bd751be18852b005ff2eaa8ef677ca0a73572ba
BLAKE2b-256 checksum
How to use checksums
5cf8037291e8cb5c6f46e32e1f172e1712e2283b9c137019a95cbbd1107d1d77
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.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL midigpt-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Size 640.9 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2d2f6af0481cf1fe31df3f83bc61ea78f8e8a6a69ab60100a834b863a98cd7a6
BLAKE2b-256 checksum
How to use checksums
a3697f0ac0228c62fa60a81f287c6b2d4a340879852823fec903e9421c594f6f
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.2-cp312-cp312-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.2-cp312-cp312-macosx_10_15_x86_64.whl
Size 728.7 kB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
99784bea392fa4cefbfeda83d74d5bb4f77b0f05f63b4f4fc40605ed76cd3436
BLAKE2b-256 checksum
How to use checksums
dac34bc913414d3f58bc701ab1e88942419a4feb649c471473fe5a4738fc1c23
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.2-cp311-cp311-win_amd64.whl

Download URL midigpt-0.4.2-cp311-cp311-win_amd64.whl
Size 837.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
cbc790e99018a5bae92a7f5e1c0774a76f3e67245a7fbbe29ed3816c9d1c321d
BLAKE2b-256 checksum
How to use checksums
92db9be5e87e8b24354bdd2734e924c5c334491dbaf354feb6a22eb7b70e6739
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.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 862.9 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
07e8492dc80774a595a40132097c4b706d2dd551f7b94ab3523351df16e5167e
BLAKE2b-256 checksum
How to use checksums
0a826551973068412c1d9b84d8dbb024264de8528018b2452e3432a9ace86d8c
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.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL midigpt-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Size 639.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ae4fe808a0270b61c7289fdc3d2c658af020dcbac3c9c6cbd48a20641b562810
BLAKE2b-256 checksum
How to use checksums
2b7ebcca596c5faea410201eb32daf6d4f4f009d4c12a2213fc17b9c463be077
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.2-cp311-cp311-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.2-cp311-cp311-macosx_10_15_x86_64.whl
Size 724.8 kB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
ae3dd3e20f2996ddb155c876f4b92041917fd06a129e79d657dc3544c81d7cd0
BLAKE2b-256 checksum
How to use checksums
82dc29552f3ad8cb2c26578e88db5bded122c04420bc03a8e54ca9c8aad6d409
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.2-cp310-cp310-win_amd64.whl

Download URL midigpt-0.4.2-cp310-cp310-win_amd64.whl
Size 510.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f735daf2de5d6f1be7c115bad565d3fe0e745571c8401489ec2c8ed133dfca27
BLAKE2b-256 checksum
How to use checksums
a2f96bcc5ddb36fe1ffd4da9ea21db96a20b1d0fef48cd0147cfb4f1a4039dfc
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.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL midigpt-0.4.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 862.1 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ec587774cfea18feb5027c307228a519fa38ac98ab6128f452c20ac562defb89
BLAKE2b-256 checksum
How to use checksums
3fe4d0e66f498b4deec8e94229504bdc25d8763085ceee6fffe9bccfd5831bf3
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.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL midigpt-0.4.2-cp310-cp310-macosx_11_0_arm64.whl
Size 637.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
81614bf381c7efe7ecb6ee3143bc01e945ba9b4371f3ff8a2ba66977379a196e
BLAKE2b-256 checksum
How to use checksums
beb7696619871b8aec8e19634c4a9ab9b1faf05f43821d71fa3d65c640ee37d5
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.2-cp310-cp310-macosx_10_15_x86_64.whl

Download URL midigpt-0.4.2-cp310-cp310-macosx_10_15_x86_64.whl
Size 723.3 kB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
90a5ba89fd4689e2c369dbda547e456b4c328ecdf9bb240d69fc7a220d10e6e9
BLAKE2b-256 checksum
How to use checksums
fd91f6571d5924fa339b21354757ee86e98b0c5fec28a24b2b897053548eb873
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.2

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.2.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