Skip to content

Commit 144c58b

Browse files
committed
[Release] v0.2.2 prep — studio exclusion, sf2, tension, Windows fix
- pyproject.toml: v0.2.2; exclude midigpt/osc/studio* from wheel; remove midigpt-studio entry point - __init__.py: bump __version__ to 0.2.2 - .gitignore: add *.sf2, hf_model_card.md, slurm/ - README: OSC Studio → OSC Server; document sf2 download; citation - Remove broken arachno.sf2 symlink and untrack default.sf2 - sf2/SOUNDFONTS.md: instructions for downloading Arachno SoundFont - test_attributes.py: remove Tension/TensionDrum (not in public API) - tests/cpp: qualify TokenType as midigpt::TokenType to fix MSVC/winnt.h clash
1 parent 99a9826 commit 144c58b

13 files changed

Lines changed: 56 additions & 54 deletions

File tree

.github/workflows/wheels.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- uses: actions/checkout@v4
2121

2222
- name: Build wheels
23-
uses: pypa/cibuildwheel@v2.21.3
23+
uses: pypa/cibuildwheel@v2.24.1
2424

2525
- uses: actions/upload-artifact@v4
2626
with:

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ docs/
6262
# Cluster-specific SLURM scripts and configs
6363
slurm/
6464

65+
# HuggingFace model card (uploaded separately to HF Hub)
66+
hf_model_card.md
67+
68+
# SoundFont files (large binaries — see src/python/midigpt/osc/studio/static/sf2/SOUNDFONTS.md)
69+
*.sf2
70+
6571
# Legacy code
6672
legacy/
6773

README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ attention and a KV cache. The library supports bar-level infill (filling in
99
masked bars given surrounding context), autoregressive track generation from
1010
scratch, and attribute-conditioned generation (note density, polyphony, note
1111
duration). A real-time OSC server integrates with DAWs and live-performance
12-
environments via the `midigpt-studio` entry point. The Python package (`midigpt`)
12+
environments via the `midigpt-server` entry point. The Python package (`midigpt`)
1313
is distributed on PyPI and built with `scikit-build-core` for CPython 3.10,
1414
3.11, and 3.12 on Linux, macOS, and Windows.
1515

@@ -326,7 +326,7 @@ src/
326326
training/ TrainConfig, MidiGPTDataset, train()
327327
augmentation/ MaskBar, Transpose, VelocityScale
328328
attributes/ AttributeAnalyzer, BaseAttribute, ATTRIBUTE_REGISTRY
329-
osc/ MidiGPTServer, studio app
329+
osc/ MidiGPTServer (studio excluded from wheel)
330330
```
331331

332332
Token IDs, vocabularies, constraint graphs, and the step planner all live
@@ -389,17 +389,13 @@ containing `config.json` + `model.pt`.
389389

390390
---
391391

392-
## OSC Studio
392+
## OSC Server
393393

394-
The `midigpt[realtime]` extra adds a real-time OSC server and a browser-based
395-
studio for DAW integration.
394+
The `midigpt[realtime]` extra adds a real-time OSC server for DAW integration.
396395

397396
```bash
398-
# Start the low-latency OSC server (receives notes, sends generated bars)
399-
midigpt-server --ckpt models/ghost_500_bundle.pt --port 7400
400-
401-
# Start the full browser-based studio (wraps the server with a web UI)
402-
midigpt-studio --ckpt models/ghost_500_bundle.pt
397+
pip install "midigpt[realtime]"
398+
midigpt-server --ckpt models/yellow.pt --port 7400
403399
```
404400

405401
`midigpt-server` runs `MidiGPTServer`, which listens for OSC messages on a UDP
@@ -427,6 +423,16 @@ Runtime sampling parameters (`/midigpt/param/set`) include `temperature`,
427423
`top_p`, `mask_mode`, `model_dim`, `buffer_bars`, `lookahead_bars`, and
428424
`polyphony_hard_limit`, among others.
429425

426+
> The browser-based studio (`midigpt-studio`) is not included in the PyPI
427+
> package. Clone the repository and run it directly from source.
428+
>
429+
> The studio requires a SoundFont file for audio playback. Download
430+
> [Arachno SoundFont](https://www.arachnosoft.com/main/soundfont.php),
431+
> rename it to `arachno.sf2`, and place it in
432+
> `src/python/midigpt/osc/studio/static/sf2/`. See
433+
> [`SOUNDFONTS.md`](src/python/midigpt/osc/studio/static/sf2/SOUNDFONTS.md)
434+
> for details.
435+
430436
---
431437

432438
## Development

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
44

55
[project]
66
name = "midigpt"
7-
version = "0.2.1"
7+
version = "0.2.2"
88
description = "GPT-2 transformer for symbolic music generation"
99
readme = "README.md"
1010
license = { text = "MIT" }
@@ -37,7 +37,6 @@ all = ["midigpt[realtime,train]"]
3737
[project.scripts]
3838
midigpt-server = "midigpt.osc.server:main"
3939
midigpt-listen = "midigpt.osc.listen:main"
40-
midigpt-studio = "midigpt.osc.studio.app:main"
4140

4241
[tool.pytest.ini_options]
4342
markers = [
@@ -49,6 +48,7 @@ markers = [
4948
cmake.build-type = "Release"
5049
cmake.args = ["-DCMAKE_POLICY_VERSION_MINIMUM=3.5"]
5150
wheel.packages = ["src/python/midigpt"]
51+
wheel.exclude = ["midigpt/osc/studio*"]
5252

5353
[tool.cibuildwheel]
5454
build = "cp310-* cp311-* cp312-*"

src/python/midigpt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
except (ValueError, AttributeError):
1515
pass
1616

17-
__version__ = "0.2.1"
17+
__version__ = "0.2.2"
1818
__all__ = [
1919
"Score", "Track", "Bar", "Note",
2020
]
-5.69 MB
Binary file not shown.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SoundFonts
2+
3+
SF2 files are not included in the repository due to size and licensing.
4+
5+
Place your SoundFont files here so the studio can find them.
6+
7+
## Recommended: Arachno SoundFont
8+
9+
Arachno SoundFont is a high-quality GM SoundFont used as the default in
10+
MIDI-GPT Studio.
11+
12+
1. Download from the official site: https://www.arachnosoft.com/main/soundfont.php
13+
2. Rename the downloaded file to `arachno.sf2`
14+
3. Place it in this directory (`src/python/midigpt/osc/studio/static/sf2/`)
15+
16+
## Other SoundFonts
17+
18+
Any GM-compatible SF2 file works. Place it here and select it in the studio
19+
interface, or pass `--sf2 path/to/your.sf2` to `midigpt-studio`.
20+
21+
The `default.sf2` (5.7 MB, already in the repo) is a smaller fallback
22+
SoundFont used when no other file is available.

src/python/midigpt/osc/studio/static/sf2/arachno.sf2

Lines changed: 0 additions & 1 deletion
This file was deleted.

tests/cpp/test_constraints.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
using namespace midigpt;
2626
using namespace midigpt::tokenizer;
2727
using namespace midigpt::masking;
28+
// Explicitly shadow winnt.h's TokenType enum value (Windows-only collision).
29+
using TokenType = midigpt::TokenType;
2830

2931
namespace {
3032

tests/cpp/test_session_state.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ using namespace midigpt;
2525
using namespace midigpt::sampling;
2626
using namespace midigpt::tokenizer;
2727
using namespace midigpt::masking;
28+
// Explicitly shadow winnt.h's TokenType enum value (Windows-only collision).
29+
using TokenType = midigpt::TokenType;
2830

2931
namespace {
3032

0 commit comments

Comments
 (0)