『教育用G3Xパッチメイカー』(Step 3 歪みメイカー作成の巻)
先頭へ1つ前へ次へ

 /    (^)  (^) \   

ま、何はともあれ実際に動くものを作りながら話を進めようじゃなイカw
まず最初に歪みユニット1個だけのパッチを作るプログラムでJavaScriptの雰囲気を知ろうw
UNIT (1st) (2nd) (3rd) LEVEL
DRIVE DRIVEsel Gain Tone lev1
Contents of patch group file 

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

【解説】

まずは、すべてのエフェクトが同じパラメータ3つだけでわかりやすい「歪みエフェクト」を選んで簡単な
プログラムを動かしてみよう。BODYタグの中に下のようなJavaScriptのプログラムを書いているよ。
「//」が出たら、そこから行末までは注釈文なのでプログラム本文ではないよ。実質12行だけの本文だねw


<script language="JavaScript">
 function g3xpm(){
   //DRIVEセクションのエフェクトユニット番号を読み込む
   DRU=edu.DRIVEsel.value;
   DRG=edu.Gain.value;   //Gainの値を読み込む
   DRT=edu.Tone.value;   //Toneの値を読み込む
   DRL=edu.lev1.value;   //LEVELの値を読み込む
   //Module0に値を書き込む
   px="<Module0><Prm0>1</Prm0><Prm1>"+DRU+"</Prm1>";
   px=px+"<Prm2>"+DRG+"</Prm2><Prm3>"+DRT+"</Prm3><Prm4>"+DRL+"</Prm4></Module0>";
   //パッチレベルを所定の場所に書き込む(これをしないと音量ゼロになるのでw)
   px=px+"<Module6><Prm0>100</Prm0></Module6>";
   //パッチヘッダーの書き込み
   header="<PatchData><Product>G3X</Product><Name>TestPatch</Name>";
   header=header+"<Tooltip></Tooltip><Keywords></Keywords><Version>1.00</Version>";
   //パッチフッターの書き込み
   footer="</PatchData>";
   //ヘッダー(header)と本体(px)とフッター(footer)を合体
   patch=header+px+footer;
   //テキストエリアに出来上がったパッチを書き込んで完成
   edu.kekka.value=patch;
}
</script>


さっそく上から順に見ていこうか。まず<script>タグで挟まれた部分がJavaScriptが書かれている部分というルール
になってるので、HEAD内でもBODY内でもこのタグで挟めばJavaScriptを書くことができるよ。

次に function g3xpm(){という部分。これは「今からg3xpmという名前の処理を記述します」という目印だよ。一番
最後に } という閉じ括弧があるけど、そこまでがこのg3xpmの処理を書いてるという意味だよ。この処理を発動さ
せるために「MAKE PATCH DATA!」ボタンのタグの中に「onClick="g3xpm()"」という一文を追加しているよ。

ここからがいよいよプログラム処理の中身だよ。まずは、DRUという名前の変数をつくって値を読み込ませるよ。
edu.DRIVEsel.valueという値を読み込ませているんだけど、これは「eduという名前のフォームの中にあるDRIVEsel
という名前のパーツが持っているvalueの値」という意味だよ。フォームは住所みたいなもんだって前回書いたよね。
歪みの種類を選ぶセレクトに「DRIVEsel」という名前を今回つけてるよ。そいつが持ってる各行のデータに、それ
ぞれのエフェクトユニットのID番号を「value=◯◯」として持たせているので、選ばれている行のそのvalue値を
読み込ませてるというわけだよ。

続きも同様。DRGという変数には選ばれたGainの値を、DRTにはToneの値を、DRLにはレベルの値を読み込む。
これで準備は完了したので、次からいよいよパッチにデータを書き込んでいくよ。あっ、各行の最後に「;」がついて
るけど、これは日本語の「。(改行)」みたいなものなので、原則的に各行末に入れるのを忘れないでね。これを
1カ所忘れるだけでプログラムがうんともすんとも動かなくなるからねw(苦笑)

パッチデータをpxという変数にテキストとしてどんどん足し込んでいくよ。変数には20とか1500といった数値が入る
こともあるし、px="こんにちは"というようなテキストデータが入ることもあるよ。テキストが入ってる場合はたとえば
sx="赤ちゃん"だとしたら、fx=px+sx;で、fxには"こんにちは赤ちゃん"という結合したテキストが入るよ。あるいは、
px=px+"◯◯";とすれば、どんどん自身の後ろにテキストを足していくことができるよ。

あと注意してほしいのは、テキストとして扱うものは前後を""で囲うというルールがあるよ。逆に、変数の場合は
たとえばDRUという変数の値を使いたいならDRUと書かなければダメで、"DRU"と書いたら単なるDRUという文字
列になっちゃうので注意が必要だよ。

パッチデータのファイルもタグを使った内部構造を持ってるのでややこしいねw(苦笑) そのあたりは次回解説
するとして、とりあえずここではModule0のPrm0には1を、Prm1にはDRUを、Prm2にはDRGを、Prm3にはDRTを、
Prm4にはDRLを書き込んでModule0は完了し、Module6のPrm0に100を書き込んでpxの書き込みを終了してるよ。

データ本体以外にもパッチファイルにはヘッダーとフッターの部分があるので、それらをheaderとfooterという関数に
読み込ませて、最後にそれらを結合させてpatchという変数をつくってるよ。それを結果表示させるテキストエリアの
value値に代入してやれば、めでたく単体パッチデータが完成というわけだよw まあ、これだけだと何の役にも立た
ないプログラムなんだけど基本の動作は理解してもらえたかな? 実際のパッチメイカーもやってることは原則これ
と同じことで、ただデータの値をいろいろ複雑にしようとこねくり回して計算してるだけなんだよねw(失笑)

ところで、Module0とかPrm1とかどういう意味?っていう疑問が当然わくよねw(妥当笑) それこそがパッチデータ
の構造を理解するキモの部分なので次回は徹底的にそこを解説しようじゃなイカ!
先頭へ1つ前へ次へ