mcpField
M
midi-synth

midi-synth

github.com/maystudiosクリエイティブ・メディア2674 回インストール11 週間前に更新
リポジトリ

midi-synth について

midi-synthは、MIDIやMusicXMLをStrudelパターンや音声に変換するスキルです。音楽制作者向けに、ベロシティ、長さ、利用可能なキー分析を使って不要なノートを除去します。

主な機能

  1. 01MIDIとMusicXMLの入力
  2. 02Strudelパターンの生成
  3. 03WAVとMP3へのレンダリング
  4. 04ベロシティと長さによるゴーストノート除去
  5. 05キーに基づくノートフィルタリング

活用シーン

  1. 01楽譜からStrudelコードを生成
  2. 02MIDIをWAVまたはMP3に変換
  3. 03分析データを使った不要音の除去

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/maystudios/claude-skills --skill midi-synth

インストール後、Claude Code で/midi-synthを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
render.py
to_strudel.py
soundfonts/
README.md

詳細

MIDI シンセサイザー

MIDI/MusicXML をオーディオに合成し、Strudel のライブコーディングパターンを生成します。 分析データを使って、ゴーストノートの除去、正確なテンポの設定、キーを考慮したフィルタリングを行います。

スクリプト

  • scripts/to_strudel.py -- MIDI/MusicXML から、音価を考慮した表記で Strudel パターンを生成します
  • scripts/render.py -- MIDI/MusicXML から、クリーニングと変更を加えて WAV/MP3 を生成します

どちらのスクリプトも、オーディオからMIDIへの変換機能が生成した *_analysis.json ファイルを自動検出し、テンポ、キー、ダイナミクスに利用します。

ワークフロー

  1. 入力形式を確認します:MIDI(.mid)または MusicXML(.musicxml)
  2. オーディオからMIDIへの変換機能が生成した分析 JSON を自動検出するか、指定します
  3. ワークフローを選択します:
    • クリエイティブ: to_strudel.py が strudel.cc 用の Strudel コードを生成します
    • レンダリング: render.py が WAV/MP3 を生成します
    • 両方: 同じ入力に対して両方を実行します
  4. ゴーストノートは、ベロシティ、音価、キーのフィルターを使って自動的に除去されます

Strudel コードの生成

# Basic (auto-detects analysis JSON next to input)
py -3.12 scripts/to_strudel.py "song.mid"

# From MusicXML
py -3.12 scripts/to_strudel.py "song.musicxml"

# Explicit analysis file
py -3.12 scripts/to_strudel.py "song.mid" --analysis "song_analysis.json"

# Stricter ghost-note filtering
py -3.12 scripts/to_strudel.py "song.mid" --min-velocity 60 --min-duration 0.1

# Open in browser
py -3.12 scripts/to_strudel.py "song.mid" --open
フラグデフォルト効果
--analysis自動検出テンポ/キー用の分析 JSON のパス
--bars4パターンの小節数
--resolution16グリッド:4/8/16/32
--min-velocity40このベロシティ未満の音符を削除します(0-127)
--min-duration0.05この秒数より短い音符を削除します
--no-key-filterオフキーに基づくゴーストノートのフィルタリングを無効にします
--tempo分析データから取得テンポ BPM を上書きします
--openオフブラウザーで strudel.cc を開きます

音符の長さは @N 表記でエンコードされます(例:c3@4 = 4 ステップ保持)。

オーディオのレンダリング

# Basic (auto-detects analysis, cleans ghost notes)
py -3.12 scripts/render.py "song.mid" --mp3

# From MusicXML
py -3.12 scripts/render.py "song.musicxml" --mp3

# With SoundFont
py -3.12 scripts/render.py "song.mid" --soundfont "GeneralUser_GS.sf2" --mp3

# Aggressive cleaning
py -3.12 scripts/render.py "song.mid" --min-velocity 60 --min-duration 0.1

# Skip cleaning entirely
py -3.12 scripts/render.py "song.mid" --no-clean

# Modifications
py -3.12 scripts/render.py "song.mid" --tempo 2.0 --transpose 3 --instrument 0
フラグデフォルト効果
--analysis自動検出テンポ/キーに基づくクリーニング用の分析 JSON
--min-velocity40ゴーストノートのベロシティしきい値
--min-duration0.05ゴーストノートの音価のしきい値(秒)
--no-cleanオフゴーストノートの削除をスキップします
--no-key-filterオフキーに基づくフィルタリングを無効にします
--soundfont自動検出.sf2 SoundFont のパス
--tempo1.0テンポの倍率
--transpose0半音単位で上げ下げします
--instrument元の楽器GM プログラムを上書きします(0-127)
--mp3オフMP3 も生成します

ゴーストノートのクリーニング

3 段階のフィルターを順番に適用します:

  1. ベロシティフィルター: --min-velocity 未満の音符を削除します(デフォルト:40)
  2. 音価フィルター: --min-duration より短い音符を削除します(デフォルト:50ms)
  3. キーフィルター: 分析データにキーが含まれている場合、キーから外れ、かつベロシティが低い(<60)音符を削除します

キーフィルターが削除するのは、キーから外れ、かつ中程度のベロシティを下回る音符のみです。意図的な半音階のフレーズは保持されます。

依存関係

自動インストール:pretty_midi、numpy、soundfile。 MusicXML 入力の場合:music21(オーディオからMIDIへの変換機能によってインストールされます)。 オプション:高品質なレンダリングには pyfluidsynth と .sf2 SoundFont が必要です。 実行環境:Python 3.12(py -3.12)。

コメント