yishengjiang99/gbk-composer
v1.0.0
Compose and edit structured MIDI music in five styles, shape dynamics with CC automation, preview it in a piano-roll player, render and play WAV in your browser right in the chat, and download MIDI. No account needed.
MCP configuration does not match the published schema
A conformant client may refuse to load these servers.
hosts
- compose.grepawk.com
plugin.json
- name
- gbk-composer
- version
- 1.0.0
- description
- Compose and edit structured MIDI music in five styles, shape dynamics with CC automation, preview it in a piano-roll player, render and play WAV in your browser right in the chat, and download MIDI. No account needed.
- author
- Yisheng Jiang
- homepage
- https://compose.grepawk.com
- repository
- https://github.com/yishengjiang99/gbk
- extensions
- com.openai
mcp.json
- gbk_composerstreamable-httphttps://compose.grepawk.com/mcp
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"author": {
"name": "Yisheng Jiang"
},
"description": "Compose and edit structured MIDI music in five styles, shape dynamics with CC automation, preview it in a piano-roll player, render and play WAV in your browser right in the chat, and download MIDI. No account needed.",
"extensions": {
"com.openai": {
"interface": {
"capabilities": [
"Interactive",
"Write"
],
"category": "Entertainment",
"defaultPrompt": [
"Compose a 16-bar Baroque fugue in D minor for organ, then show me the piano roll.",
"Write a 24-bar jazz piece in F major at 140 BPM, add a walking bass, then let me render and play it in the chat.",
"Compose a 16-bar ambient piano piece, then add a CC11 crescendo in bars 9–16 and show me the piano roll."
],
"developerName": "Yisheng Jiang",
"displayName": "GBK Composer",
"longDescription": "GBK Composer is an AI music composition tool. Describe a piece (style, key, tempo and instruments) and it writes an original multi-track instrumental arrangement, lets you edit it one passage at a time, plays it back right in the chat, and exports it as a WAV audio file or a MIDI file.\n\nGBK Composer writes and edits real MIDI music from a chat. Ask for a piece in one of five styles (baroque, classical, pop, jazz, ambient) with a key, tempo, meter, length and instruments, and GBK builds a structured, multi-track arrangement with a deterministic, seeded engine. Baroque requests use a Bach-style fugue generator with continuo.\n\nFollow-up prompts change one passage without touching the rest: add a melody, bass, walking bass, chords, arpeggio, drums or counterpoint part; transpose, invert, quantize, humanize or vary notes; double a line at the octave; shape dynamics with CC curves such as a CC11 crescendo; and change tempo, instruments or the mix. Every edit is saved as a new revision.\n\nInstruments come from the bundled GeneralUser GS SoundFont, including violin, viola, cello, strings, harpsichord, piano, organ, flute, oboe, clarinet, bassoon, horn, trumpet, guitar, bass, choir and drums.\n\nTo hear a piece, GBK shows an in-chat player with a piano roll, track list and dynamics lanes. Press Render in the player and the WAV is rendered in your browser with the GBK SoundFont engine; it plays right in the chat and can be downloaded. Clients without a browser (such as Codex) get the same WAV rendered on GBK's server with the same engine, returned as a download link together with a Standard MIDI file. No account is needed.\n\nEach composition is private and opened only with the access key returned to your chat (or your GBK account, if you sign in). GBK publishes a public share page only when you ask it to.",
"shortDescription": "Compose music, export WAV/MIDI",
"websiteURL": "https://compose.grepawk.com/chatgpt",
"logo": "./assets/icon.png",
"composerIcon": "./assets/icon.png",
"brandColor": "#3A2E9E",
"brandColorDark": "#FFB627",
"privacyPolicyURL": "https://compose.grepawk.com/privacy",
"termsOfServiceURL": "https://compose.grepawk.com/terms",
"supportURL": "https://compose.grepawk.com/support"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Compose a new Baroque fugue and show it in the interactive player.",
"prompt": "Compose a 16-bar Baroque fugue in D minor for organ, then show me the piano roll.",
"tools_triggered": "gbk_create_composition, gbk_show_composition_ui",
"expected_behavior": "A new private composition (baroque, D minor, 16 bars, organ voices) is created and the GBK player shows its piano roll, tracks and CC11 lane. Works in a clean conversation with no sign-in."
},
{
"description": "Compose, add a part with a targeted edit, and render it in the in-chat player (no Studio tab).",
"prompt": "Write a 24-bar jazz piece in F major at 140 BPM, add a walking bass, then let me render and play it in the chat.",
"tools_triggered": "gbk_create_composition, gbk_get_composition, gbk_edit_composition, gbk_show_composition_ui",
"expected_behavior": "A jazz composition is created and a walking_bass part generated; the GBK in-chat player is shown. Pressing Render in the player synthesizes the WAV in the user's browser with progress and Stop, plays it in the chat, and saves validated WAV and MIDI download links. Without sign-in the WAV render and download work in the player (saved to the project when the player has the project's accessToken). If the model calls gbk_render_composition instead, the WAV and MIDI are rendered on GBK's server (no Studio tab needed) and returned as signed download links. Works in a clean conversation: gbk_create_composition returns compositionId plus a private accessToken, and the model passes both on every follow-up call in the same chat (no sign-in, no earlier history needed)."
},
{
"description": "Targeted, revision-safe edit of one passage (self-contained: composes first, then edits).",
"prompt": "Compose a 24-bar jazz piece in F major, then double the bass an octave lower in bars 9–16 and add a CC11 crescendo.",
"tools_triggered": "gbk_create_composition, gbk_get_composition, gbk_edit_composition",
"expected_behavior": "A private jazz composition is created; the bass in bars 9–16 is doubled at -12 semitones and a CC11 crescendo is added in one edit; the revision increments and the result reports untouchedSectionsUnchanged: true (bars 1–8 and 17–24 unchanged). Works in a clean conversation: gbk_create_composition returns compositionId plus a private accessToken, and the model passes both on every follow-up call in the same chat (no sign-in, no earlier history needed)."
},
{
"description": "Render on GBK's server and return download links (self-contained).",
"prompt": "Compose an 8-bar ambient piano piece and give me download links for its WAV and MIDI files.",
"tools_triggered": "gbk_create_composition, gbk_render_composition (optionally gbk_get_artifacts)",
"expected_behavior": "A private composition is created and rendered on GBK's server (no Studio tab or browser needed); short-lived signed WAV (44.1 kHz stereo PCM16) and MIDI download URLs with size and SHA-256 are returned. No audio bytes in the chat. Works in a clean conversation: gbk_create_composition returns compositionId plus a private accessToken, and the model passes both on every follow-up call in the same chat (no sign-in, no earlier history needed)."
},
{
"description": "Publish only on explicit request (self-contained).",
"prompt": "Compose an 8-bar classical piece for string quartet, then publish it as a public share page.",
"tools_triggered": "gbk_create_composition, gbk_publish_composition",
"expected_behavior": "The new composition is created private, then made public only because the user asked; a share page URL with no access key in it is returned. No other composition changes visibility. Works in a clean conversation: gbk_create_composition returns compositionId plus a private accessToken, and the model passes both on every follow-up call in the same chat (no sign-in, no earlier history needed)."
}
],
"negative": [
{
"description": "Lyrics and sung vocals are out of scope: GBK writes instrumental MIDI only.",
"prompt": "Write lyrics for a summer pop song and have a singer perform them."
},
{
"description": "Bulk deletion is not supported: GBK can delete only one account-free composition at a time with its edit key, so it must not claim to delete all compositions or modify unrelated data.",
"prompt": "Delete all of my GBK compositions."
},
{
"description": "Unrelated request; the plugin should not be invoked.",
"prompt": "What's the weather in Paris tomorrow?"
}
]
},
"demo_recording_url": "https://yishengjiang99.github.io/gbk/submission/gbk-composer-demo.mp4"
},
"publication": {
"release_notes": "1.0.0: first public release. Compose in five styles (baroque, classical, pop, jazz, ambient) with a deterministic, seeded engine; targeted revision-safe edits (parts, transforms, octave doubling, CC curves, tempo, instruments, mix); interactive piano-roll player; WAV and MIDI rendered in the in-chat player in the user's browser, or on GBK's server for clients without a browser; compositions private until the user asks to publish."
}
}
},
"homepage": "https://compose.grepawk.com",
"keywords": [
"music",
"composition",
"midi",
"fugue",
"orchestration"
],
"name": "gbk-composer",
"repository": "https://github.com/yishengjiang99/gbk",
"version": "1.0.0"
}
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- com.openai