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

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

プチコンのプ今年の第一弾は、下画面で鍵盤楽器を作ります。というわけでざっくりと白鍵を表示。http://t.co/ucO3snve http://t.co/nleoXEOk まだ突いても音は出ません、念のため^^; #petitcom #p4petitcom

2013-01-07 00:13:26
拡大
リンク TwitPic A photo from @fusuian
ASA @fusuian

音を出すメインループ。15行がミソで、タッチ地点のX座標を16で割って白鍵の番号を割り出し、それがドレミファソラシ(CDEFGAB)のどれにあたるかを、7で割った余りで求めます。#p4petitcom http://t.co/xwPmEXce

2013-01-07 00:26:12
拡大
ASA @fusuian

しかしまあいろいろ雑ですね。タッチしてる間鍵盤連打してるし、ドレミファソラシと順番に叩いても次のドで最初に戻っちゃう^^; #p4petitcom

2013-01-07 00:30:08
ASA @fusuian

オクターブに対応するため、13行の'オトと21行の間を差し替えます。Kは白鍵の番号、Oはオクターブ(3以上)。#p4petitcom http://t.co/AA7nuU6q

2013-01-07 00:43:14
拡大
ASA @fusuian

連打対策は、2行追加するだけ。23行でタッチ状態を変数PTCHSTに保存して、12行でこれが1だったら=前のフレームでタッチしていたら音を出しません。原因と結果が逆転してるからわかりにくいかな? #p4petitcom http://t.co/XKluN7ya

2013-01-07 00:55:32
拡大
ASA @fusuian

これできらきら星くらいは弾けます。でも、鍵盤をタッチしたままずらしても音がしない…(´・_・`) これはさびしいから何とかしたいな。つづく #p4petitcom

2013-01-07 01:01:20

タッチ調整

ASA @fusuian

前回追加した12・26行は削除して、20〜24行を修正追加。前に出た音をPP$に記録して、音がかぶったらBGMPLAYをスキップします。これでタッチペンをスライドしてダララララッと鳴らせます。 #p4petitcom http://t.co/Eu7RqNXv

2013-01-07 10:54:52
拡大
ASA @fusuian

でも今度はきらきら星が弾けない問題が! ドドソソララソ、と同じ音が続くとハネられます。そりゃそうだ、そうプログラムしたもの/ _ ; #p4petitcom

2013-01-07 10:57:58
ASA @fusuian

この対策は簡単で、11行のTHENのあとでPP$をクリアします。つまり、タッチペンを離したら同じ音を出せるようにするわけです。 #p4petitcom http://t.co/I3SIHxS0

2013-01-07 11:03:41
拡大

黒鍵で半音

ASA @fusuian

やっぱり白鍵だけでは楽器にならないので、黒鍵を組み込みます。まずは表示。 #p4petitcom http://t.co/WsBrTUyI

2013-01-07 21:18:56
拡大
ASA @fusuian

黒鍵判定。タッチした点が黒なら、X座標から4を引いて白鍵と対応させます。で、鳴らす音程に#を足す。 #p4petitcom http://t.co/WBHWSgzc

2013-01-07 21:34:14
拡大

楽器音パネル

ASA @fusuian

プチコンmkⅡでは128種類の楽器音を演奏できます。そこで、楽器音パネルを作りましょう。まず0〜127の色でモザイク状のパターンを描き込みます。 #p4petitcom http://t.co/6zok0xcY

2013-01-08 00:57:38
拡大
ASA @fusuian

モザイクのエリアがタッチされたら、GSPOITで拾った色を楽器音としてセットします。 #p4petitcom http://t.co/pkK6bVFe

2013-01-08 01:01:00
拡大
ASA @fusuian

楽器音として設定したG$を、P$にセットすればできあがり。 #p4petitcom http://t.co/HesKEr6K

2013-01-08 01:02:12
拡大
ASA @fusuian

こんな画面になります。何番が何の楽器にあたるかは、マニュアル参照^^; #p4petitcom http://t.co/gddzXi20

2013-01-08 01:03:31
拡大

音を伸ばすには

ASA @fusuian

音を伸ばす改良をします。音の長さとして1、つまり全音符を指定してやります。 #p4petitcom http://t.co/6HliFiOC

2013-01-10 09:13:25
拡大
ASA @fusuian

すると今度、タッチペンを離しても音が鳴り続けるので、音を消す処理を入れます。THENのあとがだんだん長くなってきたので、タッチしたら音出しへジャンプ、タッチされてなければ音消しを実行とします。 #p4petitcom http://t.co/L10osv7p

2013-01-10 09:18:32
拡大

鍵盤の位置調整

ASA @fusuian

鍵盤の配置を調整します。変数Mに数字を設定した分、黒鍵の描画位置が変化。変数Mは後でも使います。 http://t.co/FQGnk29w

2013-01-10 19:39:03
拡大
ASA @fusuian

さっきの変数M+1をここで変数Kに足して、調整完了。 #p4petitcom http://t.co/tuGeFaVC

2013-01-10 19:42:12
拡大