4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【脱GUI】エンジニアなら「コード」で音楽を作ろう。Programmable DTMの世界と主要ライブラリまとめ

4
Posted at

DAW(音楽制作ソフト)の画面に並ぶ無数のツマミやフェーダーを見て、「これをGUIで操作するのは非効率だ」と感じたことはありませんか?
エンジニアにとって、テキストエディタこそが最強のツールです。

実は音楽も、コードで書いて、Gitで管理し、ビルドして鳴らすことができます。
今回は、プログラミングスキルを活かして音楽を構築する「Programmable DTM(Algorithmic Composition)」の世界と、GitHubで人気の主要ライブラリを紹介します。

なぜ「コード」で音楽を作るのか?

エンジニアがDTMをコードで行うメリットは、単なる「かっこよさ」だけではありません。

  1. バージョン管理が可能
    楽曲データがテキストコードになるため、Gitでの履歴管理や差分確認が容易になります。「サビのコード進行を変更したブランチ」を切ってマージする運用が可能です。
  2. アルゴリズムによる生成(Generative Music)
    「ランダムに音を選ぶ」「数式に基づいてリズムを刻む」など、人力の手癖では思いつかないフレーズを計算で生み出せます。
  3. アプリケーションとの動的な連携
    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(ドの音)を鳴らしてみてはいかがでしょうか。


4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?