先頭へ | 1つ前へ | 次へ |
【解説】 今回は音量連動補正システムを組み込んでみるyo これはパッチメイカーシリーズでもまだ実装したことがないので、最 新のシステムを実験を兼ねて導入することになるyo(人柱笑) 基本的な仕組みはGainが大きいときはLEVELを下げて、 逆にGainが小さいときはレベルを少し上げてやるというものにするよ。DRIVEとAMPのセクションだけを対象にするyo LEVELのセレクトメニューでは通常30から150までの値が選べるようにしてあるよ。ここに「auto」というのを追加して、これ が選ばれている場合に作動するようにするyo とりあえずデフォルトレベルはDRIVEは80、AMPは90にして、これを基準 に増減させてみるよ。各ユニットごとに音量バランスが結構異なっているので、これで完璧という補正をしようと思うなら選 ばれたユニットごとに補正する値を変えたらいいと思うけど、今回はそこまで手間をかける気はないyo(簡易笑) まあ、 補正し過ぎで変になってもいやなので、補正量は控えめにしとくよ。基本的にはボリュームペダルを常に使用して爆音を 予防するのが賢明な使い方だと思うyo とりあえずDRIVEユニットのほうのJavaScriptを見てみるよ。 DRL=edu.lev2.value; if(DRL==22){ //autoが選ばれている場合 DRL=110; if(DRG>11)DRL=100; if(DRG>21)DRL=90; if(DRG>31)DRL=80; if(DRG>61)DRL=70; if(DRG>71)DRL=65; if(DRG>81)DRL=60; if(DRG>91)DRL=50; } autoが選択されている場合はvalueに22が入っているので、if以下のルーチンに入るよ。低いほうの値から順にチェックし ていって、Gainが大きいほどLevelを削って代入しているだけだよ。AMPセクションも同じような感じで記述してるyo まあ、 これのキモは、上の補正値をどこまで実用的な値にすりあわせていくかだよね。今後、微調整して随時変更していくyo 簡単にできちゃったので、もう一つ改造しちゃうyo これまで試しにいろいろパッチグループを作って実際にG3v2で鳴らし てみてるけど、正直毎回毎回コーラスやリバーブがワンワンかかるのはしつこいなと思ったyo じゃあ、(through)を選ん でオフにすりゃいいじゃないかと思うところだけど、そうすると今度は80パッチが全部コーラス無しになっちゃうのでそれ はそれで面白くないよねw(苦笑) というわけで、たまには休めよ!という仕組みを導入してみるyo やり方は単純。各セクションのUNITを選ぶセレクトメニューに「any of ◯◯」というのがあるけど、これの下に「any 75%」 「any 66%」「any 50%」「any 33%」という項目を追加するよ。それぞれ、4回に3回はどれかが選ばれる、3回に2回はどれ かが選ばれる、2回に1回はどれかが選ばれる、3回に1回はどれかが選ばれる、という意味だよ。つまり、休みになる頻 度が選べるというわけだyo(優れモノ笑) NRU=edu.NRsel.value; //any of NRの場合 if(NRU==888)NRU=Math.floor(Math.random()*3)+27; //★any ◯◯%の場合 NRB=0; if(NRU==675)NRB="27,28,29,107"; //25%が107(through) if(NRU==666)NRB="27,28,29,27,28,29,107,107,107"; //33%が107(through) if(NRU==650)NRB="27,28,29,107,107,107"; //50%が107(through) if(NRU==633)NRB="27,28,29,107,107,107,107,107,107"; //66%が107(through) if(NRB!=0){ //NRBが0でない場合、つまりany ◯◯%のどれかが選ばれている場合の処理 NRx=NRB.split(","); //NRBを配列変数NRxに格納する NRlen=NRx.length; //配列変数NRxの配列要素の個数をNRlenに代入する Rnum=Math.floor(Math.random()*NRlen); //Rnumに配列要素の個数内の乱数整数を得る NRU=NRx[Rnum]; //配列変数NRxのRnum番目のデータ数値をNRUに代入する } NRセクションを例に解説するyo ユニットのID番号を変数NRUに入れればいいんだよ。★以降が追加部分だよ。まず、 NRBという変数に初期状態で0を入れるよ。any ◯◯% はセレクトメニューではvalueに675-633の値が入ってるよ。そ れぞれの場合において、NRユニット3種類のID番号(27,28,29)とthroughの107番が選択させたい比率に従ってコンマ 区切りテキストに入ってるyo それらをNRBに代入してデイレイタイムを選択するときに使った手法で、配列変数を使っ て乱数で決定した要素番号の値をNRUに代入しているよ。「.length」というのを配列変数名の後ろにつけると、その配 列変数の配列要素の個数を得ることができるので覚えておいてne これと同様の処理を各ユニットに追記してるyo まあ、こういうのを6種類追記するのは結構たいへんなんだけどねw(手間笑) あと説明しておくべきことは、フットスイッチのアサインと、テンポ同期の指定もさせたい場合と、スタイルシートに関する ことかなw もうちょっと連載は続くyo(延長笑)
先頭へ | 1つ前へ | 次へ |