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

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.0
File Size Uploaded Provenance
midigpt-0.4.0.tar.gz 9.1 MB With provenance Details

Built distributions (wheels)

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

Total release size: 26.1 MB

Release files / midigpt-0.4.0.tar.gz

Download URL midigpt-0.4.0.tar.gz
Size 9.1 MB
Tags Source
SHA-256 checksum
How to use checksums
1ac9a5b219575f16d34065ccd814fd75add2546e6077d0b2569038ac30c40646
BLAKE2b-256 checksum
How to use checksums
ac8c61786e03e1ed88925633560f80a816c0c0efdc89c036476c5baf994784a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4d100ee46b53ad0b2436d75c8a1024df9628b4c428a3695ad3b550824ad4918a
BLAKE2b-256 checksum
How to use checksums
7e18ddcb0949d6da2adaeb1bc1793148c413736bb1edb45708ab9af2275e5eda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 859.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
903de5e59d806820cf9cfcc08fc2c6dcd8d20a73333b56df39f3e80b52308583
BLAKE2b-256 checksum
How to use checksums
893563753b632779da7d7cc5712f51b6f17b94dcbadd6684e95a86d8c165cc89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Size 637.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d34fbc5620a19780a3e9a12001e13eb46f0508056913674cbcf24e5a0a02f58c
BLAKE2b-256 checksum
How to use checksums
c2ebe5cec6e053903af64d6107f9eb3e5a7ab0791d75acc9b11ae382a80fc817
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 724.4 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
17be76730a8af3493d73acfcf8faa9bee97a030c854ce60617fef9b9baa86b26
BLAKE2b-256 checksum
How to use checksums
ad5b9669f180e49a1e25e619c7ef5fcf1a3e932e1a973621b9ffedc2a107abfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

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

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 858.9 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7d9b955dc124b1ef4f59f34d56689acb4db0b5d31aaf3c52d52a7589ef9badd8
BLAKE2b-256 checksum
How to use checksums
57c41568683f2fa10a7d4e4c1b6432973c5c0ed58eba74c4baf25c2b151261fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 636.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
38dd7bd917f3c243278a605526420cd9f6f1642806161c80eecc1b3dd2ca7b1d
BLAKE2b-256 checksum
How to use checksums
fa79787c5786ea78a176a41867d938a62eeb7bd8d28e84ff9ef696f150208f95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

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

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp312-cp312-win_amd64.whl
Size 1.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8e702d72108212f027fc7fbdfed2f32d8682c3259d2e6593a9d472fdeb2c5f20
BLAKE2b-256 checksum
How to use checksums
41f70f053f75019d617bce4b156951b4eebeb464d2e2e6197083183233be2aa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 859.0 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7ea6a5fb92af0669c8d1e0622c7ce70aaa38eedf146bd78b6c867491341e230c
BLAKE2b-256 checksum
How to use checksums
cde116f1442ead74c81e9c11c6f3f1b2a410b16bdca9fb4dafd9826afae4129e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 636.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
37fa86cb386bd895366dedb3dda653e377fbac4f3d31c627e349d0d5ca89715d
BLAKE2b-256 checksum
How to use checksums
99cda2fdc8d12f8adfb00ca79046724ccf3390d40097ffbe609b7c98175bd44f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp312-cp312-macosx_10_15_x86_64.whl
Size 724.2 kB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
dc370844a3adbf1bb8bbe2b69ddab762496791a62d4fa4231cf1516e4e087d7a
BLAKE2b-256 checksum
How to use checksums
ff02b4046e318f0f5f79492f7429844b3d976ffeb8b2937fdaee2d89658a0e60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp311-cp311-win_amd64.whl
Size 832.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
97c0f20432bd49a6a7db6e3b17648442e1e7fa3e59b680ebe78a649966541ce7
BLAKE2b-256 checksum
How to use checksums
49a86f3002182ef47f10db090ed4408fbc015f26ea9144b1f85b19a4a438d8f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 858.0 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
929ee94bfd26a5424697684c520102b9188d8fd4b9dfebbb5d25772369467750
BLAKE2b-256 checksum
How to use checksums
d100d7211d0ece1921ffd74b30af0206820814459fe78849e0474b07c23094a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 635.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a72fa6033de331c1be6f6cd7b368dded0e900c3ae5a4147c1eaac2b98a4f8d9d
BLAKE2b-256 checksum
How to use checksums
d94ee56e803bf89f2782767da310671b1b2ed6c7df4ce32fc962307e5c159944
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp311-cp311-macosx_10_15_x86_64.whl
Size 720.4 kB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
d210124f10e4276832514c66ff848d5c8fec1e4bfd79edc9016fba3fa4bf3e74
BLAKE2b-256 checksum
How to use checksums
302a442a6eae5288d2f8941f4b721fe3fa42e41272b5b1c36e16ff4de557b5f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp310-cp310-win_amd64.whl
Size 506.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
94b976e46ba2bc98fefbf948cd2ff28d19364b24e781eebc8e6b20b90ee5e5e1
BLAKE2b-256 checksum
How to use checksums
c61b71542d4a77194de20c6404bb17787d5e360763b762644d29e5fa90a0287c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 857.3 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2fbbdf04465d354dabfb0e1585c889ed6b196c21dac0319303a15a0b6f88caed
BLAKE2b-256 checksum
How to use checksums
a7f73af0f935485c79028e804f5d77fae4967dd1605d3c372304c570d152b5b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Size 633.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5dbeab89e38153ce296997141dc6c5c826adf9afb06bf829c8ef5359e10995fb
BLAKE2b-256 checksum
How to use checksums
7c8a9f7db7f23f77e64efe8d89ff9f5b9a33f917bd32e9431102d35741aeebd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

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

Download URL midigpt-0.4.0-cp310-cp310-macosx_10_15_x86_64.whl
Size 718.9 kB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
63bff7071026c0e32b95e8efe52e74a0e4bbdf5ebdc3051881d2528453d1ea55
BLAKE2b-256 checksum
How to use checksums
77ec65abcf5fe3ebd6a5fa29c37727d299ccb046c3c01114a174d738db68ae76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 20, 2026.

Transparency log

Security for midigpt 0.4.0

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.0.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 20, 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.

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