【中編】AI作曲の展示にチャレンジ! at Maker Faire Tokyo 2025
前編では、necobit カワヅがAIを使って何か作るにあたって、できるだけ誰にでも最初の1回で楽しめる『体験展示』にするには?ただ眺めるだけでなくもっと具現化した結果にするには?AIなんもわからん👨🦲⁉️状態でも破綻しない音楽生成にするための対策暴露を書きました。
それでは中編です。
-
人間の操作で入力されたメロディ
-
LLMが考えたコード進行と選択したジャンル
これらを合わせて音楽として外に出す!この部分をどう作ったかみていきましょう。
かんぷれを使った理由
かんぷれ は InstaChord株式会社 が開発・販売している楽器ガジェットです。電卓のような数字の並びでボタンが配置され「コード」を「ディグリー」に置き換えた操作方法が特徴です。
まずは見た方が話が速いので…かんぷれ基本操作を動画でどうぞ👇
ご覧の通り、かんぷれは単なるイージー楽器にとどまらない機能がたくさんあります。
-
ボタン1つで和音が鳴る(=コードを鳴らすのに1つの指示で済む)
-
外部コントロールで遠隔操作する方法がいろいろある
AIが生成したコード進行を物理的な楽器演奏でたのしく見せたい!作る方はできるだけ楽に!!👨🦲
そんなnecobitにうってつけのガジェットだったというわけです🎶かんぷれはMIDI制御で外部から遠隔操作をします。
左:人間が入力したメロディをMIDI自動演奏鉄琴が、生成されたコード進行を伴奏パターン機能を用いてかんぷれが演奏する 右:Maker Faire Tokyo 2025 necobitブース 全景。LLMの入ったMac・操作説明ディスプレイと操作ボタン・自動演奏鉄琴・かんぷれを持ったねこびっとくんは、操作説明の喋り音声に合わせて光る。 生成された音楽をどう出力して見せるかもnecobitにとって大きなポイント。
かんぷれをMIDIで外部から操作する
単なるイージー楽器にとどまらないこのガジェット。かんぷれ自体はMIDIノート(音符情報)を送ることでほぼ全ての操作(ボタンを押す、ノブを回すなど)を外部からコントロールできます。たとえばMIDI信号で『ドの音をONにする』と送信すると『かんぷれの1のボタンがONになる』という具合。
というわけで、
-
LLMが考えたコード進行の
-
コードネーム表記をディグリーネーム表記に変更して
-
かんぷれ用ボタン操作として伝える
これをやっていきます。
🫤その四角で囲まれた数字はなんなの??
かんぷれ操作ボタンです。本体お持ちでなくても🫱WEBブラウザ版🆓があります!ディグリー表記が数字ボタン操作になってますよ。やってみてください🎶スマホ画面タップまたはパソコンキーボード操作で演奏できます。+のあるところは、2つのボタンを同時押ししてくださいね。
📝ディグリーネームはかんぷれ操作用の表記ではなく、地球上のほとんどの音楽ジャンルで通用する共通言語みたいなものです。演奏・作曲・編曲どの面でも便利です。
というわけで、AIが考えたコード進行をかんぷれで自動演奏させるために、コードネームとかんぷれボタンの対応が確認できました。
プログラムで遠隔操作/自動演奏させる
かんぷれ遠隔操作は外部MIDIキーボード・自作スイッチ・DAWなどでとても簡単にできる設定がついてますが、ここではプログラムでMIDI制御します。
さあ、定義の嵐をします🌪️
MIDIノートナンバー(ドレミ…を数字に置き換えたもの)を、かんぷれの各ボタン操作・機能操作を対応させます。
『ノートナンバー60をON』を受信したら『かんぷれ1ボタンをON』…という具合に、必要な操作の数だけ割り当てていく。
情報の置き換え自体は変換テーブルを通せば良いのですが、単にかんぷれの表面に見えるボタンの数だけ定義してやればいいわけではありません。
ボタン同時押し(2つの場合も3つの場合もある)!という操作もあります。さらにこの時は、同時とはいえ先に押す/離すの順番が必要がこともあります。タイミングなども定義してあげなければなりません。
…って書くとすごい難しいみたいですがそんなでもない👇👨🦲こういうことです。動画をご覧ください。右の指と左の指、押す/離すタイミングにご注目‼️
この曲のコード進行は、Dm7(= IIm7 = 2+7th ) と CM7 ( = IM7 = 1+M7 ) の 繰り返しです。
動画を再生してすぐわかる通り、1つ目のコードDm7(= IIm7 = 2+7 ) は 7thボタンを『押しながら』ディグリー2ボタンを連打しています。7thボタンは次のコードに変わる瞬間まで押しっぱなし、2ボタンの連打は曲の伴奏リズムやテンポ感を担っていて、ヨレヨレ連打=ヘタクソ演奏…💧この操作も自動演奏でやらせるには、リズムが破綻しないようにプログラムで解釈させる必要があります。
どうプログラムするかはいろいろある
人によると思うのですが、necobitカワヅ👨🦲の場合はコードで全部考えるよりも一旦破綻がないように言語化してLLMにコードを書いてもらう方が自分でコードを書くよりも圧倒的に早かったです。
ただしこの言語化の作業にかなりの時間を費やしました。要するに、打てば響く結果をLLMが返してくれるように「ああしろこうしろ」と具体的で的確な指示を出せる有能上司にならなければいけないわけです。
基本言葉での受け答えをどうやってかんぷれに落とし込むのかは、 テンプレートに則った返答をするように、という指示を出しました。 具体的にはJSONという書式で出力しろ、という指示です。
今回ローカルLLMを動かしたLM StudioというソフトウェアではもともとJSONで出力する方法が準備されていたのですが、それを使うとなぜかうまく出力されません。 何日もここで足踏みして、結局「JSONで出力しなさい」という指示で出力されたものからJSON部分を抽出する、という手法になりました。
「JSONで出力しろ」と言って素直に全部テンプレート通りに出力してくれるかはモデルによるという印象です。色々なLLMを試した中ではgpt-ossは約束を守る。うまく出力してくれなかった時のためにリトライ機能なども搭載しました。
👨🦲ふぅ…
ここまでで、コード進行を作り出してかんぷれに演奏させることができるようになりました。
次回はいよいよ後編です‼️かんぷれのコード進行+伴奏自動演奏にプレイヤーが入力したメロディを合わせる🎶お楽しみに〜
✉️ ご意見・ご質問を necobit に送る✉️
-
匿名で送りたい方はコチラ👇
-
X(旧ツイッター)で送りたい方はコチラ👇
-
メールで送りたい方はコチラ👇
***
すでに登録済みの方は こちら