馬鹿な時間の使い方

今日も家でプログラム分を補充。
そんなワシが作ったのは
「キーボードを押すたびにドレミの音階を付けて音を鳴らす」
ってもの。


・・・何言ってんだコイツ?


って思われてるんだろうな〜(笑


やりかたはキーボードをフックしてキーが押された/離されたを監視し、
押されたキーに従ってMIDIを使って音を出すというもの。
単純でしょ?


MIDIで音を出すには、
初期化時:
 midiOutOpen関数:デバイスのオープン
音を出すとき:
 midiOutShortMsg関数:音を出す
終了時:
 midiOutReset関数:音のリリース(開放)
 midiOutClose関数:デバイスのクローズ
を使う。


音を出すとき、音階を数値で指定するのだが、
中央のドが 0x3C で、中央のド#が 0x3Dで指定。
で、キーフックで取得したキーの仮想キーコード(詳しくはグーグル先生に聞いてみよう!!)
で音階を指定するのだ。
残念なことに仮想キーコードでは0x3A 〜 0x40は「未定義」になっているため、
「ド」の音は出ない事になる。


完成したものを動かしつつこのブログを書いているのだが。
いや〜。
音楽にならんね(笑
なんか無秩序の音が垂れ流しになっている感じ。
これがワシのキー入力のリズムなのかな。


このプログラムを作成したくなったきっかけは、
仕事中他人のキー入力中のキーを叩く音を聞いてたとき。
これに音階付けたら面白いかな?
って思ったのだ。
で、作ってみたらこのザマ(笑笑
入力がローマ字入力だから母音がたくさん出るし、
改行のたびにEnterで同じ音が出るし。
とてもじゃないが音楽にはならないな。


でもまぁワシは満足だ。
プログラムを作るのに大切なのは「そうぞうりょく」だとワシは思う。
「こんなプログラムあったら面白いかな?」「こんなのあれば楽になるのに・・・」
っていう「想像」をする力。
それをプログラムという「形」に作り上げる「創造」する力。
この二つが大切だと思う。
そういう意味だと今回このプログラムを作ったのは「想像」が「創造」に結びついた、
ワシ的にはとっても満足な結果なのだ。

今は仮想キーコードで音を出しているが、
よく使う母音やEnter、BSなどに特殊な音を割り振ってみようかな?
ドラムとか。
そうするとまた面白い事になるかもしれないな〜
そのうちまた引っ張り出して、作ってみることにしよう・・・。


これを書いている間、時々「お!?」って思う感じで音が出た。
でもその音は二度と再現できなかった。
・・・面白いな〜