MIDI信号の入出力には Domino というMIDIシーケンサーソフトを使い、音源にはVirturalMIDISynth というソフトを使っている。いずれもフリーソフトである。
今迄動いていたのに急に音が出なくなるのには何らかの原因があるはず。心当たりは、Windows10 の無駄なサービスを無効にした事位か。あれこれ調べたり弄ったりしても分からず。そう言えば、最近はブラウザDTMというものもあった。これはソフトを入れずとも、とあるサイトにアクセスするだけで使える代物。MIDIキーボードだって弾ける。
幾つかのサイトでやってみるとちゃんと音が出る。MIDIキーボードとそのドライバーはOK。しかし、Domino からは VirturalMIDISynth が開けないとのエラーメッセージが。
そして、また調べる内に、VirturalMIDISynth の音が出なくなった時には再インストールする、との情報が見つかった。もう一度、インストールプログラムを動かすと Domino のエラーメッセージは消えた。これには思い当たる節がある。
システム管理のツールを集めておく
つまり、ソフトのインストールプログラムで書き換えたレジストリの値を Windows が勝手にシステム更新した時に元の値に戻したらしい。以前、Windows のアップデートの後で、英語キーボード用のレジストリの設定が勝手に元の値に戻っていた事がある。これからも同じ様な事があるだろう。それに備えて、システム管理というフォルダを作って、そこに設定ファイルやインストールプログラムを集めておいて、すぐに復旧出来るようにした。
PCキーボードの発見
これで、解決かと思ったら、やはり音が出ない。しかし、Domino を弄っていてPCキーボードというものを発見した。これはパソコンのキーを鍵盤に見立ててMIDIデータを入力する為のもの。リアルタイム録音というボタンを押すと出現した。これを使えばパソコンだけでピアノ演奏も可能。ちゃんと音が出て、VirturalMIDISynth の方は解決した。
わざわざMIDIキーボードを繋がなくても良いのだから手軽でいい。複数のキーを同時に押して和音も弾けるし、キーの割当もカスタマイズ出来る。
それで、割り当てて見たら、惜しい事に R のキーの音が出ない。R は録音開始に割当てられていて変更は出来ないようだった。
こうして遊んでいる内にMIDIキーボードのデータが何故 Domino に入力されないのか、原因が判明した。Domino はMIDIの1chのデータのみを受ける仕様になっているとの記述をネットで発見したのだ。そういえば、音を出すべく色々弄っていてMIDIキーボードのチャンネルセレクタのダイヤルを回したのだった。
これで、無事にMIDIキーボードを演奏してピアノの音が出るようになった。
簡易ピアノソフトを使う
処で、Domino の PCキーボード には問題があったけど、MIDIキーボードを引っ張り出さなくても手軽にピアノを楽しめるのは素晴らしい。そのようなソフトはきっと他にもあるに違いないと思ってネットで検索すると、案の定、色々出てきた。
その中でも一番気に入ったのが TinyPiano というフリーソフト。左右のShiftキーも鍵盤のキーに割り当てて音を出せるのが素晴らしい。その他、Tab と Backspace キーも鍵盤のキーに利用。音域は3オクターブ半もある。
C の音を C のキーに割り当てるのはこの手のソフトのお約束みたいである。画面がシンプルなのは良いが、シンプル過ぎてどう使って良いのか分かり難い。そこで、作者さんには悪いがオリジナルの表示を弄らせて貰う事にした。それで、ヘルプ画面をどうやって出せば良いのかを示す。
そして、これが弄ったプログラム。タイトル行の TinyPiano 以下を書き換えて見た。プログラムはバイナリファイルだが、xedit というフリーのバイナリエディタを使って文字の部分だけを書き換える。一文字は16進数の2桁の数字で表されるから、書き換えたい文字のある部分を捜して、新しい文字をアスキーコードを16進数にして数字を入れ替えて行く。
アスキーコード表はネットでも簡単に見つかる。例えば、Space は0x20、F は0x46、: は0x3a といった具合である。因みに、0x は16進数であることを示すプリフィックスになる。
文字の入れ替えなら何も問題無いけど、この文字を減らしたり増やしたりしたら何が起きるか分からない。例えば、文字数きっちりしかメモリを確保してなければプログラムが暴走するかもしれない。だから、要らない文字があったらスペースに変えておくだけにする。
C の音を C のキーに割り当てるのはこの手のソフトのお約束みたいである。画面がシンプルなのは良いが、シンプル過ぎてどう使って良いのか分かり難い。そこで、作者さんには悪いがオリジナルの表示を弄らせて貰う事にした。それで、ヘルプ画面をどうやって出せば良いのかを示す。
そして、これが弄ったプログラム。タイトル行の TinyPiano 以下を書き換えて見た。プログラムはバイナリファイルだが、xedit というフリーのバイナリエディタを使って文字の部分だけを書き換える。一文字は16進数の2桁の数字で表されるから、書き換えたい文字のある部分を捜して、新しい文字をアスキーコードを16進数にして数字を入れ替えて行く。
アスキーコード表はネットでも簡単に見つかる。例えば、Space は0x20、F は0x46、: は0x3a といった具合である。因みに、0x は16進数であることを示すプリフィックスになる。
文字の入れ替えなら何も問題無いけど、この文字を減らしたり増やしたりしたら何が起きるか分からない。例えば、文字数きっちりしかメモリを確保してなければプログラムが暴走するかもしれない。だから、要らない文字があったらスペースに変えておくだけにする。
プログラムと著作権
処で、プログラムは著作権法で保護されている。ソースコードだけでなく、バイナリデータも保護されているので、それを改竄するのは私的使用の場合を除いて違法行為になる。だから、私がこの改竄したプログラムを使うだけなら問題ないが、誰でもダウンロード出来るようにすることは出来ない。
では、このプログラムの画面をブログに載せて大丈夫なのか? という問題が考えられる。慎重に調べた結果、プログラムの画面自体は原則著作権の保護対象外と分かったので載せた。
原則、と書いたのは例外的にプログラム画面自体が「一枚の絵」のような著作物である場合は保護対象になるからである。通常はプログラム画面も単なる製品に過ぎないのだから、保護は無用である。製品に手を加えて(例えばシールでも貼って)著作物の改竄になってしまう、と言うなら大変な事になってしまうから。
やはり限界がある
この TinyPiano は優れたソフトだが、キーを同時に3つ以上押した時に感知されない場合がある。キーの組み合わせによってはそれよりずっと多くのキーを認識してくれるのだが。しかし、これはソフトの問題では無いのだった。この種の他のソフトでも全く同じ問題を持っている。
原因はパソコンキーボードの方にあるのだった。文字を打つ場合、ある瞬間に一つのキーしか押されていない、という前提がある。だから、キーが押されたかどうかを感知するセンサーはキー毎には配置されずに、縦と横のセンサーが受け取る信号の組み合わせでどのキーが押されたかを検出するように設計されている。多数のキーが同時に押されれば検出することが出来なくなる。
やはり本格的な演奏ならMIDIキーボードで、ちょっと音を出したい時にはパソコンキーボードでという使い分けが大事なのだ。