このブログの内容が難しい方へ

もし、内容が難しくて理解出来ない場合には、Cプログラミング入門以前などのプログラミングを始める前に知っておくと良い事が書いてある本を読んでから、その後にやさしいC 第3版 [やさしいシリーズ]などのC言語というプログラミング言語の入門書を読むことをお勧めします。また、MIDIの知識がない人は、コンプリートMIDIブックなどがお勧めです。そこまで理解できれば、KSP特有の作法は、このブログを参考にすれば大丈夫だと思います。

2011年8月28日日曜日

ポリフォニック変数

ポリフォニック変数は、少し分かりにく変数ですが、先に仕組みを覚えてしまいましょう。早速ですが、以下のコードを見てください。


on init
	declare $Poly
	$Poly := 0
end on

on note
	$Poly := $Poly + 1
	message($Poly)
end on

on release
	$Poly := $Poly - 1
	message($Poly)
end on


init callbackで、int型の変数Polyを宣言して、0を代入しています。note callbackにて、変数Polyに+1を加算し、その値をKontaktのステータスライン(Kontaktのウィンドウの左下の部分)に表示します。release callbackでは、変数Polyから1を減算して、同じようにその値をKontaktのステータスラインに表示します。

動作としては、1つ鍵盤を押せば、ステータスラインに1が表示され、鍵盤を離すと、ステータスラインに0が表示されます。2つ同時に鍵盤を押せば2が表示され、3つ同時に鍵盤を押せば3が表示されます。つまり、変数Polyは、お互いのイベントの中で共有されて使われているわけです。

では、次に今回のテーマである、ポリフォニック変数を使ってみましょう。ポリフォニック変数は、変数の宣言時に、polyphonicと付け足すだけで使うことが出来ます。ポリフォニック変数Polyを宣言したい時には、declare polyphonic $Polyと記述します。

では、以下のコードを見てください。


on init
	declare polyphonic $Poly
	$Poly := 0
end on

on note
	$Poly := $Poly + 1
	message($Poly)
end on

on release
	$Poly := $Poly - 1
	message($Poly)
end on


先ほどのコードとほとんど同じですが、変数がポリフォニック変数になっています。この場合、鍵盤を同時に2つ押しても、ステータスラインには1が表示されます。3つ押しても4つ押しても同じです。

なぜでしょうか?

ポリフォニック変数とは、実際にはイベントごとに個別の変数が用意されるからです。

イベントごとに変数を用意したい時に、通常の変数で対処しようとすると、とても面倒なプログラムを書かないといけませんが、ポリフォニック変数を使うことで、簡単に記述することが出来ます。ただし、通常の変数と比較して、多くのメモリを使用することになるので、注意が必要とされています。

実際に、どちらのタイプの変数を使うかは、目的によって変わってきますが、「こういう変わった変数があるんだな」くらいに記憶に留めておけば、まずは大丈夫です。

では、次回も他のタイプの変数の勉強をしていきましょう:-)

0 件のコメント:

コメントを投稿