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の音
うーん。
矩形波の音自体の質感が違うのか、やっぱり差を感じますが、、、これでいきます。
次回
ノイズの反映をしていきます。
コメント