「音を生成する」ということ

 音は、人間にとって感覚的なもの。
 その感覚を、いろいろ論理的な理屈を元に組み上げていかないと、機械的に生成することはできない…なので、感覚的なものを知覚した事象として分解・整理、論理的な形にした上で、再構築する作業が必要。

 ということを、本をいろいろ読んでいて気付いた。
 理解したということではなく気付いたことなので間違っているかもしれないが、少なくともそういう道順を辿らないと感覚的なものを具現化させる方法が思いつかないので、特に間違っていないと思う。

 プログラム的に生成しようと思ったなら、図としては「波形」で表現される周期的な波長を計算で求めることになるので、音の数理的な表現が必要になる。

 「数理的に」というのは、現実的にはどういった周波数の音がどのように組み合わさっているかを数式で表す作業になる。
 基本的には、周波数と音圧の組み合わせ。スペクトル分析の領域では、どういった周波数の音が組み合わさっているか、を数値で表すことになる。

 従って、細かく計算式を立てて自分で信号生成する方法は採らずに、一般化された手法の上でツール化された MAX(Cycling’74社製)のようなソフトを用いて、音声合成を行う方が現実的かもしれない。

 MAX(MAX/MSP)を利用した場合でも、計算で音声を生成することは求められる。
 ただ、一般化された音声合成の方法は初めから用意されているし、外部拡張モジュールなどでパラメトリックな設定だけでも音声合成できる機能を多々利用できるので、数学が得意ではなくても自分の出来るところから始める形で徐々に理解を深めることもできる。
 実際には、最終的に自分で思い通りの音声合成をしたくなるだろうから、数理表現を学び独自の音声合成方法を試したくなるだろう。
 そうなると、もう完全に音声合成プログラミングの領域に踏み込むことになる。

 「純粋に音の生成ができればOKで、プログラミング記述は必要ない。」という場合には、その為の機能に特化したツールなので MAX/MSPはとても強力なツールになる。(言うまでもなく、音声合成の為の数学的知識は必要。)
MAXで、正弦波(サイン波:5Hz)を生成する、とてもシンプルな例。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-06-%e5%8d%88%e5%be%8c0-07-31
 cycle~オブジェクトに周波数を与えると正弦波の信号が生成されるので、その信号を音声出力デバイス(PC接続中のスピーカーやヘッドホンなど)と信号表示オブジェクトに出力するよう指示している。

 通常のプログラム言語だとPCMデータの生成やPCMデバイスの準備・駆動といった処理も用意する必要があるが、そういった部分の作業から解放されるので、そのあたりの煩わしさを感じずに信号処理に注力できる。