0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

flstudio-mcpの使い方

0
Last updated at Posted at 2026-03-20

0.Instro

まともに鍵盤が弾けない僕ですがTranceっぽいものを作ろうと週末FL Stduioに向かって励んでいます。
弾ける人ならフレーズとか鍵盤触りながら構想練っていくのでしょうが、僕のように弾けないとMIDIデータやアルペジエーターなどデータや機能に大きく頼ってしまいます。
そういう中でAIにmidiデータ作ってもらっては?と思って色々試してみたこともありました。
一応midiデータを作ってくれることもあるのですが、どうもパッとしませんし、使い勝手がそもそも良くない。
(でもSE的なwavは割と使えるものが出てきたりしました)
そんな中でこのようなもの見つけました。
flstudio-mcp
Claudeに作ってもらってFL Studioに入れてもらうというまさに僕のためにあるようなMCPです。
ただインストールには少し苦戦したので記録として残しておきます。
僕の環境はWindwos11 Proです。
基本的にREADM.mdの手順に加筆する感じで説明進めます。

Step 1: Download the Files

こちらの

Place the Test Controller folder in Image-Line/FL Studio/Settings/Hardware (Don't change the name of this file or folder)

と記載があるのですが、現時点での正確なパスは

%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware

です。
※この手順を抜かすとMIDIは送信されますが、FL Studioと協調できないので結果まともな曲になりません。

Step 2: Set up MCP for Claude

uv使うということは仮想環境を作成すると思います。後ほど色々パッケージ入れることになりますし。
仮想環境を構築する場合、コマンドラインで実行時に仮想環境を指定して立ち上げるというのは(調べた限り)ないです。
ですので仮想環境を作らなければREADM.mdの記載方法でいいのですか、仮想環境をを作るのなら、いろいろ試行錯誤したのですが、結局

  "mcpServers": {
    "midigenerator": {
      "command": "C:\\Users\\(ユーザー名)\\(仮想環境名)\\Scripts\\python.exe",
      "args": [
        "C:\\Users\\(ユーザー名)\\flstudio-mcp-main\\trigger.py"
      ]
    }
  },

とあまりカッコよくないですが直指定が無難かなと思いました。
(MCPごとに仮想環境構築したいというニーズ割とありそうなのですが、この辺きれいな解決方法無いものでしょうか)

Step 3: Set Up Virtual MIDI Ports

READM.mdのままでOKです

Step 4: Setup MIDI Controller

READM.mdのままでOKです
「Step 1: Download the Files」で正しくTest Controllerをインストール出来ていればcontroller typeの一覧に出てきているはずです。

Step 5: Download Packages

素直に考えると

uv pip install -r requirements.txt

としたくなりますが、そうではないのですね。それでは足りません。
またpython-rtmidiをインストールするときにビルド環境が求められます。
ここの
https://visualstudio.microsoft.com/ja/downloads/#build-tools-for-visual-studio-2026
これでいきました。
image.png
構成は
image.png
のみで大丈夫です。
こちらをインストールしてから作成した仮想環境で

uv pip install httpx mido python-rtmidi typing fastmcp FL-Studio-API-Stubs

を実行してください。

Step 6: Verify MCP Connection

ここまできてたら基本的にClaudeとMCPサーバーが通信できるはずです。
しかしすんなりとはやはりいきません。
エラー場合、以下の点を確認することで解決出来そうです。

ただREADM.mdのようにはならず、通信も厳しい時もあるかと思います。

[デバイス名]
uvで作成した仮想環境に切り替えて

python -c "import mido; print(mido.get_output_names())"

でデバイス名を確認するというのも手です。
そのデバイス名にREADM.mdにあるように
trigger.py
の10行の名前を書き換えるとClaude側も認識してくれるようになります。

[Windows MIDI サービス]
そもそも一覧にloopMIDI Port がいないケースがあります(僕も最初そうでした)。
その時はFL Studio側でloopMIDI Port が認識されていません。
これの原因はWindows11がMIDI2.0に対応する当たりMIDI関連を刷新しました。その余波で2026年3月時点では不具合が多発しております。これかと思います。
その時は管理者権限で

net stop midisrv
net start midisrv

とMIDIサービスの再起動を行うと解決するかと思います。

Outro

ここまで出来たらREADM.mdにあるようにClaude Desktopから利用可能なポート一覧を確認でき、かつloopMIDI Port も存在していると思います。
その状態でFL StudioでloopMIDI Port に割り当てたポートを指定したVSTを用意。
Claudeにメロディーやイメージする曲を作成するように指示を出すとFL Studioでレコーディングが始まってその時にアクティブなパータンのピアノロールにClaudeが生成した演奏が記録されます。
もちろんなかなか期待通りには出来ませんがw
でも新しい可能性を感じられますね!いろいろ探っていきたいと思います!

追記

動いたからとすんなり使えるものではなかったです。
まずアウトプットの拍子がずれてたりとか。。。その辺を補正するために色々claudeと対話して調整しました。それを最終的にskillにして今はきちんとしたデータを生成してくれるようになりました。ですのでこのMCP(というかMCPは大体そういうのものかもしれませんが)動作が安定してきたらそれをスキルかしておいた方がいいかと思います。
以下に今のスキルの一部を貼っておきます。ご参考に。

説明
FL StudioにMIDIフレーズを送信するスキル。midigenerator MCPツールを使ってFL StudioにMIDIノートを送信する。トランスリード、メロディ、ベースラインなどのフレーズ作成・送信を行う場合に必ず使用すること。BPM・KEY・拍子・小節数などの情報をもとにMIDIデータを生成しFL Studioのピアノロールに書き込む。ユーザーがFL Studio、MIDI送信、フレーズ作成、トランスリード、ピアノロールなどに言及した場合は必ずこのスキルを参照すること。

FL Studio MIDI Generator Skill
概要
midigenerator MCPツールを使ってFL StudioにMIDIノートを送信するスキル。

前提条件・環境設定
必要なもの
loopMIDI(仮想MIDIポート)がインストール・起動済みであること
FL Studio が起動済みであること
FL Studio の MIDI設定でloopMIDI Portが有効になっていること
FL Studio MIDI設定確認手順
FL Studio メニュー → Options → MIDI Settings
Input欄に loopMIDI Port が表示されていることを確認
チェックが入っていれば有効(入っていなければクリックして有効化)
利用可能なツール
ツール	用途
list_midi_ports	接続中のMIDIポート一覧を確認
play	FL Studioの再生開始
stop	FL Studioの再生停止
send_midi_note	単音送信(※現状エラーが出るため非推奨)
send_melody	複数ノートのシーケンス送信(主力ツール)
send_melody の正しい使い方
フォーマット
ノート番号,ベロシティ,長さ(beat),開始位置(beat)
ノート番号: 必ず整数(MIDIノート番号)で指定。音名文字列("A3"等)は不可。
長さ・位置の単位はbeat(拍)。秒ではない。
各ノートは改行で区切る
動作確認済みフォーマット例
57,100,0.25,0.00
76,112,0.25,0.00
57,100,0.25,0.50
72,108,0.25,0.50
❌ 動作しないフォーマット(注意)
A3,100,0.10,0.00   # 音名文字列はNG → "No valid notes found"エラー
✅ 確定済み動作ルール(実機検証済み)
positionの単位はbeat(拍)
音符	beat値
4分音符	1.00
8分音符	0.50
16分音符	0.25
1小節(4/4拍子)	4.00
小節とbeat位置の対応表(4/4拍子)
小節	開始beat	終了beat
小節1	0.00	3.75
小節2	4.00	7.75
小節3	8.00	11.75
小節4	12.00	15.75
小節5	16.00	19.75
小節6	20.00	23.75
小節7	24.00	27.75
小節8	28.00	31.75
重要ルール
positionはパターン先頭からの絶対beat値。FL Studioのカーソル位置は無関係。
低音と上物は必ず同じ送信にまとめる。別々に送るとパターンが上書きされる。
同じpositionに低音と上物を重ねて配置するとグリッドに正確に合う。
送信は32〜48ノート以内に抑えると安定する(FL Studioのフリーズ防止)。
正しい送信パターン例(低音A3+上音を同時配置)
57,100,0.25,0.00   ← 低音
76,112,0.25,0.00   ← 上音(同じposition)
57,100,0.25,0.50
72,108,0.25,0.50
57,100,0.25,1.00
74,110,0.25,1.00
Aマイナースケール MIDIノート番号対応表
音名	MIDI番号
A3	57
B3	59
C4	60
D4	62
E4	64
F4	65
G4	67
A4	69
B4	71
C5	72
D5	74
E5	76
F5	77
G5	79
✅ トランスリードの確定パターン(実機検証済み)
リズム構造(1拍 = 16分音符4つ)
1拍の中の16分音符位置:
  1つ目(0.00, 1.00, 2.00...) → ベース+上物 必ず配置
  2つ目(0.25, 1.25, 2.25...) → 上物のみ 時々配置
  3つ目(0.50, 1.50, 2.50...) → ベース+上物 必ず配置
  4つ目(0.75, 1.75, 2.75...) → 上物のみ 時々配置
ポイント
ベースは1つ目・3つ目のみ(2つ目・4つ目にベースを入れない)
上物は1つ目・3つ目に必ず、2つ目・4つ目に時々入れることで揺れが生まれる
2つ目・4つ目の上物は前後の音と自然につながるスケール音を選ぶ
送信フォーマット例(小節1、Aマイナー)
57,100,0.25,0.00   ← ベース+上物(1つ目)
76,112,0.25,0.00
74,110,0.25,0.25   ← 上物のみ(2つ目・時々)
57,100,0.25,0.50   ← ベース+上物(3つ目)
72,108,0.25,0.50
57,100,0.25,1.00   ← ベース+上物(1つ目)
74,110,0.25,1.00
57,100,0.25,1.50   ← ベース+上物(3つ目)
76,114,0.25,1.50
71,107,0.25,1.75   ← 上物のみ(4つ目・時々)
トラブルシューティング
エラー	原因	対処
No valid notes found	音名文字列で指定している	MIDIノート番号(整数)に変更
data byte must be int	send_midi_noteの仕様問題	send_melodyを使う
音が出ない	FL StudioのMIDI設定	loopMIDI Portが有効か確認
グリッドがずれる	位置単位の誤り	beat単位(0.25刻み)で指定しているか確認
前のノートが消える	別々に送信している	低音と上物を同じ送信にまとめる
FL Studioが固まる	一度に送りすぎ	2小節(32〜48ノート)ずつに分けて送信
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?