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.3.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.3-cp312-cp312-win_amd64.whl (998.9 kB view details)

Uploaded CPython 3.12Windows x86-64

midigpt-0.2.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (758.6 kB view details)

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

midigpt-0.2.3-cp312-cp312-macosx_11_0_arm64.whl (568.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

midigpt-0.2.3-cp312-cp312-macosx_10_15_x86_64.whl (633.5 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

midigpt-0.2.3-cp311-cp311-win_amd64.whl (700.2 kB view details)

Uploaded CPython 3.11Windows x86-64

midigpt-0.2.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (759.1 kB view details)

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

midigpt-0.2.3-cp311-cp311-macosx_11_0_arm64.whl (568.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

midigpt-0.2.3-cp311-cp311-macosx_10_15_x86_64.whl (630.9 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

midigpt-0.2.3-cp310-cp310-win_amd64.whl (402.8 kB view details)

Uploaded CPython 3.10Windows x86-64

midigpt-0.2.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (758.3 kB view details)

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

midigpt-0.2.3-cp310-cp310-macosx_11_0_arm64.whl (567.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

midigpt-0.2.3-cp310-cp310-macosx_10_15_x86_64.whl (629.3 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: midigpt-0.2.3.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.3.tar.gz
Algorithm Hash digest
SHA256 b5003105473d7f6965f82d8419b3774dc1c006265fcac49fe7046221cf24c89f
MD5 31c3ba3bda978be80ea5e2b272b1820c
BLAKE2b-256 525a7061ece9033df3baadd8095137bb1d636ba885e8b26ac77d5fdc716c74a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3.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.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 998.9 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c6242ddcc827319f2e4a1992d998ef51bf746e6312a724c6cd3ad2ca83977bb9
MD5 e6bf718c10581b6f19c30ac870c5cd58
BLAKE2b-256 80d92d3a01ae781ce700e6a993f3e059422476996e5fd1440ccbbf897ea7a4fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6693beb9e61ae80e61384c6479b874fe8b74372e51783b42c9101cad96ad3ea7
MD5 2a7af34b7690326c3451df9a86d17eec
BLAKE2b-256 d6f23e0877ca651130169733ba1a20b8924fd87c1898ade1e651a0e8d81e7e6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6796cc55fc68af5fe0a290ee56fbce0d3706538ac89876823cd0ae65de1b1aa
MD5 b13fc70d6b3518b17d533ad8f6a70915
BLAKE2b-256 dde15c7b0beb4126363fc90c74e31fcd90074ab019e76887e38a5615cdfad0f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6ba3cc4e7b3d30f29906d344034753cd71f071e0e1742dc8668995f09629159b
MD5 95ac6cf63eb996ecfc1a0ceddec83dc3
BLAKE2b-256 cbe13a59a7f6d0a39916acce832cd6ee4e2633807471ccd2aa465fc29f66cbd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 700.2 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 af663e287b284593d0f4f0c46d22d3ccbfe17c2e84aa3a37061a2f095e293438
MD5 8c055bb0b68d6d73161c0bbc06fbb81b
BLAKE2b-256 75162a9ad27612dc62109373d7c906bed08e496565889e5ccf1d1cdd17d8f0d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cce3788ea54d261c98526958bbad5b7129f2e9956b65ab0eb3a6b7457710f65d
MD5 8f45600ffaf89e936f15aafcc04d04be
BLAKE2b-256 aa74147695a9b97591d2ae6428a8c1add47a4a7b85163cf188e9a52ddaf75abc

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7038783c7d2b07a6954388457f3e8c5666164dcf43b50bd8b41034f60b2ecd49
MD5 32a6853725ced915a76d7bb16097a319
BLAKE2b-256 1eaf7620faa0f8523f537105be8cc93bf26307ffd3c82e2d421fddbe7f8243c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8ffe0719da22ee8b6ff727765178f83fd905442104efa688e39956909ad4c31c
MD5 78cac22a7bcdbc2ca89f0819850c6a97
BLAKE2b-256 4654a2346e1f92ec06c2bfab79804ee0711fd7370121b8a1299d831d556ed99b

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: midigpt-0.2.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 402.8 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cc91c8f09057b9c38bf08b7e7626b0a18b816dc9a4074447694b57414925b637
MD5 174befd12aea5e49cf2be95a99757e93
BLAKE2b-256 08a5f4a8f112ee7c65edc06b95f4d932be6443d5ccf33147af0bcd43da21d1ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55cb8094e91aa77b111d95028c0333c41b58ea7b364dc6593ee9a77464498dd6
MD5 478bdf735a8be1efc6a3f9e51d175c04
BLAKE2b-256 83a83a8b7777113c95e0f4419c8266465d8c95dcccc0aa37fe445935518907ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb4bb498af5de66d272e1cd62dea2d3ba6569fcffd93134c074d853e8e29c6bc
MD5 6187a8acad2694294c13f52a091bcee3
BLAKE2b-256 68008c5f24775bc6299c97bcdd5dfbe0792e6320104de25a80ff96d14b315bec

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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.3-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for midigpt-0.2.3-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 26c0b0c32a95d633f4e99fdd61b0403b8927c80ef2f4dba56cd76d82cfcd912e
MD5 6956d1d282fe2034ba8f339f2520efd4
BLAKE2b-256 999ea4254bb7f34b373238e2e6fc37e1084b60894342f2efc53443af9d607b6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for midigpt-0.2.3-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