DAW(音楽制作ソフト)の画面に並ぶ無数のツマミやフェーダーを見て、「これをGUIで操作するのは非効率だ」と感じたことはありませんか?
エンジニアにとって、テキストエディタこそが最強のツールです。
実は音楽も、コードで書いて、Gitで管理し、ビルドして鳴らすことができます。
今回は、プログラミングスキルを活かして音楽を構築する「Programmable DTM(Algorithmic Composition)」の世界と、GitHubで人気の主要ライブラリを紹介します。
なぜ「コード」で音楽を作るのか?
エンジニアがDTMをコードで行うメリットは、単なる「かっこよさ」だけではありません。
-
バージョン管理が可能
楽曲データがテキストコードになるため、Gitでの履歴管理や差分確認が容易になります。「サビのコード進行を変更したブランチ」を切ってマージする運用が可能です。 -
アルゴリズムによる生成(Generative Music)
「ランダムに音を選ぶ」「数式に基づいてリズムを刻む」など、人力の手癖では思いつかないフレーズを計算で生み出せます。 -
アプリケーションとの動的な連携
Webサイトのインタラクションや、Reactベースの動画生成(Remotionなど)と連動させ、状況に合わせて変化するBGMを実装できます。
アプローチ別・推奨ライブラリ
やりたいことや得意な言語スタックに合わせて、大きく3つのアプローチがあります。
1. Web・フロントエンド技術でやる (JavaScript/TypeScript)
Web Audio APIをラップしたライブラリを使用します。ブラウザで動くため、ポートフォリオサイトへの埋め込みや、Reactコンポーネントとしての実装に最適です。
Tone.js
Webで音を鳴らすなら、まずこれです。シンセサイザー、エフェクト、スケジューリング機能が完備されており、「楽譜を配列で書く」感覚で実装できます。
import * as Tone from 'tone'
// シンセを作成して出力に接続
const synth = new Tone.Synth().toDestination();
const now = Tone.now()
// ド・ミ・ソを8分音符間隔で鳴らす
synth.triggerAttackRelease("C4", "8n", now)
synth.triggerAttackRelease("E4", "8n", now + 0.5)
synth.triggerAttackRelease("G4", "8n", now + 1)
Scribbletune
「音楽理論をJavaScriptのオブジェクトとして扱う」ことに特化しています。コード進行やスケールを生成し、MIDIファイルとして書き出すことが可能です。
2. Python × AIでやる (Data Science/ML)
Python環境でのデータ処理や、機械学習モデルを用いた生成を行いたい場合に適しています。
Magenta (Google)
TensorFlowを用いた音楽・芸術生成プロジェクト。「メロディの続きをAIに作らせる」「ドラムパターンを生成する」といったことが可能です。
Audiocraft (Meta)
Metaが公開している最新の音声生成ライブラリ(MusicGenなど)。テキストプロンプトから高品質な音楽ファイルを生成できます。「コードを書く」というより「モデルを動かす」アプローチですが、BGM生成の自動化には最強のツールです。
3. ライブコーディングで演奏する
DJのように、リアルタイムでコードを書き換えて演奏するスタイルです。
Sonic Pi
Rubyベースの文法で記述します。教育用として設計されていますが、機能は本格的で、非常に短いコードで複雑なループを作れます。
# 典型的なEDMっぽいキックドラムのループ
live_loop :beat do
sample :bd_haus
sleep 0.5
end
GitHubで見逃せないプロジェクト一覧
| プロジェクト | 言語 | 特徴 |
|---|---|---|
| Tone.js | TypeScript | Web Audio APIのデファクトスタンダード。 |
| Strudel | JavaScript | ライブコーディング言語TidalCyclesのWeb移植版。 |
| Music21 | Python | MIT発。計算音楽学、楽譜データの解析・処理向け。 |
| SuperCollider | C++ / SC | 音響合成エンジンの深淵。音そのものを設計したい人向け。 |
まとめ
GUIのDAWは直感的ですが、論理的な構造や再現性を重視するエンジニアにとっては、コードベースのアプローチの方が肌に合うことがあります。
- Webアプリや動画生成に組み込むなら Tone.js
- AI生成やデータ分析なら Python系
- パフォーマンスをするなら Sonic Pi
まずは npm install tone 、あるいはSonic Piのインストールから始めて、Hello World の代わりに C4(ドの音)を鳴らしてみてはいかがでしょうか。