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