Help us improve
Share bugs, ideas, or general feedback.
From producer
Write playable MIDI for an advanced producer — chord progressions, basslines, drum patterns, melodies, arpeggios, stabs. Key/scale aware, theory-grounded. Use when the user asks to "write a chord progression", "make a bassline", "give me a drum pattern", "build a MIDI loop", or names key/tempo/genre. Outputs both a human-readable recipe and a real .mid file.
npx claudepluginhub patrickking67/producer --plugin producerHow this skill is triggered — by the user, by Claude, or both
Slash command
/producer:midi-lab <what to compose — key, tempo, vibe, length><what to compose — key, tempo, vibe, length>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Tempo: ask, or infer from genre (124–128 house, 128–132 techno, 174 DnB, 140 trance/hard, 100 hip-hop)
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
1. A human-readable recipe — table:
| Bar | Beat | Note(s) | Velocity | Length | Notes |
|---|
Velocity bands: 100–115 accents, 75–95 body, 50–70 ghosts. Flat velocity is the #1 thing that makes MIDI sound programmed.
2. An actual .mid file — save to ~/Music/Producer/midi/, descriptive name (tech_house_bassline_Am_126.mid). Use mido:
import mido, os
from mido import MidiFile, MidiTrack, Message, MetaMessage, bpm2tempo
mid = MidiFile(ticks_per_beat=480)
track = MidiTrack(); mid.tracks.append(track)
track.append(MetaMessage('set_tempo', tempo=bpm2tempo(126)))
track.append(MetaMessage('time_signature', numerator=4, denominator=4))
notes = [(0.0, 57, 110, 0.5), ...] # (start_beat, pitch, vel, length_beats)
events = []
for s, p, v, l in notes:
events.append((int(s*480), 'on', p, v))
events.append((int((s+l)*480), 'off', p, v))
events.sort(key=lambda e: (e[0], 0 if e[1]=='on' else 1))
last = 0
for tick, kind, p, v in events:
delta = tick - last; last = tick
track.append(Message('note_on' if kind=='on' else 'note_off',
note=p, velocity=v if kind=='on' else 0, time=delta))
out_dir = os.path.expanduser('~/Music/Producer/midi'); os.makedirs(out_dir, exist_ok=True)
out_name = 'tech_house_bassline_Am_126.mid'
mid.save(os.path.join(out_dir, out_name))
Naming pattern: <genre>_<part>_<key>_<bpm>.mid.
Chord progressions
Basslines
Drums
Melodies / leads
Humanize
If the Ableton MCP is connected:
.mid, offer to import directly via session-bridge (creates a new clip in the highlighted slot)search_live_manual for Live 12 MIDI tools (Scale, Arpeggiator, Note Echo, Random, generative tools) before quoting parameterssearch + fetch_tracks if the user names a reference; pull tempo/key from audio featureslibrary-browser if the user wants the MIDI to match an instrument preset they already ownDrop the .mid link, then ask: "Variant — busier, sparser, different key, or a complementary chord layer? Or drop it into the active clip in Live?"