DAW・シーケンサーエンジンを支える技術
2019年10月27日に開催されるM3にて新刊「DAW・シーケンサーエンジンを支える技術」を頒布します。サークル配置番号はサ-22x(ginga)です。
当日は本新刊のほか、筆者が開発しているMMLコンパイラmugeneとWaveform(本書で頻繁に紹介するtracktion_engineをもとに構築されているDAW)を使用して作成した楽曲のCD "mugene fantasy suite" およびtracktion楽曲データの頒布も行います(2019年3月2日「幻想音楽祭」にて頒布したものです)。なお、MMLはmugeneのリポジトリで公開されています。(詳細: "幻想音楽祭" 出展のお知らせ (+ MMLによる音楽制作の実践))
また、当日は、上記CDの試聴機のほか、筆者がAndroid上の仮想MIDIデバイスとして利用できるように移植したFluidsynthを利用するMIDIプレイヤー上で同楽曲群を演奏できるデモも用意します。
本書の内容
本書は、既存のDAW(Digital Audio Workstation)などの音楽シーケンサーをプラグインで拡張したり、新しく自分で音楽シーケンサーを開発したり、といった、単に利用するのを超えるレベルで音楽ソフトを活用したい人にとって、参考となるような情報をまとめたいという思いのもとに生まれました。
音楽ソフトに関連する技術の話は多岐にわたりますが、DAWのようなソフトウェアの開発を主眼に置いた本はあまり見たことがありません。DAWは大規模なソフトウェアであり、個人や小規模なソフトウェア開発チームで取り組むのは困難であるかもしれませんが、開発のために必要な参考資料が包括的にまとまっていないということもあるでしょう。
一般的な書店のコンピューター関連書籍のコーナーで見つけることの出来る音楽関係の技術書には、(筆者の観点ですが)概ね3パターンあります。
- Cubase, ProTools, Studio Oneなど既存のDAWやオーサリングツールの使い方を解説する書籍
- DAWなどを利用した音楽の作成テクニックを解説する書籍(Vocaloidの使いこなし方なども含む)
- 音声処理・信号処理など工学に類する書籍
本書はこれらのどれにも属さないものになると筆者は考えています。
筆者がかつて見てきたソフトウェア開発の分野では、IDE(統合開発環境)に関する情報も同様の問題をかかえていたと思っています。IDEはエディタ、コンパイラ等のツールチェイン、プロジェクトモデル、デバッガー、UIデザイナーなど、数多くの部品から成り立っています。それぞれを構成要素に分解していけば、個別には個人開発者でも十分に立ち向かえる課題になりますし、資料になる書籍のある分野もあります。一方で、それらを総体的な視点でまとめようとするものはほとんどありません。
DAWに関しても、同じような視点で分析し、課題を因数分解して、個別の課題は既存の書籍などを参照しつつ、それらがどのように繋ぎ合わせられるのかを解説することで、自分が普段使っているDAWについて、理解を一段深められる本があるべきだ、と筆者は考えます。
イベント頒布価格: 1000円
(B5, 56ページ / coverpage by Machiko)
本書の誤り・訂正など
本書における誤りや誤解を招く表現などを見つけられた場合は、github issueでお知らせください。訂正情報もこちらに掲載します。
目次
- 第1章 総論
- 1.1 音楽の打ち込み作業とDAWのしごと
- 1.1.1 オーディオトラック
- 1.1.2 MIDIトラック
- 1.1.3 編集機能
- 1.1.4 再生と変換
- 1.1.5 オーディオ・MIDI環境設定
- 1.2 DAWではない音楽ソフトウェア・ツール
- 1.2.1 VPL/APLの系譜(Max/MSP, Pure Data etc.)
- 1.2.2 MMLの系譜
- 1.3 音楽ツール開発の課題
- 1.3.1 オーディオI/O、MIDI I/O
- 1.3.2 複数のオーディオプラグイン機構のサポート
- 1.3.3 音楽のデータモデルと演奏エンジン
- 1.3.4 GUI
- 1.3.5 GUIから切り離された音楽編集機能
- 第2章 オーディオ/MIDIのネイティブアクセス
- 2.1 MIDIアクセスAPI
- 2.1.1 MIDIアクセスAPIに求められる機能
- 2.1.2 プラットフォーム別のMIDIアクセスAPI
- 2.1.3 クロスプラットフォームのMIDIアクセスAPI
- 2.2 オーディオアクセスAPI
- 2.2.1 オーディオ再生のコールバック
- 2.2.2 多様なクロスプラットフォーム・オーディオライブラリ
- 2.2.3 オーディオアクセスAPIに求められる機能
- 2.2.4 オーディオデータの属性
- 2.3 オーディオ/MIDI環境設定
- 第3章 オーディオプラグイン開発ライブラリ
- 3.1 オーディオプラグインとプラグインホスト
- 3.2 オーディオプラグイン開発フレームワーク
- 3.2.1 一般的なオーディオプラグインフレームワーク
- 3.2.2 オーディオプラグイン開発言語
- 3.2.3 クロスオーディオプラグイン開発フレームワーク
- 3.2.4 オーディオプラグインフレームワークの依存関係
- 3.3 オーディオプラグインの接続
- 3.3.1 ルーティング(パッチ)
- 3.3.2 チャンネルとオーディオデバイス
- 3.4 オーディオプラグインの一般的な処理
- 第4章 シーケンサーエンジンの技術
- 4.1 音楽データの構成
- 4.1.1 SMF構造とMIDIのデータ
- 4.1.2 時間の表現
- 4.1.3 SMFの範囲を超えるデータ表現
- 4.1.4 オーディオプラグインの識別子と名前
- 4.1.5 オーディオプラグインのパラメーターとstate
- 4.1.6 モダンな楽曲データモデルの構造例
- 4.2 プレイバック
- 4.2.1 リアルタイム処理要件
- 4.2.2 タイムスタンプ
- 4.2.3 複数トラックの演奏命令のマージ
- 4.2.4 倍速/スロー再生とオーディオのストレッチ
- 4.3 取り込み
- 4.3.1 リアルタイム演奏入力
- 4.3.2 SMFインポート(とエクスポート)
- 4.4 編集
- 4.4.1 UIとロジックの分離
- 4.4.2 編集のための情報
- 第5章 付録: tracktion_engineモジュール全部1行解説
サンプルページ