以下の内容はhttps://nao-y.hatenablog.com/entry/2026/02/26/221501より取得しました。


音楽が何もわからない自分向けにコード生成ツールを開発した

アイドル楽曲メインのDJをやっていて、原曲だけ掛けるのに物足りなさを感じている今日この頃。しかし地下アイドル楽曲のbootlegはなかなか無い。なら自分で作れるようになればいいんじゃね?となった。

そうなるとDTMをやる必要がある。しかし俺は小学2年生の頃に鍵盤ハーモニカで居残りさせられてから、音楽の知識に対するアレルギーがある。ちなみに居残りは脱走した。

ChatGPTに「Future Bassを作ってみたい」と聞いてもコード進行云々と言われるし、YouTubeで解説動画を観ても完全に何もわからない人間のわからなさを舐めてるのかとキレかける。コードというものがいくつかの音で構成される和音であることくらいは知っているが、構成音をいちいち調べても発狂するのでPythonで解決しようと思い至った次第。

そこで開発したのがChordClip。

https://chordclip.streamlit.app

ChordClipの説明

UIはこんな感じ。

キーとなる音、スケール、BPM、コードの長さ(1/4小節, 1/2小節, 1小節)、ルート音(コードの基準となる音)を選択。プルダウンからコードを選んで、Download MIDIでMIDIファイルをダウンロード。

ダウンロードしたファイルをDAWに貼り付ければ音が鳴る、という寸法。

ざっくり裏側

UIにはStreamlitを採用。フロントエンド側の言語を一切気にせず、Pythonだけで完結できるのでマジで助かる。デプロイにはStreamlit Cloudを使用。GitHubリポジトリを指定するだけで公開できるので超便利。Python 3.13までの対応なので、uvで構築したPython 3.14環境を作り直す必要はあった。

スケールの取得には以下のWebサイトに記載されている一覧を使用させていただいた。

scale-player.vercel.app

コードの生成ロジックはChatGPTにかなりのサポートを受けて実装した。スケールの音の並びがルート音に応じて回転する仕組みの実装は普通に苦労した。ロジックとしては複雑ではないけど、概念を理解できていないので時間が掛かった。

スケールというのは、基本的に7つの音で構成されている。基準となる音(ルート)から半音での相対的距離の配列として表すことが可能。

e.g. メジャースケール

0, 2, 4, 5, 7, 9, 11

これがキーがCのCメジャースケールの場合、先頭の0がCの音になる。そこから半音ずつ変化して C, D, E, F, G, A, Bとなる。

Cメジャースケールでルート音をDに変更すると、この並びが回転して D , E , F , G , A , B , Cとなる。ここで末尾のCの音は1オクターブ上の音。

これを一般化してロジックに落とし込む段階で、仕組みの理解に時間が掛かった。

このスケールの回転までいけば、あとはスケールに対してコードを適用するだけ。コードも半音ベースの相対的距離で記述される。それをスケールに当てはめればOK。

e.g. メジャーコード

0, 2, 4

先ほどのルート音がDのCメジャースケールに適用すると D-F-Aとなる。

ちなみに選択できるコードに対して、そのコードがスケールに含まれているかを判定している。スケールに含まれている音で構成されているコードをダイアトニックコードというらしい。初めて知った。

コードの中にはダイアトニックではあるが、1オクターブ上の音が含まれているものがあり、それの考慮に苦労した。今でもよくわかっていないところが多分にある。

さて、コードを実際の音の並びで具象化できたら、入力されたBPM、小節数を加えてMIDIファイルを生成するだけ。midoでMIDIファイルを作成して、BytesIOに落とし込んでダウンロードさせる。以上。

今後の展望

コード進行のテンプレートが出せたら便利なのでは、と思っている。そもそもコード進行がどういうものなのか理解に時間が掛かりそうではあるけど。

ツールはできたので、あとはDAWを起動して試しにFuture Bassとか作りたい。次のハードルはDAWの扱いそのものになりそう。Ableton Live 11を入れているけど、マジで操作がわからない。

それができたらアイドル楽曲のbootlegを作りたい。幸い、楽曲からボーカルを抽出するツールはあるし、有料ではあるが楽曲のコード分析ができるDAWプラグインがあるようなので、楽曲を構成するコードを踏まえて土台になる音楽を別ジャンルに置き換える、といったことができそう。




以上の内容はhttps://nao-y.hatenablog.com/entry/2026/02/26/221501より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14