midi-synth について
midi-synthは、MIDIやMusicXMLをStrudelパターンや音声に変換するスキルです。音楽制作者向けに、ベロシティ、長さ、利用可能なキー分析を使って不要なノートを除去します。
主な機能
- 01MIDIとMusicXMLの入力
- 02Strudelパターンの生成
- 03WAVとMP3へのレンダリング
- 04ベロシティと長さによるゴーストノート除去
- 05キーに基づくノートフィルタリング
活用シーン
- 01楽譜からStrudelコードを生成
- 02MIDIをWAVまたはMP3に変換
- 03分析データを使った不要音の除去
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ maystudios/ claude-skills --skill midi-synthインストール後、Claude Code で/midi-synthを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
scripts/render.pyto_strudel.pysoundfonts/README.md詳細
MIDI シンセサイザー
MIDI/MusicXML をオーディオに合成し、Strudel のライブコーディングパターンを生成します。 分析データを使って、ゴーストノートの除去、正確なテンポの設定、キーを考慮したフィルタリングを行います。
スクリプト
scripts/to_strudel.py-- MIDI/MusicXML から、音価を考慮した表記で Strudel パターンを生成しますscripts/render.py-- MIDI/MusicXML から、クリーニングと変更を加えて WAV/MP3 を生成します
どちらのスクリプトも、オーディオからMIDIへの変換機能が生成した *_analysis.json ファイルを自動検出し、テンポ、キー、ダイナミクスに利用します。
ワークフロー
- 入力形式を確認します:MIDI(.mid)または MusicXML(.musicxml)
- オーディオからMIDIへの変換機能が生成した分析 JSON を自動検出するか、指定します
- ワークフローを選択します:
- クリエイティブ:
to_strudel.pyが strudel.cc 用の Strudel コードを生成します - レンダリング:
render.pyが WAV/MP3 を生成します - 両方: 同じ入力に対して両方を実行します
- クリエイティブ:
- ゴーストノートは、ベロシティ、音価、キーのフィルターを使って自動的に除去されます
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 のパス |
--bars | 4 | パターンの小節数 |
--resolution | 16 | グリッド:4/8/16/32 |
--min-velocity | 40 | このベロシティ未満の音符を削除します(0-127) |
--min-duration | 0.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-velocity | 40 | ゴーストノートのベロシティしきい値 |
--min-duration | 0.05 | ゴーストノートの音価のしきい値(秒) |
--no-clean | オフ | ゴーストノートの削除をスキップします |
--no-key-filter | オフ | キーに基づくフィルタリングを無効にします |
--soundfont | 自動検出 | .sf2 SoundFont のパス |
--tempo | 1.0 | テンポの倍率 |
--transpose | 0 | 半音単位で上げ下げします |
--instrument | 元の楽器 | GM プログラムを上書きします(0-127) |
--mp3 | オフ | MP3 も生成します |
ゴーストノートのクリーニング
3 段階のフィルターを順番に適用します:
- ベロシティフィルター:
--min-velocity未満の音符を削除します(デフォルト:40) - 音価フィルター:
--min-durationより短い音符を削除します(デフォルト:50ms) - キーフィルター: 分析データにキーが含まれている場合、キーから外れ、かつベロシティが低い(<60)音符を削除します
キーフィルターが削除するのは、キーから外れ、かつ中程度のベロシティを下回る音符のみです。意図的な半音階のフレーズは保持されます。
依存関係
自動インストール:pretty_midi、numpy、soundfile。
MusicXML 入力の場合:music21(オーディオからMIDIへの変換機能によってインストールされます)。
オプション:高品質なレンダリングには pyfluidsynth と .sf2 SoundFont が必要です。
実行環境:Python 3.12(py -3.12)。
コメント
Markdown 対応