久しぶりにSMFプレイヤーの更新。
といっても前回の段階でSMFの再生の最低限の機能は実装されているので、
今回は表示関連を中心に。

まずは、言語の設定。

生まれて初めて、言語の設定を行えるような機能追加をしました。(=o・ω・o)
ほら、これからは日本以外にも視野を広げる時代ですから。はい。
実装としましては、言語の設定は、辞書式にしました。
辞書ファイルはカレントディレクトリにある*.langファイルを自動で検索。
また、リソースファイルの*.langを指定して選択できるように。
辞書ファイルの中身は、xmlです。といっても、JavaのPropertiesクラスを利用して実装しただけですが。
xmlにすると何が嬉しいかというと、辞書ファイルのエンコードを指定できるという点です。
Javaは通常Unicodeなので、設定ファイルもUnicodeで書かないといけないですが、
XMLでShift_JISと設定すれば、Unicode対応していないテキストエディタでも書き換えたりできますし。
ソフトの再起動しなくても、言語が変更されるところがこだわりポイント(*^U^*)
ほら、よく言語の設定をすると、ソフトの再起動が要求されるのとかあるじゃないですか。Timidity++とか。

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

キーボード。といってもチャンネル番号やら、使用している楽器などは表示していません。
上からチャンネル1~16と。ポートAしか表示してません。
キーボードの1つ1つが、キーボードクラスになっています。o(≧ω≦;)o
しかも、その1つ1つがスレッドを持って描写しているという設計。
ほら、キーボード1つのみ利用したいとかそういう場合に再利用できるし。
鍵盤の大きさも、横の鍵盤数も自由に設計できるようになってます。
出来る限り柔軟に柔軟に。ヾ(。・ω・。)
そういえば、描写の際に白鍵盤を先に描写してから、黒鍵盤を描写しないといけなくて、ちょっと面倒だった。
描写用のクラスは、以前作成したゲーム描写用の下地のクラスを利用しているので結構高速動作。
鍵盤の画像コピーも自前処理してます。
もっと高速にするには、やっぱり白鍵盤3種類作って、押した時と離した時のみ描写しないといけないかな。
ちなみに、このキーボードは全体を1回1回、目標fps10で描写しなおしてます^^;
鍵盤は以外にfpsゆっくりでも気にならないものですね。

後いい加減に、ホームページからダウンロードできるように設定。

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

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

関連記事

  • 音の高さの表示ソフトdrawwaveの開発 part1音の高さの表示ソフトdrawwaveの開発 part1 音の高さを調べるソフトといえば、「おんかいくん」などが上げられますが、 今日はJavaで製作された「drawwave」というソフトを紹介します。(*^U^*) 何をするソフトかというと、リアルタイム(実時間)で音声を目で見るソフトです。 音声の波形を描く ということで draw wave […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」 追加した機能 ・Sequencerのインターフェースにメソッド名を似させる。 入れ替えとか、いつかクラスを公開時に役立ちそう。 ・Sequencerにあった、ティック単位の位置調節の追加 内部では、ms単位で処理しているので、ティックから時間に変更するようなメソッドを追加で。 ・メイタベント0x59の調情報取得 この調の情報。最初はノートオン時に反映させると思ってた […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「拍子とタイムベース」SMFプレイヤーをつくろう!リベンジ「拍子とタイムベース」 今回は、現在再生中のSMFが、何分の何拍子のときに、何泊目を演奏しているか。 そういう情報を表示させる時の計算方法のメモです。 これらを計算するためには次のような情報を知る必要があります。 ・d 分の n 拍子の1拍は、デルタタイムでいうといくつになるか。 ・d 分の n […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「セットテンポと分解能」SMFプレイヤーをつくろう!リベンジ「セットテンポと分解能」 以前(2007/4/30)、HSPでMCI(Media Control Interface)を利用せずに SMF(スタンダードMIDIファイル .mid)を再生するためのモジュールを作ってSMFプレーヤーを作りました。(ここ) しかし実はこれには色々と問題が山積みになっていたりする。 1. なんかメタイベント,SysExイベントが正常に送れていないっぽい? 2. […] Posted in ツール制作
  • ビューア開発 – バイラテラルフィルタ追加しましたビューア開発 – バイラテラルフィルタ追加しました 前々から追加追加しようと思って、初めて作ってみた。 日本語の資料がtpotさんのバイラテラルフィルタしかなくて、勉強するのが大変でした。 海外のサイトはもっとよくわかんない謎の式だらけ。 要約すると、バイラテラルフィルタってのは、注目画素の輝度と、フィルタ処理する時の近傍画素の輝度の差(距離)を マイナスの係数をかけて、指数関数の中れたもの を A […] Posted in ツール制作
  • ビューア開発 – Javaで2D画像処理ビューア開発 – Javaで2D画像処理 4ヶ月間かけてのんびり勉強したJavaで、画像処理系ツール作ってます。 アルファ値対応で、対応形式はJavaTM Image […] Posted in ツール制作