投稿

2月, 2019の投稿を表示しています

VSTシンセ自作 オシレータ実験

イメージ
Audacityのコンパイル用に超巨大開発環境のVisualStudioをインストールしたのが去年の年末。 せっかく入れたので、これで何か作ってみようかと思ってVSTシンセの実験をしてみた。 VSTは9年前にちょっと触ったことはあるのだが、当然ながら大きく変化していた。まずVSTは現在3.6で仕様も大きく異なっていた。とりあえずGUIなしで、シンセのオシレータ部分(発振回路)だけでも作ってみようと試行錯誤してみる。 割とあっさり音が出せるところまでこぎつける。とりあえずサイン波を電子ピアノから鳴らすことはできた。 手持ちの電子ピアノのMIDI信号をキャッチしてみたら、ノートオフは使われていないのね。すべてノートオンで、音を止める時は0で止めていた。 次にノコギリ波にチャレンジ。 まずは理論通りのサイン波の合成によるノコギリ波を作ってみた。基本的には5年前に作った このページ の加算合成の方法。1サンプルごとに膨大な計算量なので、どうかな?と思っていたが、リアルタイムでもあっさり再生。最近のPCパワーは素直にすげーと思った。 デジタルの場合、倍音が多く含まれる波形は要注意で、ナイキスト周波数を意識する必要がある。ナイキスト周波数はサンプリング周波数の半分で、再生できる最高音のこと。これを超える周波数を扱おうとするとエイリアスノイズが発生する。 下が60倍音まで扱ったノコギリ波の音。低い音は問題ないのだが、音が上がるにつれて、妙な音が入ってくる。この音がナイキスト周波数を超えた倍音が、低い音として認識されて、再生されてしまっている状態。 波形はこんな感じでノコギリ波としては悪くない。 これではまずいということで、次の実験。 だったら倍音を少な目にするという方法。手持ちの電子ピアノの最高音はG7の3136Hzなので、ナイキスト周波数24000Hz(サンプリング周波数48000Hz)とした場合7倍音までならナイキスト周波数は超えない。ということで、 低音から高音まで一貫して7倍音まで扱うノコギリ波にしてみた。音はこんな感じ。 聴いてみると低音が物足りない。波形を見ても、ノコギリ波としては中途半端。 次にやることは倍音をナイキスト周波数まで扱うというもの。これは音域ごとに倍音の数が違うの