『教育用G3Xパッチメイカー』(Step 12 リバーブも搭載の巻)
先頭へ1つ前へ次へ

 /    (^)  (^) \   

ついにリバーブセクションまでプログラミングするyo これで完成予想図まで到達になるけど、もうちょっと
改良の余地があるから連載はまだ続くyo(ひっぱり笑)
UNIT (1st) (2nd) (3rd) LEVEL
NR NRsel Thrsh lev1
DRIVE DRIVEsel Gain1 Tone lev2
AMP AMPsel Gain2 Tube Cab lev3
CHORUS CHsel Rate Depth Mix1 lev4
DELAY DLsel Time FB Mix2 lev5
REVERB RVsel Decay Tone2 Mix3 lev6
Contents of patch group file 

Just copy this data and paste it to ".g3xa" file of Edit&Share on any text-editing software.

【解説】

8種類のリバーブが選べるようになったよ。まあ、前回のディレイの方がパラメータ的にややこしかったので今回はほぼ
解説がいらないくらい簡単に感じるんじゃないかなw(微笑) あとNRセクションでZNRを選べるようにして、「any of NR」
も選択できるようにしたyo まずはリバーブから見ていこうか。

      //ユニット選択
      RVU=edu.RVsel.value;
      if(RVU==888){
         RVU=Math.floor(Math.random()*7)+60;
         if(RVU>65)RVU=RVU+39;                       //HDReverbは105番
      }
      //Decay指定。1から30までなので、値としては0から29。例外でHDReverbのみ0から100
      RVD=edu.Decay.value;                                    //基本パターン
      if(RVU==105)RVD=Math.floor(RVD/29*100);     //HDReverbの場合
      if(RVD==999){        //ランダムデータの場合
         RVD=Math.floor(Math.random()*30);                        //基本パターン
         if(RVU==105)RVD=Math.floor(Math.random()*101);      //HDReverbの場合
      }
      //Tone指定。値は0から10まで。
      RVT=edu.Tone2.value;if(RVT==999)RVT=Math.floor(Math.random()*11);
      //Mix指定。値は0から100まで。
      RVM=edu.Mix3.value;if(RVM==999)RVM=Math.floor(Math.random()*101);
      //Level指定
      RVL=edu.lev6.value;


ユニット選択で「any of REVERB」(888)が選ばれているときは、対象ユニットのID番号(60,61,62,63,64,65,105)の中か
ら番号をランダムに選ぶようにしているよ。パラメータの範囲で例外があるのはHDReverbのみで他は全部共通なので
シンプルだね。

次は、REVERBセクションのデータを書き出す部分。Module5に書き込んでいくんだけど、HDReverbとEarlyRefの一部が
パラメを書き込む位置が異なっているので注意してyo

     //◆REVERBセクション。パラメの配置順がユニットによって異なるので注意!Prm2までは共通。
      px=px+"<Module5><Prm0>1</Prm0><Prm1>"+RVU+"</Prm1><Prm2>"+RVD+"</Prm2>";
      //Prm3は基本的にTone。EarlyRef(id65)だけは違う。
      //EarlyRefではShapeが入るので、このパラメータはランダム値を入れる。
      RV3px="<Prm3>"+RVT+"</Prm3>";      //基本パターン
      if(RVU==65)RV3px="<Prm3>"+Math.floor(Math.random()*db(RVU,33))+"</Prm3>";   //EarlyRefの場合
      px=px+RV3px;
      //Prm4はすべてMixなのでRVMを共通で入れる。
      px=px+"<Prm4>"+RVM+"</Prm4>";
      //Prm5はEarlyRef(id65)だけRVTを入れる。ほかのユニットはランダムを入れる。
      RV5px="<Prm5>"+Math.floor(Math.random()*db(RVU,53))+"</Prm5>";      //基本パターン
      if(RVU==65)RV5px="<Prm5>"+RVT+"</Prm5>";      //EarlyRefの場合
      px=px+RV5px;
      //Prm6は基本的にLevel。HDReverb(id105)だけランダムを入れる。
      RV6px="<Prm6>"+RVL+"</Prm6>";      //基本パターン
      if(RVU==105)RV6px="<Prm6>"+Math.floor(Math.random()*db(RVU,63))+"</Prm6>";  //HDReverbの場合
      px=px+RV6px;
      //Prm7は基本的に未使用なので0を入れる。HDReverb(id105)だけRVLを入れる。
      RV7px="<Prm7>0</Prm7>";      //基本パターン
      if(RVU==105)RV7px="<Prm7>"+RVL+"</Prm7>";      //HDReverbの場合
      px=px+RV7px;
      //REVERBセクション終了。Module5を閉じる。
      px=px+"</Module5>";


行数はそこそこあるけど、やってることはDELAYのときと同じか少し簡単になってるだけだから問題ないよne コメント
で全部説明してあるとおりだyo(優秀な受講者笑)

次にNRの改造部分を掲載するよ。

      //NRセクション
      NRU=edu.NRsel.value;if(NRU==888)NRU=Math.floor(Math.random()*3)+27;
      NRT=edu.Thrsh.value;if(NRT==999)NRT=Math.floor(Math.random()*db(NRU,23));
      NRL=edu.lev1.value;

ユニット選択で「any of NR」(888)が選ばれているときは、対象ユニットのID番号(27,28,29)の中から番号をランダム
に選ぶようにしているだけだよ。続いて書き出し部分のプログラムを見るよ。

      px="<Module0><Prm0>1</Prm0><Prm1>"+NRU+"</Prm1><Prm2>"+NRT+"</Prm2>";
      NR3px="<Prm3>"+NRL+"</Prm3>";            //基本パターン
      if(NRU==27)NR3px="<Prm3>0</Prm3>";    //ZNRの場合
      px=px+NR3px;
      if(NRU==27)px=px+"<Prm4>"+NRL+"</Prm4>";    //ZNRの場合のみ追加
      px=px+"</Module0>";

NRセクションはModule0だね。先頭からPrm2までは全ユニット共通だよ。Prm3は基本的にLevelが入るんだけど、ZNR
の場合はDETCTというパラメータだよ。こいつは「GtrIn」か「EfxIn」かを選ぶようになってるんだけど、ボクはほぼ必ず
「GtrIn」を選んでいるよ。ギターから入ってくる信号を先頭部分でノイズカットしてやることで、歪みやアンプでノイズを
増幅させない効果があるからね。ここでは固定的に「GtrIn」を選択するようにプログラムしてるyo Prm4はZNR以外は
もう使ってないので何も書き込む必要はないよ。書き込まなかったPrmは勝手に0と認識される仕様になっているyo

これで完成予想図の機能は達成したけど、デフォルト設定でパッチグループを作ってみると、コーラスもディレイもリバ
ーブもワンワンかかっちゃう感じでちょっと過剰な感じがするne(苦笑) そこでコーラスとリバーブのデフォルトのMixを
ちょっと下げてみたyo(微笑) デフォルト設定でどんな感じのデキになるかでプログラムに対する印象が大きく変わっ
てしまうので、こういう調整は重要だと思うよne(含み笑) ついでなので次回はエクスプレッションペダルの指定機能
を増設するよ。

先頭へ1つ前へ次へ