藤川帳

Studio F#の音楽とか吉里吉里とか担当の藤川ヒロヒコのブログ。
<< December 2004 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
Studio F# on Youtube
ARCHIVES
みんなのブログポータル JUGEM
SPONSORED LINKS
 
スポンサーサイト

一定期間更新がないため広告を表示しています

- | | - | - | pookmark
Ravel
今日はちょっと音楽の話題。というか、雑談を。

藤川の音楽的ルーツはヤマハ音楽教室だったりするわけですが、これは鍵盤楽器を演奏できるとか、音が音名で聞こえるといった意味でのルーツで、作曲とか編曲とかになるとまた別の話になります。おそらく中学以降に聞き始めた様々な楽曲に影響を受けまくっているんだろうなぁと自分でも思っています。

影響を受けるくらいだから当然その作曲家はとても好きなことが多いのですが、なかでもラヴェルは飛び抜けて好きです。ボレロが名曲中の名曲であるのは言うまでもありませんが、それよりも和音のセンスがたまりません。譜面だけを見ると不協和音にしか見えないのに、見事に調和している分散和音の妙。オーケストラだとちょっとわかりにくいかもしれませんが、ピアノ曲だと覿面にわかります。嗚呼、C maj 9!

『砂』はSFなのでどちらかというとテクノ系の音楽が多くなると思うのですが、あのシーンとかこのシーンとかでは、是非ともピアノとか木管のアンサンブルとかを流したいなぁと考えてます。ピアノ曲でちょっと不思議な響きの和音に出会ったら、それは間違いなくラヴェルの影響です。
無名関数

ADVモードを組み始めている藤川です。最近寒いですね。なんか台風とか来てますが。大丈夫か日本。

さて、ADVモードではいろいろと変数を操作したり、変数をもとに何かを生成したりという作業が必要になります。ここで活躍するのがKAGサブルーチンなんですが、KAGサブルーチンで書くと見通しが悪くなるといいますか、つまるところ面倒な場合、藤川はTJSで関数を用意してそれとKAGサブルーチンを組み合わせて記述します。TJSはプログラミング言語そのものですから、こういう用途には大変向いてますし、表示部分はKAGに任せるとラクできて幸せになれます。

より幸せになりたい藤川は、関数を定義するときにそれを辞書配列の要素として記述しています。つまり、次のような無名関数にするわけです。

var se = %[];
se.cancel = function(buf=0)
{
    kag.se[buf].play(%[
        storage : "cancel",
        loop : false
    ]);
} incontextof kag;
この関数は、例えばキャンセルボタンのexp属性に仕込んで「exp="se.cancel()"」のように使います。引数に効果音バッファをとるが省略した場合は0番をデフォルトで使う、という記述になっています。

このように辞書配列の要素として無名関数を記述しておくと何がうれしいのかというと、辞書配列の識別子にさえ気を使えば、関数名(というか要素名)は事実上どんな名前でも許されるというところが素敵なんですね。例えばレベルアップ時の効果音とBGMをそれぞれTJS関数経由で鳴らしたい場合に(そんなことをする人がいるのかどうかはともかく)、se.levelup()とbgm.levelup()を呼ぶようにしておけば、とてもすっきりしたコードになります。

ちなみに最後のincontextof kagというのは、まあおまじないみたいなもんです。乱暴に要約すると「これはある辞書配列の要素のひとつである無名関数だけど、実行時にはKAG Systemの関数として扱うよ」っていう感じ。

クラスにまとめるまでもないけどTJS関数にしておきたいものがあるときは、藤川はこんな感じで好き勝手に関数を書き散らかしています。