SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」

ツール制作
スポンサーリンク

はじめに

久しぶりにSMFプレイヤーの更新。

といっても前回の段階でSMFの再生の最低限の機能は実装されているので、今回は表示関連を中心にしました。

機能アップの種類

言語設定の追加

まずは、言語の設定。

生まれて初めて、言語の設定を行えるような機能追加をしました。ほら、これからは日本以外にも視野を広げる時代ですからね。

実装としましては、言語の設定は、辞書式にしました。

辞書ファイルはカレントディレクトリにある*.langファイルを自動で検索。また、リソースファイルの*.langを指定して選択できるようにしました。

辞書ファイルの中身は、xmlにしました。といっても、JavaのPropertiesクラスを利用して実装しただけですが。xmlにすると何が嬉しいかというと、辞書ファイルのエンコードを指定できるという点です。Javaは通常Unicodeなので、設定ファイルもUnicodeで書かないといけないですが、XMLでShift_JISと設定すれば、Unicode対応していないテキストエディタでも書き換えたりできます。

あと、ソフトの再起動しなくても、言語が変更されるところがこだわりポイントです。ほら、よく言語の設定をすると、ソフトの再起動が要求されるのとかあるじゃないですか。Timidity++とか。

キーボード機能の追加

次は、以前予告?していたキーボード。

キーボード。といってもチャンネル番号やら、使用している楽器などは表示していません。上からチャンネル1~16と。ポートAしか表示してません。

実装の話になりますが、キーボードの1つ1つが、キーボードクラスになっています。o(≧ω≦;)oしかも、その1つ1つがスレッドを持って描写しているという設計。ほら、キーボード1つのみ利用したいとかそういう場合に再利用できるし。鍵盤の大きさも、横の鍵盤数も自由に設計できるようになってます。出来る限り柔軟に柔軟に。ヾ(。・ω・。)

そういえば、描写の際に白鍵盤を先に描写してから、黒鍵盤を描写しないといけなくて、ちょっと面倒だった。描写用のクラスは、以前作成したゲーム描写用の下地のクラスを利用しているので結構高速動作。鍵盤の画像コピーも自前処理してます。もっと高速にするには、やっぱり白鍵盤3種類作って、押した時と離した時のみ描写しないといけないかな。

なお、このキーボードは全体を1回1回、目標fps10で描写しなおしてます^^;鍵盤は以外にfpsゆっくりでも気にならないものですね。

おわりに

以前のブログへ SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」

完成したJava製のSMFプレイヤーのダウンロード

コメント

  1. […] 以前のブログへ SMFプレイヤーをつくろう!リベンジ「完成した」 続く… SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」 […]

  2. […] 以前のブログへ SMFプレイヤーをつくろう!リベンジ「完成した」 続く… SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」 […]

タイトルとURLをコピーしました