プチコンのプ その8 鍵盤楽器を作ろう

タッチパネルツール第二弾、お絵描きツールの次は楽器ツールを作ります。 お約束として、 1. 行が端からはみ出した分は、次の行にコメントとしてつけ足しています。 2. 追加・変更のある行は最後に '<<< をつけています。 続きを読む
1
ASA @fusuian

鍵盤がA(ラ)から始まっています。 #p4petitcom http://t.co/i5w2MdcA

2013-01-11 00:14:48
拡大
えいだ @eida_s

@fusuian これはすばらしい!作る過程を追ってくと、いろんなことが理解できますね(^^)d

2013-01-10 23:51:03
ASA @fusuian

@eida_s 鍵盤はいじっているだけで楽しいですo(^▽^)o スーマリ風ゲームと交互に、こういう簡単なのやりたいですね。

2013-01-11 01:19:10

ここまでの全リスト

ASA @fusuian

ここまでの全リストを掲載します。 #p4petitcom http://t.co/ySDyvY2B

2013-01-11 00:28:32
拡大

サブルーチンで第二の鍵盤

ここからちょっとレベルが上がります。

ASA @fusuian

さて、下画面の真ん中がガバッと空いているのが気になりますね! ここに第二の鍵盤を追加します。打ち込んだプログラムをセーブしたら、プログラムの頭の鍵盤を描く部分を、サブルーチン化するためにプログラムの後ろに移動します。 #p4petitcom

2013-01-11 00:34:30
ASA @fusuian

同じプログラムを打ち込み直してもいいんですが、ここは楽をしましょう。1,2行めと18行'ガッキ の後をLボタン+Yボタンで一気に消し、SAVE"KEYSUB"として保存します。 #p4petitcom

2013-01-11 00:37:35
ASA @fusuian

削る前にセーブしたプログラムを読み込み直し、そのまま APPEND "KEYSUB"として描画部分をプログラム末尾に追加します。 #p4petitcom

2013-01-11 00:39:10
ASA @fusuian

末尾に追加した分のプログラム を◎KBDというサブルーチンにします。GFILL,GLINEのY座標を、数字から新しくつけたした変数Y1,Y2に直しているのがポイントです。 #p4petitcom

2013-01-11 00:49:03
ASA @fusuian

#p4petitcom ◎KBD(キーボード)サブルーチン。 http://t.co/xUg7gLI1

2013-01-11 07:40:22
拡大
ASA @fusuian

元の描画部分をごっそり削って、◎KBDを呼び出すGOSUB文に置き換えます。変数Yを指定し直しているのがミソ。あと一行め、カーソルが映り込んでますがACLSです。 #p4petitcom http://t.co/YOWa3vjx

2013-01-11 00:51:42
拡大
ASA @fusuian

36行の変数O1は、上の鍵盤をタッチしたときだけ2になります。変数Oに2を足すと、出る音が2オクターブ上がるわけです。 #p4petitcom http://t.co/Ut37Ba9C

2013-01-11 00:59:47
拡大
ASA @fusuian

第二の鍵盤。下の鍵盤もちょっと位置が上がっています。 #p4petitcom http://t.co/oW11UgFV

2013-01-11 01:00:51
拡大
ASA @fusuian

サブルーチンは難しい人も読んでるかと思って今回は使わないつもりだったんですが、つい使ってしまいました。鍵盤を二つ描くために、サブルーチンを2回呼ぶ。便利なのです。 #p4petitcom

2013-01-11 01:08:03

演奏を記録再生してみよう

だんだんレベルが上がってきてますが、打ち込めば動くはずなので、わからなくてもめげないで。
あるときふっとコードの意味が腑に落ちたりすることもあります。

ASA @fusuian

今度は演奏を記録・再生してみます。まず、記録のための配列変数SC$(音階 scaleのsc)とFR(フレーム frameのfr)を設定します。 #p4petitcom http://t.co/Sz2XPDDE

2013-01-13 18:27:56
拡大
ASA @fusuian

変数P4PKBDを使ったIF文は、以前の演奏記録を消さないためですが、ここでは結局1から記録し直すのであまり意味ありません^^; #p4petitcom

2013-01-13 19:00:54
ASA @fusuian

◎MAINをこまめに修正。変数TCHTRGはタッチトリガーの意味で、タッチした瞬間か、離した瞬間だけ1になります。これを使って、タッチするまでの無音時間と、タッチした音階・タッチしていた時間を記録します。 #p4petitcom http://t.co/ezxULKky

2013-01-13 19:01:22
拡大
ASA @fusuian

◎MAINの終わり。フレーム数を数え、TCHTRGのためにTCHSTの値を保存します。 #p4petitcom http://t.co/JlYdCu5x

2013-01-13 19:02:46
拡大
ASA @fusuian

終了ルーチン◎ENDと、音符追加の◎ADDSC(add scale 音階を加える)、と記録したデータを元に演奏をする◎PLAYサブルーチン。タッチ演奏のあとXボタンを押すと、演奏を再現して終了します。 #p4petitcom http://t.co/mizu8OGQ

2013-01-13 19:06:30
拡大

アイコンをつけよう

ASA @fusuian

演奏再生のためにアイコンボタンをつけましょう!(まだ続いてたのか) 消しゴムはいわゆるバックスペース、新しい音から順に消します。ト音記号は再生。ゴミ箱は全演奏データの削除。 #p4petitcom http://t.co/t67ttVJ0

2013-01-26 22:21:02
拡大