OPZとAFMのWaveformを再現する

 以下の投稿でYM2414 (OPZ)搭載機の実機のOperator波形を観察してみた結果、プログラマティックに容易に生成できそうなことが判りました。
wave.hatenablog.com

 本投稿では、実際にOPZと同様のOperator波形を生成してみた結果を紹介します*1。また、サイン波以外のOperator波形が利用可能になったのはOPZ系からですが、これとは別にTG77/SY77のAFM(Advanced FM)音源でもOperator波形は拡充されました。というわけで、AFMのOperator波形についても再現を試みました。
 

作ったもの

 C言語で書いたオシレーター
 これを基に、Linux ALSAで実際に音を出せるシンセサイザーを組むとか、KORG NTS-1のオシレータとして組み込むなど応用できますが、とりあえずWavファイルに吐き出すようにしました。
 以下に各Wavファイルの波形の1周期をプロットした画像を掲載します。X軸の目盛りが微妙にズレてますが、画像プロット時の制約のようなものなので無視してください*2
 

OPZ再現編

OPZ Operator waveform#1
単なるサイン波です。
f:id:kachine:20210920180221p:plain
OPZ Operator waveform#2
f:id:kachine:20210920180442p:plain
OPZ Operator waveform#3
f:id:kachine:20210920180507p:plain
OPZ Operator waveform#4
OPZ固有波形です。
f:id:kachine:20210920180536p:plain
OPZ Operator waveform#5
f:id:kachine:20210920180602p:plain
OPZ Operator waveform#6
f:id:kachine:20210920180628p:plain
OPZ Operator waveform#7
f:id:kachine:20210920180659p:plain
OPZ Operator waveform#8
f:id:kachine:20210920180722p:plain

 図形として目で見ると似たような印象を受ける波形もありますが、個々の波形は別個のものです。アニメーションGIFにすると以下の通り。

f:id:kachine:20210920180915g:plain
OPZ Operator waveforms #1-8

 (アニメーションGIF化して閃いたんですが、各オペレータ波形をWaveSequence組めるようにするとか、単純に2波形を延々とクロスフェードできるようにするとかしても楽しそうかもと思ったので、自作シンセ開発に取り入れてみようと思います。)
 YM2414(OPZ)搭載機の実機と聞き比べてみましたが、ほとんど同じよく似た音に聴こえます(同様のスペクトル分布になってます)。
 

AFM再現編

AFM Operator waveform#1
OPZの#1と同一波形です。
f:id:kachine:20210920181940p:plain
AFM Operator waveform#2
OPZの#2と同一波形です。
f:id:kachine:20210920182001p:plain
AFM Operator waveform#3
OPZの#3と同一波形です。
f:id:kachine:20210920182019p:plain
AFM Operator waveform#4
AFM固有波形です。
f:id:kachine:20210920182035p:plain
AFM Operator waveform#5
OPZの#5と同一波形です。
f:id:kachine:20210920182058p:plain
AFM Operator waveform#6
OPZの#6と同一波形です。
f:id:kachine:20210920182121p:plain
AFM Operator waveform#7
OPZの#7と同一波形です。
f:id:kachine:20210920182149p:plain
AFM Operator waveform#8
OPZの#8と同一波形です。
f:id:kachine:20210920182216p:plain
AFM Operator waveform#9
AFM固有波形です。
f:id:kachine:20210920182242p:plain
AFM Operator waveform#10
AFM固有波形です。
f:id:kachine:20210920182305p:plain
AFM Operator waveform#11
AFM固有波形です。
f:id:kachine:20210920182333p:plain
AFM Operator waveform#12
AFM固有波形です。
f:id:kachine:20210920182353p:plain
AFM Operator waveform#13
AFM固有波形です。
f:id:kachine:20210920182419p:plain
AFM Operator waveform#14
AFM固有波形です。
f:id:kachine:20210920182447p:plain
AFM Operator waveform#15
AFM固有波形です。
f:id:kachine:20210920182509p:plain
AFM Operator waveform#16
AFM固有波形です。
f:id:kachine:20210920182536p:plain

 これらもアニメーションGIF化すると以下のようになります。

f:id:kachine:20210920182622g:plain
AFM Operator waveform#1-16

 AFMのオペレータ再現波形については手元に実機が無いため、聴感上似ているのか確認はできていません*3
 



以上。

*1:※元のYAMAHA製音源チップではメモリ節約のためサイン波のビット深度が12bitだから云々は再現対象としていません。理屈としてはこうなるよねという波形を生成したものです。

*2:サンプリング周波数の逆数と生成音の波長が整数倍の関係に無いことが原因。

*3:コロナ禍が収束すれば実家のTG77で検証したいところです。また、実機が手元に無いのにどうやって再現したかというと、取説に図示された波形を参考にしました。