Skip to main content

GPT-2 transformer for symbolic music generation

Project description

Metacreation Lab

MIDI-GPT

MIDI-GPT is a GPT-2 transformer for symbolic music generation. It ships a C++ tokenizer, encoder, and decoder (exposed to Python via pybind11 as midigpt._core) alongside a pure-PyTorch GPT-2 implementation with SDPA attention and a KV cache. The library supports bar-level infill (filling in masked bars given surrounding context), autoregressive track generation from scratch, and attribute-conditioned generation (note density, polyphony, note duration). A real-time OSC server integrates with DAWs and live-performance environments via the midigpt-server entry point. The Python package (midigpt) is distributed on PyPI and built with scikit-build-core for CPython 3.10, 3.11, and 3.12 on Linux, macOS, and Windows.

Paper: https://arxiv.org/abs/2501.17011
Repository: https://github.com/Metacreation-Lab/MIDI-GPT


Installation

Users (inference only)

pip install "midigpt[inference]"

Pre-built wheels are available for CPython 3.10–3.12 on Linux (x86_64), macOS (x86_64, arm64), and Windows (AMD64). No compiler is required.

Training dependencies

pip install "midigpt[train]"

Adds lightning>=2.2, datasets>=2.18, pyarrow>=15.0, and python-dotenv.

Real-time OSC server

pip install "midigpt[realtime]"

Adds python-osc>=1.8, flask>=3.0, and flask-socketio>=5.3.

All extras

pip install "midigpt[all]"

Developer install (editable + C++ extension)

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

git clone https://github.com/Metacreation-Lab/MIDI-GPT.git
cd MIDI-GPT
pip install -e ".[inference,dev]"

scikit-build-core compiles the C++ extension and copies _core*.so next to src/python/midigpt/__init__.py so in-tree pytest works without reinstallation.

Extra What it adds
inference torch>=2.0, tqdm>=4.65
train PyTorch Lightning, HuggingFace datasets, pyarrow, python-dotenv
realtime python-osc, Flask, Flask-SocketIO
dev pytest, ruff, mypy
all realtime + train

Quickstart: Inference

Load a model and run a generation session

Use from_pretrained to load by name — the model is downloaded from HuggingFace Hub and cached locally on first use:

from midigpt import Score
from midigpt.inference.engine import InferenceEngine
from midigpt.inference.config import GenerationRequest, InferenceConfig, TrackPrompt

# Download and cache from HuggingFace Hub (Metacreation-Lab/MIDI-GPT).
engine = InferenceEngine.from_pretrained("yellow")   # or "ghost", "expressive"

# Load from a local .pt bundle instead.
# engine = InferenceEngine.from_checkpoint("path/to/model.pt")

# Read an input MIDI file.
score = Score.from_midi("my_song.mid")

# Infill bars 4–7 on track 0; leave track 1 untouched.
request = GenerationRequest(
    tracks=[
        TrackPrompt(id=0, bars=[4, 5, 6, 7]),
        TrackPrompt(id=1, bars=[], ignore=True),
    ],
    config=InferenceConfig(
        temperature=1.0,
        top_p=0.95,
        model_dim=8,      # context window in bars — must be in num_bars_map
        max_attempts=3,
    ),
)

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

Autoregressive generation from scratch

request = GenerationRequest(
    tracks=[
        TrackPrompt(
            id=0,
            bars=[],               # empty = generate the whole track
            autoregressive=True,
            attributes={"max_polyphony": 3},
            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 inference types

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

TrackPrompt fields

Field Type Default Meaning
id int Track index in the score
bars list[int] Bars to generate (infill targets or AR suffix)
autoregressive bool False Generate from scratch (no per-bar prompt)
ignore bool False Omit this track from the token stream entirely
mask_bars list[int] [] Bars hidden with MASK_BAR (disjoint from bars)
attributes dict[str,int] {} Quantized attribute overrides (density, polyphony, duration)
controls dict[str,Any] {} Non-attribute token locks, e.g. {"time_signature": 0}
bar_attributes dict[int,dict] {} Per-bar attribute overrides keyed by absolute bar index
bar_controls dict[int,dict] {} Per-bar non-attribute overrides keyed by absolute bar index

Sampling filters

InferenceConfig exposes a four-stage logit-filtering pipeline applied after the grammar mask and before torch.multinomial. Pipeline order: 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 descending-prob set summing to >= top_p
mask_k 0 (off) Remove the top-k most-likely tokens (novelty pressure)
mask_p 0.0 (off) Remove tokens summing to >= mask_p from the top (anti-nucleus)

A small mask_k=1 or mask_p=0.3 pushes the model off its highest-confidence picks, which is the most reliable way to get diverse retries when novelty_check=True.

Attribute controls

The attribute controls available depend on the checkpoint. Introspect at runtime via the engine's analyzer:

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

Pass quantized levels (integers in [0, size)) in TrackPrompt.attributes.

Mask modes

Control how future (not-yet-generated) bars appear in the context window:

Mode Behaviour
"token" Encoder emits a MaskBar token (requires vocab support)
"attention" Future bar positions zeroed in the KV cache via exact span masking
"attention_approx" Single prefill mask + KV surgery after prefill; 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.


Quickstart: Training

1. Preprocess parquet shards (run once per encoder/dataset combination)

Builds a valid-index cache so dataset initialization is instant on subsequent runs. The filter runs a fast metadata check (pure PyArrow, no MIDI parsing), then validates each row via an isolated subprocess that bisects on crash.

python -m midigpt.training.preprocess \
    --parquet /data/train/00000.parquet /data/train/00001.parquet \
    --checkpoint models/yellow.pt

Alternatively, supply a raw encoder config JSON:

python -m midigpt.training.preprocess \
    --parquet /data/train/*.parquet \
    --encoder-config models/yellow_encoder.json \
    --min-bars 4 --min-tracks 1

Index files are cached in ~/.midigpt/ (override with MIDIGPT_CACHE).

2. Launch training

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

3. Python API

from midigpt.training.trainer import TrainConfig, train

config = TrainConfig.from_file("models/train_config.json")
config.output_dir = "checkpoints/run_001"

train(config,
      train_path="/data/train/00000.parquet",
      eval_path="/data/valid/00000.parquet")

train() uses PyTorch Lightning internally. At the end of training it writes a packed .pt bundle (model_final.pt) containing weights, architecture config, and encoder config. Intermediate checkpoints are saved every save_steps steps.

Key TrainConfig fields

Field Default Notes
encoder_config_path "" Path to an encoder .json or a packed .pt bundle
n_embd / n_layer / n_head 512 / 6 / 8 Model architecture
max_seq_len 2048 Token sequence cap; must not exceed model n_positions
infill_probability 0.75 Fraction of samples trained with FillIn tokens
infill_bar_fraction 0.5 Max per-cell infill density (drawn from Uniform(0, this))
mask_apply_probability 0.5 Fraction of samples with MASK_BAR applied
mask_mode 2 MaskMode: 0=RANDOM, 1=STRUCTURED, 2=MIXED
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

The reference config is at models/train_config.json.


Model Zoo

The models/ directory contains encoder configs for the checkpoint families shipped in this repository. Packed .pt bundles embed the encoder config alongside the model weights; the configs below describe the tokenizer and capability set.

Model num_bars_map Infill MaskBar Microtiming Velocity bins Attributes Download
Yellow 4, 8 yes no no 32 note density, min/max polyphony, min/max note duration coming soon
Ghost 4, 8, 12, 16 yes yes no 32 note density, min/max polyphony, min/max note duration coming soon
Expressive 4, 8 yes no yes 128 note density, min/max polyphony, min/max note duration coming soon

model_dim in InferenceConfig is the context window length in bars, not a vocabulary dimension. Pass a value from the checkpoint's num_bars_map. The session automatically falls back to the next smaller window when the encoded prompt would overflow the model's positional budget (n_positions).

Microtiming (use_microtiming: true) means the encoder emits delta offset tokens that capture sub-grid note placement. The expressive config additionally uses emit_delta_tokens: true for a dedicated delta token domain.


Architecture

Two-language layout

src/
  cpp/                     C++ static library (midigpt_core) + pybind11 module (_core)
    io/                    MIDI reader / writer (symusic)
    tokenizer/             EncoderConfig, Vocabulary, Encoder, Decoder
    masking/               ConstraintGraph, GrammarConstraint,
                           PolyphonyConstraint, DensityConstraint,
                           AttributeValueConstraint
    sampling/              StepPlanner, SessionState
    bindings/lib.cpp       pybind11 entry point

  python/midigpt/
    _core*.so              compiled extension (copied here post-build)
    _types.py              Score, Track, Bar, Note dataclasses
    inference/             InferenceEngine, SamplingSession, GPT2LMHeadModel,
                           GenerationRequest, TrackPrompt, InferenceConfig
    tokenizer/             Tokenizer, load_checkpoint, CheckpointBundle
    training/              TrainConfig, MidiGPTDataset, train()
    augmentation/          MaskBar, Transpose, VelocityScale
    attributes/            AttributeAnalyzer, BaseAttribute, ATTRIBUTE_REGISTRY
    osc/                   MidiGPTServer (studio excluded from wheel)

Token IDs, vocabularies, constraint graphs, and the step planner all live exclusively in C++. EncoderConfig.from_json(str) is the entry point for everything that depends on vocab sizes or token domains. Tokenizer.vocab_size() is authoritative — do not recompute it from sum(token_domains[*].domain_size).

Inference data flow

MIDI file ──► Score.from_midi()
                      |
                      v
           _core.Encoder.encode()       (C++ — token IDs)
                      |
                      v
       InferenceEngine.session(score, request)
                      |
                      v
       SamplingSession.run()
         for each GenerationStep from _core.StepPlanner:
           1. build ConstraintGraph    (_core C++)
           2. encode prompt            (_core.SessionState)
           3. GPT2LMHeadModel.forward  (PyTorch — logits, past_kv)
           4. apply grammar mask + top_k/top_p/mask_k/mask_p filters
           5. torch.multinomial        (sample one token)
           6. _core.SessionState.advance(token)
           7. repeat until state.complete()
                      |
                      v
           _core.Decoder.decode()      (C++ — Score)
                      |
                      v
               Score ──► to_midi()

InferenceEngine accepts any callable with signature (input_ids, past_kv) -> (logits, present_kv). GPT2LMHeadModel is the production implementation; StubModel in tests/python/test_inference.py is the test double.

Packed checkpoint format (format_version: 1)

A single .pt file holds:

{
    "format_version": 1,
    "arch":           "gpt2",
    "config":         {"vocab_size": ..., "n_positions": 2048,
                       "n_embd": 512, "n_layer": 6, "n_head": 8},
    "encoder_config": {...},   # full encoder JSON
    "state_dict":     {...},   # HuggingFace GPT-2 key layout
}

GPT2LMHeadModel.from_pretrained(path) and load_checkpoint(path) both auto-detect this format. load_checkpoint also accepts a legacy directory containing config.json + model.pt.


OSC Server

The midigpt[realtime] extra adds a real-time OSC server for DAW integration.

pip install "midigpt[realtime]"
midigpt-server --ckpt models/yellow.pt --port 7400

midigpt-server runs MidiGPTServer, which listens for OSC messages on a UDP port and sends generated notes back over the same connection. Generation is triggered bar-by-bar via /midigpt/bar/end and runs on a dedicated background thread so the OSC listener never blocks.

Selected OSC address map:

Address Direction Description
/midigpt/session/init in Start a new session; server replies with /midigpt/capabilities
/midigpt/session/start in Begin real-time generation
/midigpt/track/create in Register a track (human or agent)
/midigpt/note in Push an incoming note event
/midigpt/bar/end in Signal end of a bar (triggers generation if scheduled)
/midigpt/param/set in Adjust sampling parameters at runtime
/midigpt/attr/set in Set agent attribute overrides (quantized levels)
/midigpt/generated/note out Emit a generated note
/midigpt/generated/features out Per-bar statistics (density, polyphony, etc.)
/midigpt/capabilities out Attribute support for the loaded checkpoint
/midigpt/prompt/state out Per-bar context/mask/generate state snapshot

Runtime sampling parameters (/midigpt/param/set) include temperature, top_p, mask_mode, model_dim, buffer_bars, lookahead_bars, and polyphony_hard_limit, among others.

The browser-based studio (midigpt-studio) is not included in the PyPI package. Clone the repository and run it directly from source.

The studio requires a SoundFont file for audio playback. Download Arachno SoundFont, rename it to arachno.sf2, and place it in src/python/midigpt/osc/studio/static/sf2/. See SOUNDFONTS.md for details.


Development

Python tests

pytest tests/python/                                            # all tests
pytest tests/python/test_inference.py::test_inference_session  # single test
pytest tests/python -m "not slow and not inference"            # CI subset

Test markers:

  • slow — requires real model bundles on disk
  • inference — requires torch and a real model

C++ tests

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

C++ test targets: test_score, test_io, test_vocabulary, test_tokenizer, test_constraints, test_step_planner, test_session_state, test_domain_transforms.

Linting and type checking

ruff check src/ tests/
mypy src/python/midigpt/

Building wheels

pipx run cibuildwheel --platform linux    # or macos / windows

Wheels are built for CPython 3.10, 3.11, and 3.12 on Linux (manylinux_2_28 x86_64), macOS (x86_64 and arm64), and Windows (AMD64). musllinux and 32-bit targets are skipped.

CI / release

Tagging a commit as vX.Y.Z triggers .github/workflows/wheels.yml, which builds and tests wheels on all platforms, creates a draft GitHub Release, and publishes to PyPI via OIDC Trusted Publishing (gated by the pypi environment).

Logging verbosity

Set MIDIGPT_LOG_LEVEL=DEBUG (or a numeric level) before importing the package. The Python side accepts both string names (DEBUG, INFO, WARNING) and integer levels. The C++ core uses the same environment variable via midigpt._core.set_verbosity.


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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

midigpt-0.2.2.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

midigpt-0.2.2-cp312-cp312-win_amd64.whl (998.8 kB view details)

Uploaded CPython 3.12Windows x86-64

midigpt-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (758.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

midigpt-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (568.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

midigpt-0.2.2-cp312-cp312-macosx_10_15_x86_64.whl (633.4 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

midigpt-0.2.2-cp311-cp311-win_amd64.whl (700.0 kB view details)

Uploaded CPython 3.11Windows x86-64

midigpt-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (758.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

midigpt-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (568.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

midigpt-0.2.2-cp311-cp311-macosx_10_15_x86_64.whl (630.7 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

midigpt-0.2.2-cp310-cp310-win_amd64.whl (402.6 kB view details)

Uploaded CPython 3.10Windows x86-64

midigpt-0.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (758.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

midigpt-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (567.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

midigpt-0.2.2-cp310-cp310-macosx_10_15_x86_64.whl (629.1 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file midigpt-0.2.2.tar.gz.

File metadata

  • Download URL: midigpt-0.2.2.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midigpt-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4789641dcd286b955d81640337d9a6cb7c594debf68b86e62a717c0e11a9180f
MD5 04a7719d852e9829a12d3d26808cd6b7
BLAKE2b-256 61ee6bf86121d7c7f2821a5003d5531bcc2f5ba4fd6039aa56f0b96550bcaea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2.tar.gz:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 998.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midigpt-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f6bcfb778ef94aae0b54d44cbe394c868a9e981a01e05b2ca0bdf48efa33fad1
MD5 7eb803ce3c55975eef023d745b6c6c21
BLAKE2b-256 19a9f79e0d313f36b497bb8f7ca24bb19c07ceb5e8a1d6daef04295bceb0ab2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8359069a91cbeca0fdb48c1744ff7d0322c1716703392705b5d829f33a1df45b
MD5 c8ea320737f7170e64ce83520141854b
BLAKE2b-256 5cc0ca33f773cb6ac23c7303cac008c1d6a9668f1821c29e723558ec40ea7b85

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0ce69e3f0ce5347aee6f6ae289a6eeb38193ab9a29eafdff33ec46669ea2ccf
MD5 fcf6dbd97b251636ad80dec5d2c142f0
BLAKE2b-256 52ebb2d09ddba22c7df02f9a0cf2198b3854d34937823d31f3e545b939b0f051

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6e5141e7d862277c6e8afceeef5ef6a8cb1498c7f67c60f2abb26ad5eefc1a02
MD5 973e8b2fbc42ed823381534b41ee7967
BLAKE2b-256 88c271134e2e37b8e0a39fd91cfa331e88f8b3a1cc1ec5a156041249c9b4c3ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 700.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midigpt-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4aac1ab0116bbaca85d1c802fb96790c5914c24259812a4d2cee423f99db5f0c
MD5 86e2208fc12882e0724bf018aaee1d51
BLAKE2b-256 08e88baa58e71c458c46e6ba0b3f6550b086a550791b5c4393a8aa254432c1bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e4877a8849e324b6fd536a271c9342ab0ad0b68974319519a60565d98da2f3a
MD5 0e30d566b03e616437840db765acba8c
BLAKE2b-256 8f75f15a2188826ed47edd2063f3acf3cd027654c587b55a9ee7b65c98869d82

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 213131924da853eb4dc2b8d6ecb675cfe6cbcad681e54a9d8aa74b274f726f51
MD5 a3fb0aba107f0819fd3cc5adbf0aca6c
BLAKE2b-256 f5954f430e21c828f16bd27a6c01a28df3f6788463b800a58dc46b8a56505aac

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ca2acaeb9ff74ac26df106c09c42d56ea3e9b2c8e0893ee59b815512cc980539
MD5 ffedfe863049c4a8f4348bee2dd68dea
BLAKE2b-256 488774d5328a9199643156995702f3bc099ea3c498941c39f3bac91ed722ec9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 402.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midigpt-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ac4d40ae27c79554aa2ad45a984201f4871cf280e6f3482634c486bae650024b
MD5 0aecbda6d40bd8138d87c2590d3e446c
BLAKE2b-256 f160258bc378f7df49a920be26c49914cf979259ef575bab2d566bbce215408b

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1bd4f85dcf4c27b92a4a80e0a9b04de38d9445292b5750013bfa2fe4eff3f747
MD5 0e5b82cc59b13e9bc97cfe59a0679f0d
BLAKE2b-256 8430a0547219d8984388a45f4b1eba882f825ee5c0221771676caf5b8a26e206

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ec07a1378c4b43cad02d8fac35e67c1387a01fe8ee370aabcc012e4bb4a7617
MD5 b74d2b3ac5e6424372990e74fc74248b
BLAKE2b-256 d7955d2edf3b6e11ab852296010e569a8e716aa6dea14876479897e58a8bb48a

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midigpt-0.2.2-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 870eb33bbabf618a584afac18381e08abc6f3ba1981203938ae45a97dbc8c2a4
MD5 ae6c49bdf7427fa89b59aec2952788cb
BLAKE2b-256 b86e44d82460dfef9e3bc943a6499cd5ea071c61a963037a5b066554562d23bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.2-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on Metacreation-Lab/MIDI-GPT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page