関数を記述することで、サクラの機能を拡張することが出来ます。
ただし、ここで重要なのは、関数が分からなければ、曲作りが出来ないかと言えば、そんなことはありません。
曲作りで同じような処理を何度も書くことがあるとか、なんとか、もっと簡単にコマンドを実行したいとか、計算で音楽を作りたいという方は、関数が使えると、ものすごく作曲が面白くなります!!
みじんこ先生が掲示板に書いてくれた、関数の効用を一部引用してみます。
□投稿者/ みじんこ -(2002/09/26(Thu) 02:08:02)
例えば音にエンベロープ(音量がじわじわ上がったり下がったりする効果)をつけたい時は
EP.W(127,90,!16) |
などとすると音を鳴らすたびに16分の長さで少し音量が小さくなってくれたりします。
これは「音符の始まりあたりを加工する方法」ですが、同じ方法では「音符の終わりあたり」つまり余韻を操作する事ができません。
笛とかストリングスを音符毎になめらかに小さくしたい…と思っても気合でEP.Tしなくてはならなくなってしまい、うーん、それでは面倒くさいなぁ、困ったなぁ、という時関数が使えると、
//---------------------------------- //---関数定義部分 Function RRS(Len){ Int Now_Vol=MML(y7) // 現在のボリュームを保存 If(Len==0){Len=!32} // 数値省略なら32分音符長で r-%(Len) V.T(MML(y7),40,Len) r%(Len) V(Now_Vol) // ボリュームをコマンド前の状態に } //---------------------------------- //---関数利用例 // カッコにはフェードアウトの長さを入れてね q99 V(100) EP(127) c4d4e4 RRS(!8) f4g4 |
このようにe4に余韻をつける…というような事が可能になります。
元々SAKURAはかなり便利なのですが、もっと細かい事をやりたい時にはこのように自分でオリジナルのコマンドを作ってしまった方が早かったりするわけです。
文字列マクロは単に置き換えるだけなので、IFなどを使えばそれなりには複雑な動きもしてくれますけど、やっぱり限界があります。
勿論簡単な機能だったら文字列マクロの方が楽な場合もありますから、そちらを選んでもかまいません。変数や引数を複雑にいじりたい場合は関数で、簡単でいいなら文字列マクロで、という具合に使い分けるといいんじゃないかと思います。
一番お手本となる関数のサンプルは、サクラの、"Include"フォルダに入ってる、拡張子が".h"のファイルです。これは、作者とサクラの有志により作られたたくさんの関数が分野ごとに定義ファイルとしてまとめられています。参考にどうぞ。