はじめに
何かしら演奏に触れた人間あるあるだと思うのですが、アガる曲を見つけるとつい演奏したくなりますよね。
私はアカペラ(※)用に編曲したり歌ったりするのが好きです。
よく使われるのが「耳コピ」、聴いた音をそのまま自分の中に落とし込みます。
ただ私は音感がさっぱりなので、原曲を聴いてもキー(調)やらコードやらがまったくわかりません。
手探りで始めると途方もない時間がかかります。
そのため多く楽譜を書いていた頃は、 U-FRETのようなコード検索サイトを見ながら書いていました。
実際、素人のお遊びですしそれで事足りていました。
今回なぜClaudeに耳コピさせようと思ったか
理由は3つありました。
1. コードが出されていない曲をどうしても楽譜にしたかった。
2. Claudeがどこまでやれるのか、単純に気になった。
3. 一番大きい理由。編曲の「楽しくないところ」を省きたかった。
私がやっている楽譜起こしの作業は、大体この3つです。
| 工程 | 中身 | |
|---|---|---|
| 1 | 主旋律を書き出す | 耳コピ(または書き写し) |
| 2 | コードを書き出す | ほぼ書き写し |
| 3 | ハモリを作る(音に動きをつける) | ここが編曲 |
1と2は、原曲に元からあるものを写しているだけです。
純粋に書き写すだけでもかなりの手間がかかります。
しかも時間をかけてできあがるのは「原曲に元からあったもの」なんですよね。
楽しいのは3に入ってからです。
同じコードでも、どの音をどのパートに置くか、どう動かすかで響きが変わる。そこが楽しい。
というわけで、1と2をAIに寄せられないかな、と思ったのが今回です。
「信憑性が低くてもいいから解析してみて」とClaudeに頼んだところから始まりました。
使用したのは一貫してClaude Codeです。
以下、本文では単に「Claude」と書きます。
先に結論
- テンポは一発で当たった(小節数を積み上げたら曲の長さとぴったり一致)
- 小節の区切りは一度ずれていて、聴き比べで人力で直した
- コード進行は一度派手に外した。サビがずっと同じコードになった
- つまずいた原因は、前提の認識齟齬だった(そこは音楽と関係ないので、最後にまとめてあります)
- 前提さえ合えば転調もちゃんと判別してくれて、コードの精度はかなり高いことがわかった
- そして個人的な収穫は、機械から見た音楽がどうなっているかを知れたこと。
音楽は「分けて、捨てて、数える」新しい見方です。
音楽に精通している方には当たり前の内容かもしれません。
私にはどれも初めて知ることだったので、勉強になった記録として書いています。
音楽の話が半分、AIへの頼み方の話が半分です。
- 対象: 90秒の音声(J-POP)
- やったこと: mp3を渡して、テンポ・構成・コード進行・各パートの音符を出させ、
MuseScore(楽譜作成アプリ)ファイル形式の譜面にしてもらった
著作権について
この記事に音源・譜面・歌詞等は載せていません
起こした譜面は私個人が楽しむ目的のみで、配布も公開もしていません
曲名も意図的に伏せています、内容からわかる人もいると思いますがコメントはお控えください
同じことを試す方は、著作権に十分お気を付けください
そもそもアカペラとは(※)
ちゃんと読みたい方向けに、先に前提を書きます。不要な方は飛ばしてください。
アカペラは声だけで演奏を成立させます。(ハモネプをイメージできれば一発それです。)
なので原曲で鳴っているものを、ひとつずつ人の声に割り当てていきます。
一般的なアカペラだと基本構成はこの6パートなことが多いです。
| パート | 原曲でいうと |
|---|---|
| リード | ボーカル。主旋律をそのまま歌う |
| コーラス(トップ/セカンド/サード) | コードを3パートに分けたもの(伴奏) |
| ベース | 楽器のベースと同じ役割。みんなの礎で、コードの基準となる音が多い |
| パーカス | ドラム。口でリズムを出す |
リードは分かりやすくて、原曲のメロディーをそのまま歌います。
ベースも楽器のベースをなぞるので、やることははっきりしています。
パーカスはドラム担当。口でリズムを刻む人です。
※コーラスの人数の増減だったり、パーカスを抜いたバラード系だったり、編成は様々です。
コーラスの3パートは、原曲のどこかを写したものではありません。
コードを3つに分けて、3人で分担して鳴らしているものです。
例えば Dm7 コードだとしたら、構成音は D・F・A・C。
このうち3つを、トップ・セカンド・サードにどう配るかを決めていきます。
同じコードでも配り方や動かし方で響きが変わり、ここが編曲(アレンジ)になります。
というわけで、まずは正しいコードを置けないと何も始まりません。
この記事でコードの話ばかりしているのはそのためです。
※コードを原曲から変えるアレンジもあります。
ただ私の場合そういう高度なことはできないので、原曲のコードをベースにしています。
音楽の解析って、こういう見方をするんだ
譜面ができたことより、こっちの方が収穫だったかもしれません。
まず、先に大前提の事実を書きます。
当たり前っちゃ当たり前ですが、コンピュータには音楽が音楽として聞こえていません。
録音データの中身は、「0.00001秒ごとに、空気がどれだけ押されたか」という
数字の列でしかないんですね。そこに「ド」とも「サビ」とも書いていない。
楽器が何本鳴っているかも書いていない。
その状態から、どうやってコードやテンポを出すと思いますか。
Claudeが途中経過を出してくるたびに「そうやるのか」となったので、
問題と答えの形でまとめてみます。
有識者の方、微妙な点があれば訂正していただけると助かります。
問1:何の音が使われている?
数字の列しかないところから、音の高さをどう取り出すか。
手がかりは、音の高さ=振動の速さだということです。
ラの音は1秒間に440回振動していて、これを 440Hz と言います。
(ちなみに「ラ=440Hz」は世界共通の取り決めです。)
チューナーもこれが基準で、周波数が決まれば音名も決まります。
そして、どんな複雑な波も「色々な速さの振動の足し算」に分解できるそうです。
波を渡すと「440Hzがこれだけ、880Hzがこれだけ」と返ってくる。
ここで、音楽の側の都合が効いてきます。
220Hz → ラ
440Hz → ラ(1オクターブ上)
880Hz → ラ(さらに上)
そしてちょうど2倍の速さで振動する音は、同じ音名になる。
なので、2倍ずつ離れた成分を全部まとめて「ラ」の箱に放り込みます。
12音分やると箱が12個。これをクロマと呼ぶそうです。
たとえば C(ド・ミ・ソ)が鳴っている一瞬を取り出すと、12個の箱はこうなります。
ド ###### ← 強い
ド# #
レ ##
レ#
ミ ##### ← 強い
ファ #
ファ#
ソ #### ← 強い
ソ#
ラ #
ラ#
シ #
ド・ミ・ソ の3つだけが高い。
この形をコードごとのお手本と見比べて、C っぽいと判断する。
音楽が12個の数字になるという発想が、私にはまったくありませんでした。
問2:テンポはどう測る?
今度は逆で、音の高さを全部捨てます。
さっきの「周波数ごとの強さ」を12ミリ秒ごとに切って並べて、
隣のコマと比べて強さが増えた分だけ値を足す。
音が鳴り始めた瞬間はエネルギーが急に増えるので、そこが山になります。
できあがるのは、高さが完全に消えてリズムだけが残ったグラフです。
これをオンセットと呼ぶそうです。
強さ
↑ /\ /\ /\ /\
| / \ / \ / \ / \
+--/----\--/----\--/----\--/----\---→ 時間
↑ ↑ ↑ ↑
音が鳴り始めたところに山が立つ
この間隔が分かればテンポが出る
あとはこの山が何秒おきに来るかを測ればテンポが出ます。
高さを知りたいときは高さだけ、リズムを知りたいときはリズムだけ。
「知りたいこと以外を、積極的に捨てる」のが基本姿勢みたいです。
問3:キーはどう当てる?
私が一番ほしかった機能がこれです。
音感がある人は聞くだけでパッとわかるらしいですが、私には全然わかりません。
まず「キー」とは何か、というところから。
(「調」と「キー」は同じものの日本語と英語です。以下はキーで統一します。)
ピアノの鍵盤は1オクターブに12個ありますが、一般的に曲中はこれをすべて均等には使いません。
大体7個(7音)を選んでセットを作って、その中からメロディもコードも作っています。
この「選ばれた7個のセット」がキーです。もし白鍵だけの7個なら C major、といったもの。
ということは、曲に出てくる音を数えて、どのセットによく収まるかを見ればいい。
出す数字は、曲に出てくる音のうち、とあるセットの7音が占める割合です。
本当にそのキーの曲なら、この割合は高くなるはず。
ここで面白いのが、デタラメでも出てしまう割合が先に分かることです。
12個のうち7個なので、デタラメに鳴らしても 58.3%(7 ÷ 12)は入ってしまう。
つまり 58.3% は「判断にならない」ラインです。
実際に算出された値がこれでした。
F major / D minor 67.5% ← 曲の音の 67.5% がこのセットの7音だった
Bb major / G minor 65.9%
C major / A minor 65.3%
1行に2つ書いてあるのは、使う7個が同じセットだからです。
F major と D minor は始まりの音が違うだけで中身は同じ。(意識したことなかった~)
1位は 58.3% を超えているので「このセットを使っている」とは言えます。
ただ2位・3位とあまり離れていません。
ここで決めきれなかったことが、後半の伏線になります。
この「デタラメなら何%になるか」を先に出しておく、という考え方が良いなと思いました。
67.5% という数字だけ見せられても、そのキーである可能性が高いのか低いのか判断できないんですよね。
比べる相手を先に決めておけば読める。音楽に限らず使えそうでした。
問4:伴奏が聞き分けられずコードが取れない。どうする?
答えは力技です。分けます。
Demucs という、音源分離のための学習済みモデルが公開されています(Meta製)。
自分で学習させる必要はなくて、入れればすぐ使えます。
これに曲を渡すと、drums / bass / other / vocals の
4つのwavに分かれて出てきます。
この4分割が標準で、ギターとピアノを足した6分割のモデルもあるそうです。
(ギターやってる妹によるとTAB譜を出してくれるアプリもあるみたいで、そっちはそのモデルを使ってるのかも?)
やることはmp3を1つ置いてコマンドを1行打つだけ。
demucs -n htdemucs input.mp3 -o out
(私のPCはARM版Windowsで必要なライブラリが入らなかったので、
結局 Google Colab にmp3を上げてブラウザで実行しました。)
聴いてみたら、本当にボーカルだけ、ベースだけが鳴っていました。
分離アプリは昔から見かけますが、中で何をしているのかは知りませんでした。
なぜ判別できるの?と思いますよね、答え合わせをしながら練習しているだけとのことです。
ポイントは、この世には正解が存在することでした。
音楽を作る現場では、ドラムもベースも歌も別々のファイルで録ります。
最後にそれをいい感じに合体させて1曲になる。
ということは制作データには、「混ぜたあとの曲」と「混ぜる前のバラバラ」が
セットで残っているわけです。問題と答えがそろっている。
モデルを作る側は、そのデータを用いてドリルと同じことをやったそうです。
1. 混ぜた音だけをモデルに渡す
2. モデルが「ドラムはこれ、ベースはこれ」と答える
3. 本物と見比べて、外した分だけ自分を直す
これを何千曲ぶんも繰り返すと「ドラムってこういう形してるよな」が身につく。
使う側は、その練習済みのモデルにコマンド1行で曲を渡すだけです。
答えは全部「捨てる」だった
4つ並べてみると、やっていることは全部同じでした。
| 問い | 捨てるもの | 残るもの |
|---|---|---|
| 何の音が使われている? | オクターブの違い | 12個の数字 |
| テンポは? | 音の高さ | リズムだけ |
| キーは? | 音の順番・長さ | どの音が何回出たか |
| 歌が邪魔 | 歌以外/歌 | 楽器ごとの音 |
捨てるほど、残ったものは数えられるようになる。
私は「曲が分かる」というのは全部まとめて受け取ることだと思っていたので、
分けて、捨てて、数えるという向き合い方は発想が逆でした。
ちなみにこういうのは特徴量抽出と呼ぶそうです。
写真なら明るさの分布、文章なら単語の出現回数、音なら高さや始まり。
分野が違うだけで、やっていることは同じなんですね。
実際にやったこと
ここからは結果を中心に書きます。
テンポは一撃で判別
これは一発で出ました。
今回途中でテンポが変わるタイプの曲ではなかったので、曲を通して一つの数字で済みます。
納得できたのは数字そのものより、答え合わせの仕方です。
テンポが分かれば1小節の長さが計算できます。
ということは、1小節ずつ積み上げたらちょうど曲の長さになるはずですよね。
1小節の長さ × 小節数 = 曲の長さ ← 実際ぴったり合った
たとえばテンポが 0.5 ずれていると、50小節も積んだところで0.3秒くらいの差が出ます。
そうならなかったので、偶然ではありません。
出てきた数字を、別の道から確かめられたわけです。
小節の頭でつまずいて、人力で直した
拍が取れても、4拍のうちどれが1拍目かは別問題みたいです。
最初出来上がった楽譜は見たことがない音符の配置をしていて、
正直「Claudeに楽譜を作らせるのは無謀だったか……」と思いました。
Claudeは「1拍目にはキック(バスドラム)が来やすい」という前提で判定していました。
4通りそれぞれについて、その位置に音の鳴り始めがどれだけ集まっているかを足し上げます。
問2のオンセットのグラフでいうと、その位置の高さを全部足した値です。
大きいほど「ここが小節の頭っぽい」と判断している。
0 番目 1.699 ← これが選ばれた
1 番目 1.624
2 番目 1.452
3 番目 1.491
ちなみに今回の場合、正解は 3番目でした。
4つのうち下から2番目の点数で、選ばれた0番目とは0.2ほどしか違いません。
差がほぼないのに1位を採用していたわけで、それはもう判定になっていない。
にもかかわらず、その上に構成もコードも全部積み上がっていました。
そして、ここからが本題です。
最初に私が言ったのは、これだけでした。
楽譜開いたけど全然違う
これでは直せません。何がどう違うのかがわからないので。
Claudeは数字を持っているけれど、合っているか判定できない。
私は判定できるけれど、数字を持っていない。(何故こんなに違うのかわからない。)
話がかみ合っていませんでした。
何がおかしいのか見ていたらある点に気付き、次に伝えたのがこれです。
曲はじめは3拍空白があるはず、そこからずれてる
ここから進みました。「ずれている」ではなく「3拍」という数が入っている。
秒数は言えなくても、曲の出だしが何拍休むかはわかります。
そこで、小節線をずらした候補を2つ作ってもらって、
それぞれにクリックを重ねた音源を渡されました。聴き比べた結果がこれです。
いまの版 → 1拍 遅い
2拍ずらした版 → 1拍 早い
つまり正解は、この2つの間
流れが変わりました。
私は「正解は何秒です」とは言えません。
けれど「これは遅い」「これは早い」「だから間」は言える。
絶対値は出せないけれど、比較と方向は出せる。
これは二分探索そのもので、向こうは区間を挟むだけでよかったわけです。
「答え」を求められていたときは何も進まなかったのに、
「どっちにずれているか」を訊かれる形になった瞬間、2往復で確定しました。
クリック音確認した、これで合ってる
やり直すときの問いも良くて、「小節頭にしか現れない性質は何か」。
答えは「構成(Aメロ、サビみたいな)の切れ目は小節線に来る」でした。
この基準で測り直したら、正解が次点の約3倍。今度ははっきり差がつきました。
ちなみにこれ、最初に確認しておけば済んだ話でもあります。
そのあたりは後半の「頼み方でつまずいた話」にまとめました。
おまけ:構成も音量で見える
これは使わなかったのですが、面白かったのでおまけです。
音の大きさを小節ごとに並べるだけで、曲の構成が見えます。
########## ← イントロ
################# ← ここで立ち上がる
############## ← いちばん落ちる(サビ前の溜め)
#################### ← いちばん高い
########## ← フェードアウト
イントロは静かで、サビは大きくて、サビ前は落ちる。
言われてみれば当たり前なのに、数字で出ると構成がそのまま読めるんですね。
J-POPはほぼ4小節単位でフレーズが切れるそうで、
音量の段差が出た位置も、きれいに4小節区切りに乗っていました。
コードは派手に外した
で、ここでつまずきました。
最初の出力は、半小節ごとにコードが暴れて使えませんでした。
そこから、前後のつながりを見るようにしたり、調に合うコードを優先したり、
歌を抜いてから判定したりと、いくつか手を入れてもらいます。
ひとつだけ面白かったのを書いておきます。
sus4というコードが、やたら出てきたんです。
コードは普通3つの音でできていて、真ん中の音が明るい響きか暗い響きかを決めているとのこと。
ところが sus4 は、その真ん中の音を持っていないコードなんです。
(恥ずかしながらsus4の意味をここで初めて知りました。)
つまり真ん中の音が聞き取れなかったとき、消去法で sus4 が勝ってしまう。
精度が悪いというより、わからないコードはすべてsus4に化けていたわけです。
それでも、サビの出力がこれでした。
1小節に2つずつコードが並びます
| Am Am? | Am? Am? | Am Am | Am Am? |
| Am? Am | Am Am | Am Am | Am Am? |
| Am? Am | Am Am | Am Am | Am Am? |
| Am? Am | Am Am | Am Am | Am Am? |
サビがまるごと Am ひとつ。(? は自信がない印です。)
音感がない私でも、これはおかしいと分かりました。
サビが何小節も同じコードで進む曲は、まずありません。
盛り上がるところなので、むしろコードがよく動く場所のはずです。
失敗の原因を測る
ここでClaudeがやったことが、私には勉強になりました。
「精度が出ないので仕方ない」で終わらせずに、
そもそも音源に音程の情報が残っているかを測ったんです。
結果は「ほぼ残っていない」でした。
音圧、歪んだギター、広い帯域のシンセ、ドラム。
これらが重なって、音の高さの輪郭を潰していたそうです。
入力に情報が無ければ、後ろをいくら工夫しても出てきません。
ここで「推論を改善する」のをやめて、「入力を良くする」方向に切り替えました。
転調が見つかった
ここまでの解析は、原曲のmp3をそのまま渡してやっていました。
歌もギターもドラムも全部混ざったままの音です。
入力を良くするというのは、つまり問4のDemucsの出番です。
歌を抜いて、ベースも別に取り出して、同じ解析をやり直してもらいます。
結果は別物でした。1位と2位のスコア差が3倍近くになり、
サビのコードも4種類から16種類に増えました。
そして出てきたコード譜を見て、私は喜びを隠せませんでした。
| Dm7? Dbm | Abm AM7 | AM7 Abm7 | Abm7? Dbm7 | ← ♯側の和音ばかり
| Gbm7 E | E AM7 | AM7 Abm7 | Abm7 Gbm7 |
| Gm7 F | F BbM7 | BbM7 Am7 | Am7 Gm7 | ← ♭側に戻る
本来この曲が使っているのは♭が1つのセットです(問3で算出したもの)。
ところが途中の10小節ほどだけ、Dbm Abm Gbm と、
そのセットには入っていない音ばかりが並んでいる。そのあと元に戻っている。
転調した!
念のため、1小節ごとの当てはまり具合、ベースのルート音、出てきた和音の顔ぶれと、
別々のところから4通り測ってもらいましたが、全部同じところを指していました。
サビの途中で半音下に転調して、10小節ほどで戻る。
サビが Am に倒れていた理由も、これで説明がつきました。
曲の最初のセットの中だけを探していたので、該当するものが無かったんです。
決め打ちで探す制約が知らないうちに適用されていました。
無いものは見つからないので、いちばん無難な Am に落ちていた。
精度が出ないのではなく、探す場所が間違っていた。
これが譜面に入ったのが嬉しかった
転調が始まるところで調号が♭1つから♯4つに変わって、終わるところで戻る。
普通の楽譜と同じ書き方で、ちゃんと入っていました。
私はこの曲を延々リピートで聴いていて、
「ここアガる」「ここで転調してるっぽい」というのはずっと感じていました。
でもそれが何なのかは説明できなかったし、譜面に書きようもなかった。
| 私に言えること | 私に言えないこと |
|---|---|
| 「ここでアガる」 | 「半音下に転調している」 |
| 「ここで変わって、ここで戻る」 | 「何の調から何の調へ」 |
| 「気持ちいい」 | 「じゃあ何のコードでつなぐのか」 |
変わるタイミングは分かるんですよね。分からないのはキーが何かと、
そこをどのコードでつなぐかのほう。
ちなみに私は、ここは上がっていると思い込んでいました。
アガる=上がる、くらいの感覚だったんですが、実際は半音下のキーでした。
左の列のままだと、譜面には1文字も書けないんですよね。
それが小節番号と調号という、明確に見える形になって出てきた。
今回で一番うれしかったところです。
ついでに、ずっと失敗していた主旋律の採譜も、
分離をDemucsに替えて採譜のモデルも替えたら拾えるようになりました。
粘るより手法ごと取り替えたほうが早いことも多いですね。
効いたのは、精度ではなく「確かめる手段」だった
振り返ると、効いたのは解析の精度ではありませんでした。
私の場合絶対音感はないですが、2つの音を同時に鳴らして「濁るかどうか」は分かります。
分離した伴奏だけの音源を流しながら、推定されたコードを重ねて鳴らす。
合っていれば違和感ないし、違っていれば濁る。これなら自力で判定できます。
さっきのクリック音も同じです。テンポの数字そのものより、
耳で確認できる形にしてもらったことの方が効きました。
候補を出すのと、正誤を判定する手段を作るのは別の仕事なんですね。
頼み方でつまずいた話
ここだけは音楽と関係なく、何かを依頼する機会がある方には当てはまる話かと思います。
上手くいかなかった原因は、大体前提の認識齟齬でした。
1. 目的を先に言ったら、制約が入口に入ってしまった
これは結構ビックリしました。
私は最初に「アカペラ用の譜面を作りたい」と伝えています。
パートの割り振り方の提示として教えたつもりだったのですが、勝手に制約が発生しました。
アカペラ=人が歌う=人が出せる音の範囲がある。
なので最初から「歌える範囲の音だけ拾う」という作りになっていたんですね。
ところが原曲のベースは、ベースギターやシンセの音です。
人の声より1オクターブ以上低い。
つまり拾うべき音が、拾う前に全部捨てられていました。
結果、曲全体のベースから出てきた音符が 23個。スカスカです。
最初は「ベースの採譜は精度が出ないんだな」と思っていました。
原因は精度ではなく、入口のフィルタでした。
直し方は単純で、制約を出口に移すだけです。
前: 歌える範囲だけ拾う → 何も残らない
後: 原曲のまま全部拾う → あとでまとめて1オクターブ上げる
これで 23個 → 190個になりました。
目的に由来する制約は、入口ではなく出口に置く。
最初に目的を伝えるのは良いことなんですが、
それが「最初に捨てる基準」として使われていないかは見ておくべきでした。
これ、仕事でも普通にやってしまいそうだなと思いました。
2. 拍の位置は、いちばん最初に確かめるべきだった
小節線が1拍ずれていたのに、気づいたのは譜面ができあがったあとでした。
小節線がずれていると、その上に乗るものが全部ずれます。
構成の区切りも、コード進行も、音符の位置も。全部やり直しです。
一方で、確かめるのにかかる時間は1分でした。
原曲にクリック音を重ねた音源を作ってもらって、聴くだけ。
ズレていればすぐ分かります。音楽をやっていない人でも分かると思います。
下にあるものから順に確かめる。
当たり前なんですが、面白いところから見たくなっちゃうんですよね。
3. 「全然違う」では何も進まない
さっきのやり取りがそれです。
「楽譜開いたけど全然違う」は、判定としては正しいけど情報が無いんですよね。
動いたのは、次に言った「最初は3拍空白があるはず」のほうでした。
| 言いがちなこと | 言ったほうがいいこと |
|---|---|
| 「なんか違う」 | 「ここは3拍空くはず」 |
| 「合ってますか?」 | 「AとBならAのほうが近い」 |
| 「精度上げて」 | 「分からないところは小節の頭に寄せて」 |
4. 不確かなときの「間違い方」を指定する
作業の途中で私はこう言いました。
リズムがわからないなら変な切り替えに置かないで
まだ小節はじめとか、区切り良いタイミングに置いてください
自分でもあとから気づいたのですが、これは
「不確かなときに、間違い方を選べ」という要求です。
自信が無いまま中途半端な位置に音符を置かれると、
どこが当てずっぽうで、どこが根拠のある出力か区別がつかなくなるし手を加えるのも面倒です。
小節の頭に寄せてもらえれば、間違っていても直す場所が分かる。
出力の正確さと、間違いの直しやすさは別の指標で、
後者はこちらから言わないと出てきませんでした。
結局、楽しくないところを省けたのか
消えたわけではなく、別のものに変わりました。
正直に書くと、作業時間が劇的に減ったわけではありません。
減ったのは「写す」作業で、増えたのは「確かめる」作業でした。
- クリックを重ねた音源を聴いて、小節線が合っているか判定する
- 伴奏だけの音源にコードを重ねて、濁るかどうか判定する
- 出てきた音符を聴いて、違うところを直す
ただ、この2つは私にとってまったく別の重さでした。
写すのは、苦手なことを無理やりやる苦行です。
音感がないので時間がかかるし、そもそも自分で考える余地もない。
確かめるのは、できることをやる作業です。
合っているかどうかは分かるし、直した分だけ良くなるのも分かる。
同じ時間がかかっても、後者なら苦じゃありませんでした。
時短になったかというと微妙ですが、やっていて嫌じゃなくなったのは大きいです。
おわりに
音感がない人間が、曲の解析をClaudeに丸投げしてみた話でした。
やってみた結果はこんな感じです。
| 結果 | |
|---|---|
| テンポ・小節の区切り | 一度失敗、直して成功 |
| 構成の切れ目 | 成功 |
| キー | 成功 |
| 転調 | 成功 |
| コード進行 | 分離前は失敗、Demucs後はおおむね成功 |
| 主旋律 | モデルを替えて概ね成功 |
| 譜面の生成 | ほぼ成功 |
この記事のまとめ
- 音楽はそのままでは扱えないので、知りたいこと以外を捨てて数えられる形にする
- 「ランダムならいくつか」を先に決めておく。基準線が無いと数字は読めない
- 目的を先に伝えると、それが入口のフィルタになることがある
- 土台から確かめる。 拍の位置は1分で確認できたのに、後回しにして全部やり直した
- 判定する側には 「答え」ではなく「どっちが近いか」 を訊く
ラフとしてはかなり良い状態になったので、ようやく楽しい編曲です。
気力があれば、1人で多重録音して楽しむところまでやりたいですね。
耳コピできる方、音楽解析をやっている方、
あるいは「AIにこう頼んだらうまくいった」という方、
コメントで教えてもらえると嬉しいです。
使ったもの
- Claude Code — 解析スクリプトの実装と、音楽解析まわりの判断
- Python 3.13
- librosa — 音響解析(テンポ・クロマ・オンセット)
- Demucs — 音源分離
- basic-pitch — 採譜
- MuseScore — 譜面の生成・編集
- U-FRET — いつもお世話になっているコード検索サイト