midigpt
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 by controlling note density, polyphony, and note duration — globally or per bar
- Run a MIDI-GPT API server via a HTTP server
- 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.12 on Linux (x86_64), macOS (x86_64 + arm64), and Windows (AMD64). No compiler needed.
| 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 |
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/.
Models
| Name | num_bars_map |
Infill | Attributes | Download |
|---|---|---|---|---|
yellow_medium |
4, 8 | yes | note density, polyphony (min/max), note duration (min/max) | yellow_medium-final.safetensors |
yellow_small |
4, 8 | yes | note density, polyphony (min/max), note duration (min/max) | yellow_small-final.safetensors |
prism_medium |
4, 8, 12, 16 | yes | key signature, pitch range, silence, note duration, note density (bar), polyphony (bar), pitch class set, genre | prism_medium-step58000.safetensors — training in progress |
expressive_medium |
4, 8, 12, 16 | yes | key signature, pitch range, silence, note duration, note density (bar), polyphony (bar), pitch class set, nomml, genre | expressive_medium-step56000.safetensors — training in progress |
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. See docs/models.md for the full breakdown.
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),
)
result = engine.session(score, request).run()
result.to_midi("output.mid")
Autoregressive generation from scratch
request = GenerationRequest(
tracks=[
TrackPrompt(
id=0,
bars=[],
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, polyphony_hard_limit=4),
)
result = engine.session(score, request).run()
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 from scratch (no per-bar prompt) |
ignore |
bool | False |
Omit this track from the token stream |
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.
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": "melodic", ...}
Pass quantized levels (integers in [0, size)) in TrackPrompt.attributes.
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 |
Must be 0 — the C++ MIDI parser is not fork-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 name or repo ID)
midigpt-http --pretrained yellow --port 8000
midigpt-http --pretrained Metacreation/MIDI-GPT --hf-filename yellow_medium-final.safetensors --port 8000
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 |
GET /info |
Model capabilities and attribute sizes |
POST /generate |
{score, request} → {score, timing} |
# 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}
}
}' | jq .score
Use --device cuda, --device mps, or --device auto (default) to select the compute device.
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.12, 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
MIT License — Copyright (c) 2026 Metacreation Lab. See LICENSE.
Release files for midigpt 0.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| midigpt-0.3.4.tar.gz | 18.1 MB | Details |
Built distributions (wheels)
Total release size: 27.0 MB
Release files / midigpt-0.3.4.tar.gz
| Download URL | midigpt-0.3.4.tar.gz |
|---|---|
| Size | 18.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c950344702c6a72ae566e8d96151f8df8724da5c4d855e9fa91326bdc26fa80f
|
|
BLAKE2b-256 checksum How to use checksums |
39c86972e4de6d3d20dd862d507a9fa1c81326046f26908f09d785097599be1d
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp312-cp312-win_amd64.whl
| Download URL | midigpt-0.3.4-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b2e65f23077efd921cab5e13d4c9c9314b4678c027b108af9e718eca606bedba
|
|
BLAKE2b-256 checksum How to use checksums |
d93217feb1924ed06ebdb88abb6633b0d39280ae58831d92fc07e00933970ac8
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | midigpt-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 840.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 |
57ccc85917aa7fef3773b3132ef0747cd8cfa59e58cf8df804f4bc4b8f0a8a62
|
|
BLAKE2b-256 checksum How to use checksums |
4d83a9ecb0949b070919cacaff92f0d8eeecd3765c6ed7b6091b3a1685755725
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | midigpt-0.3.4-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 618.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
898d1f5b732cc53604c07bac01184179c4194411c5d2751ff3dce82f14287604
|
|
BLAKE2b-256 checksum How to use checksums |
340263717a7be949fb29217b70c7d46616184bd0135059aaa1a81252d310e90b
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl
| Download URL | midigpt-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl |
|---|---|
| Size | 706.1 kB |
| Tags | CPython 3.12 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
a8b90de3ca4a5604173b5f0854ff9380180d11b2599405b2dceb6a2368613770
|
|
BLAKE2b-256 checksum How to use checksums |
76114324a479f6c9e2780435fdbdb2595d4b04fcac3b156570933fa89cc605fa
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp311-cp311-win_amd64.whl
| Download URL | midigpt-0.3.4-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 812.0 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ee707153443a3ad9d784c5ee8401b8497d15f0ce8e0c9ee900ab1d624fe74690
|
|
BLAKE2b-256 checksum How to use checksums |
f7000b584dc947e53e9d4f775fb9d252441ca04a9b5212f7eb0fba33067459fb
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | midigpt-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 839.2 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9c33793aa7d9636d6381687f001a9c264546ca9b15acde804037d018cd19fdc1
|
|
BLAKE2b-256 checksum How to use checksums |
c5dcf813d754f5d9c27461ad69fdf0970b09bf03bf7d04431fd3148203242707
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | midigpt-0.3.4-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 617.3 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
44cd0e6b458decfca8be98a410297063ba211b388e05b8f3f29a78bf661a1c06
|
|
BLAKE2b-256 checksum How to use checksums |
4764e4898db9bfc28c4fff46eca83a3bd27388d80829360e2a1912e515976096
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl
| Download URL | midigpt-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl |
|---|---|
| Size | 702.2 kB |
| Tags | CPython 3.11 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
502d01071ccd1c85c546c7924699819df8b9349e7a6dc63e14223a730c548c54
|
|
BLAKE2b-256 checksum How to use checksums |
820c1e11a11a2dee91f31b7611835f0f0da328b9314b493cf42c03149608fb50
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp310-cp310-win_amd64.whl
| Download URL | midigpt-0.3.4-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 487.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5f09b1220496a6d1ee384cc0899c016b67d65f1d1d2c5c528a19d3c942323c63
|
|
BLAKE2b-256 checksum How to use checksums |
f4ccc5b554a37970bd0aa25171852c2c88faa57211482d479ff29825bbd792b2
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | midigpt-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 838.6 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ccfaffa063d66a94fa26411e80dc7779e3b2a25bc77dc986d8a7c59d81537e1b
|
|
BLAKE2b-256 checksum How to use checksums |
7bc25fbfa13b90b4f6f741c4c2a5be27f7cd6651d160ba7106d17815e03b5fa8
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | midigpt-0.3.4-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 615.2 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b87a1ed8e4c8b2d863e083debee6fe250506fe4441f8ad352e43888df5f8f84a
|
|
BLAKE2b-256 checksum How to use checksums |
640e4f5e3a47f23cbb40738a1138cec75e020ae7d6a3011d24ed1eeb0edc3ddb
|
| 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 Aug 19, 2026.
Transparency logRelease files / midigpt-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl
| Download URL | midigpt-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl |
|---|---|
| Size | 700.8 kB |
| Tags | CPython 3.10 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
4e34aaf72709e844d5b29862c9e9e0d7c0583bd26d87b3b04efb1328f25bf19f
|
|
BLAKE2b-256 checksum How to use checksums |
e011d270048ebcc09ae1cadf5db8580e554dd208da24293c792b10a172c81030
|
| 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 Aug 19, 2026.
Transparency log