2019年02月01日

GNU Octave

Wavetableに書き込む波形生成ソフトウエアに、フリーのGNU Octaveを導入することにした。

Webで波形生成ソフトウエアとしての使用法を検索したところ、懇切丁寧にメソッドを解説している人を見つけることができた。



平易な英語により、GNU OctaveでDSPプロセッシングを行うための基本的な操作法を5回シリーズでレクチャーしてくれている。

このレクチャーを参考に、サイン波を加算する方法でWavetableを生成するコードを書いてみた。

WS001615.JPG

手法は単純で、サイン波生成の要素を羅列して倍音を構成している。 データのステップは12bit×12bit。Violin波形の場合はSinとCosを交互に配置しているが、SawToothの場合はSinのみ、Squareの場合は、奇数次倍音のみをエントリーしている。 生成した波形はCSV形式でファイルアウトすると同時に、データーをWavFileに変換して音色を確かめることが出来る。

多少の手間が掛かるが、倍音毎に音量や位相の設定を行って、波形を構築していく。

WS001605.JPG

まず、Webの記事を参考に、Violinの波形を再構築した。

プロットした波形は非対称の矩形波といった趣だが、割と良い感じの音色だった。

WS001606.JPG

波形データを要素の集合として展開することも出来る。

WS001619.JPG

こちらは、13次倍音までを合成した鋸波

WS001618.JPG

データはroundによって整数に丸めてある。

WS001620.JPG

これは矩形波。 奇数次倍音を合成して生成する。 倍音の数を制限して柔らかめの音色にチューニングしてある。

WS001621.JPG

プロットでは不明瞭なデータの幅をこの画面で確認する。 素データを乗算した後にオフセット値を加えて、最適値に調整している。

WS001611.JPG

割と音色を気に入っていたが廃版としていた半波長のサイン波を再構成した。

WS001612.JPG

これは波形が単純なので、最適化の調整は楽だ。

WS001613.JPG

roundで丸められた部分を拡大している。

WS001614.JPG

こちらは、鋸波の拡大図。 波形の状態を目視できるので安心。

WS001616.JPG

結局、8倍音までのWavetableを生成するツールを書いた。

コードには、鋸波・矩形波・半波サイン・サイン・コサイン混成波を合成するテンプレートを実装している。 三角波の合成パターンを追加するかを悩んでいるところだが、半波サインのキャラクターが似ているのでこれは不要かもしれない。

ツールには、CSVの書き出しと同時にWavフォーマットの音声ファイルを出力する便利機能を実装している。
posted by Yasuski at 10:14| LaVoixski