キーボードを鍵盤にして音を鳴らす

説明

キーを押すと対応する音が鳴ります。

鍵盤と同じような音階にしておけばキーボードが鍵盤代わりになります。なお、このプログラムでは半音(黒鍵)は対応していません。黒鍵に対応するにはそれぞれの配列にキーと音階を追加してください。配列にキー名と音階を対応づけるだけなので手軽に大文字にも対応させることができます。

Studioで試す

以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。

Studio で開く

プログラム

// キーボードを鍵盤にして音を鳴らす
cls

k@=["z","x","c","v","b","n","m",","]
s@=["c16","d16","e16","f16","g16","a16","b16",">c16<"]

call keys k@

do
  key$=inkey$()
  for i=0 to 7
    if key$=k@[i] then
      play s@[i]
    end if
  next
loop

procedure keys k@
  print "各キーを押すことで音が鳴ります"
  for x=0 to 7
    box (x*60+70,250)-(x*60+60+70,399),1,7
    write (x*60+90,300),k@[x],1,0
  next
end procedure

解説

2行目で画面を消去しています。

4行目で鍵盤として使うキーを配列に設定しています。

5行目で鍵盤に対応する音階を設定しています。ここでの順番は3行目で設定したキーと対応させておく必要があります。

7行目で keys プロシージャを呼び出しています。keys プロシージャでは、鍵盤と対応するキーの文字をグラフィック画面に描画しています。

9行目で無限に繰り返すようにしています。

10行目でキーの入力を行います。

11行目でキーの数だけ繰り返します。これは入力されたキーが配列要素にあるか調べるためです。

12〜14行目で入力されたキーが配列内にあれば対応する音を鳴らします。ここでのポイントはforで使われている繰り返し変数iです。配列k$とs$を対応させておく、つまり押されたキーと音階を順番に対応させてあるので、変数iの値を参照するだけで簡単にキーに対応する音を鳴らすことができます。