電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

音源作りに持っておきたい本 サウンドプログラミング入門

Arduino UNO R4にDACがあるので何か音源を作ってみたいと思いました。
過去にmbedでPSG音源やファミコン音源を作って遊んでたことがありました。
その頃に結局実現する前に飽きて止まってしまってますがFM音源を作ってみたいなと思い、仕組みを理解するために買って今でも音源関係で役に立っている本があります。

サウンドプログラミング入門 - 音響合成の基本とC言語による実装

初版は2013年3月10日発行ですが、現在でも現行商品として販売されています。

章の構成を見てもらえればわかると思いますが、波形を出力する基本からPSG音源やFM音源等の仕組みも解説されていて1冊で一通りのことがコンパクトに書かれています。
この手の本は他になかなか無いので、重宝しています。

章の構成

第1章 サウンドプログラミングの基礎知識
 1.1 サンプリング
 1.2 標本化
 1.3 量子化
 1.4 メディアの規格
 1.5 WAVEファイル
 1.6 C言語によるサウンドプログラミング
 コラム1 サウンドレコーダー

第2章 サイン波を鳴らしてみよう
 2.1 サイン波
 2.2 波形と周波数特性
 2.3 12平均律音階
 コラム2 フェード処理

第3章 サイン波を重ね合わせてみよう
 3.1 サイン波の重ね合わせ
 3.2 ノコギリ波
 3.3 矩形波
 3.4 三角波
 3.5 位相
 3.6 白色雑音
 コラム3 音の三要素

第4章 周波数特性を分析してみよう
 4.1 周波数分析
 4.2 フーリエ変換
 4.3 窓関数
 4.4 楽器音の周波数分析
 4.5 スペクトログラム
 4.6 高速フーリエ変換
 コラム4 バーチャルピッチ

第5章 加算合成 ~ 足し算で音を作ってみよう
 5.1 加算合成
 5.2 サイン波の重ね合わせ
 5.3 時間エンベロープ
 5.4 オルガン
 5.5 ピアノ
 コラム5 分析合成

第6章 周波数特性を加工してみよう
 6.1 フィルタ
 6.2 FIRフィルタ
 6.3 IIRフィルタ
 6.4 DFTフィルタ
 コラム6 インパルス応答

第7章 減算合成 ~ 引き算で音を作ってみよう
 7.1 減算合成
 7.2 原音のフィルタリング
 7.3 周波数エンベロープ
 7.4 音声合成
 7.5 ボコーダ
 コラム7 パルス列

第8章 PSG音源 ~ 電子音を鳴らしてみよう
 8.1 PSG音源
 8.2 時間エンベロープ
 8.3 ゲームミュージック
 8.4 効果音
 8.5 オーバーサンプリング
 コラム8 MMLとMIDI

第9章 アナログシンセサイザ ~ 楽器音を鳴らしてみよう
 9.1 アナログシンセサイザ
 9.2 LFO
 9.3 トレモロ
 9.4 ビブラート
 9.5 ワウ
 9.6 ADSR
 9.7 オルガン
 9.8 バイオリン
 9.9 ピアノ
 9.10 ドラム
 9.11 アナログ信号とディジタル信号
 コラム9 デチューン

第10章 FM音源 ~ 金属音を鳴らしてみよう
 10.1 FM音源
 10.2 変調指数
 10.3 周波数比
 10.4 時間エンベロープ
 10.5 チューブラーベル
 10.6 エレクトリックピアノ
 10.7 ディジタルシンセサイザ
 コラム10 モジュレーション

第11章 PCM音源 ~ サンプリングした音を鳴らしてみよう
 11.1 PCM音源
 11.2 タイムストレッチ
 11.3 ピッチシフト
 11.4 Log-PCM
 11.5 DPCM
 11.6 ADPCM
 コラム11 ループシーケンサ

第12章 リアルタイム処理のサウンドプログラミング
 12.1 サウンドデバイスとサウンドドライバ
 12.2 録音処理
 12.3 再生処理
 12.4 ループバック再生
 12.5 ボイスチェンジャ
 コラム12 Pure DataとSuperCollider