Part.1をご覧になってない方はこちらへ。
VirusTIのOSCILLATOR 3を、Spireに反映させる
OSCILLATOR 3の値を反映させていきます。
オシレーターを反映させる系はこれで一段落でしょうか。
ノイズはあるのですが、あれはちょっと調査がいりそうなので、楽しみです。
OSCILLATORのGoogle スプレッドシート
OSCILLASTOR 3 (入力側)


Spire OSC (出力側)


OSCILLATOR3の特殊な設定は、Slaveです。
Slaveは、OSCILLATOR 2の値を引き継ぐ仕様のようです。
ただし、detuneの値だけ反転するようです。
| Spireのパラメータ | 計算式 |
| octave | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),Classic時のOSC2のoctave値,HyperSaw時のOSC2のoctave値),QUOTIENT(Oscillator 3 Detune In Semiton,12))Slaveの時 Oscillator 2 ModelがClassicのときは Classic時のOSC2のoctave値の値。 HyperSaw時のOSC2のoctave値の値。 Slave以外の時 Oscillator 3 Detune In Semitonを12で割った商の値 |
| note | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),Classic時のOSC2のnote値,HyperSaw時のOSC2のnote値),IF(Oscillator 2 Detune In Semiton > 0,Slaveの時 Oscillator 2 ModelがClassicのときは Classic時のOSC2のnote値の値。 HyperSaw時のOSC2のnote値の値。 Slave以外の時 Oscillator 3 Detune In Semitonを12で割った余の値 (Semitonが負の値の場合は、Spireの値も負になる) |
| fine | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),1000 - Classic時のOSC2のfine値,1000 - HyperSaw時のOSC2のfine値),Oscillator 3 Fine Detune *500/128+500)Slaveの時 Oscillator 2 ModelがClassicのときは 1000 – Classic時のOSC2のfine値の値。 1000 – HyperSaw時のOSC2のfine値の値。 Slave以外の時 Oscillator 3のDetuneの値を反映 |
| ctrlA | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),Classic時のOSC2のctrlA値,HyperSaw時のOSC2のctrlA値),if(REGEXMATCH(Oscillator 3 Model,"Pluse"),1000,0)Slaveの時 Oscillator 2 ModelがClassicのときは Classic時のOSC2のctrlA値の値。 HyperSaw時のOSC2のctrlA値の値。 Slave以外の時 Pluseかそれ以外かの値を設定 |
| phase | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),Classic時のOSC2のphase値,HyperSaw時のOSC2のphase値),IF(Oscillator Section Inital Phase > 0, (970-QUOTIENT((Oscillator Section Inital Phase-1) *970,126))+30, 0))Slaveの時 Oscillator 2 ModelがClassicのときは Classic時のOSC2のphase値の値。 HyperSaw時のOSC2のphase値の値。 Slave以外の時 VirusTIのPhaseの値が0より大きい(1〜127)時は、 Phase値を-1して0〜126の値にしてから、970/126倍にします。 Spireのphase値は30が最小値になるので、最後に+30します。 VirusTIのPhaseの値が0のときは、Spireもそのまま0にします。 |
| wt-mix | =IF(REGEXMATCH(Oscillator 3 Model,"Slave"),if(REGEXMATCH(Oscillator 2 Model,"Classic"),Classic時のOSC2のctrlA値,HyperSaw時のOSC2のctrlA値),if(REGEXMATCH(Oscillator 3 Model,"Pluse"),0,1000)Slaveの時 Oscillator 2 ModelがClassicのときは Classic時のOSC2のwt-mix値の値。 HyperSaw時のOSC2のwt-mix値の値。 Slave以外の時 Pluseかそれ以外かの値を設定 |
実際に変換してみた
どんな音になるか、違いがどれぐらいでるか、
Slaveを使った確認をしてみました。



それを受けてのSpireはこんな感じです。




音を比較してみます。
VirusTIの音
Spireの音
うーん。
矩形波の音自体の質感が違うのか、やっぱり差を感じますが、、、これでいきます。
次回
ノイズの反映をしていきます。


コメント