computer.program - プログラミングのお話

FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)

#79: MidiPlayer
Date: 2001/02/12 18:57:40 Mon Author: GOO・豪 (tnet0077)
Parent Article: #78: 継承関係で質問
Child Article: #83: MidiPlayer

> まず始めに、もしこの話題がもっと続くなら(プレイヤの制作を続けるなら)、
> 新しいサブボードを作りませんか?
> GOOさんの作るプレイヤ専用のサブボードを、です。

とりあえずここで一段落ですので、今は必要ないでしょう。
次に続けるときはそうしますね。

> プレイボタンを押してから音が鳴り始めるまで(プレイボタンが再びアクティブ
> になるまで)の間、シーケンサが MIDIデータを読み込んでいるのでしょうか?
> その時間がまず気になりました。

それは MIDI データ自体のブランクじゃないですか?
読み込み自体はアドレスを指定したときに行って、総時間とか TimeBase を
分析までできる状態で Sequence というクラスに収まっているので。
再生するときにはやっていないはずです。

> そして、 amazing02.mid を演奏させたときには気にならなかったのですが、
> bt4i.mid を演奏させると、音がもたりますね。

気になるテンポのデータじゃなかったってことですね。

> デフォルトのシーケンサでこうなるなら、どんなシーケンサを作っても
> これ以上良くならないのではないでしょうか?

> 何か、シーケンサから出力デバイスへのデータの流し方がまずいのでは
> ないでしょうか?

確かに向上する余地がないのではってのが心配ですけどね(^^;
いや、実はすでにサンプルプログラムがあって、
それでこんな状態だったから、最低限の状態で
どの程度のパフォーマンスを稼げるかということを
試したかったんです。ちょっといろんな事をやっているサンプルだったので。
こっちの方もちょっとアップロードしてみますね。
http://www.geocities.co.jp/SiliconValley-SanJose/4825/test/

> それから、MIDIデバイスのどれを選んでも、同じ(ウチではサウンドカード
> のMIDI音源)になってしまいます。

うちでも確認しました。バグ出しして直そうと思います。

> シーケンサのレシーバは、パソコン外部からの MIDIデータをレコーディング
> するためにあるのだと思いますが、違いますか?

> 「デフォルトのシーケンサ」と「デフォルトのシンセサイザ」は別の
> ものだと思います。シーケンサの中に音を発音する機能はないはずです。

やっと分かってきました。シーケンサのレコーディングのところにも
そのように書いてありました。getSequencer で Sequencer を手に入れて
なにも接続せずに sequencer.start() していたので、てっきり
内部にシンセサイザーを持っているものと勘違いしていましたが、
これでは録音するためのポートが無く、つじつまが合いませんね。
確認はしていませんが、おそらく初期状態では
Java sound Synthesizer の Receiver が Sequencer の
Transmitter にセットされているんでしょう。

> 一方、「デフォルトのデバイス」が具体的に何を指しているのかは
> 分かりません。もしかすると、「デフォルトのデバイス」は入力用
> として用意されたデバイスなのかも?

どうなんでしょうね。サンプルの方では最初に VM のシンセサイザが
なったり、突然外部音源が鳴り出したり、安定しません。

私が選んでいたデフォルトのデバイスは、最初に勘違いしていたときに、
Sequencer.getDeviceInfo() (MidiDevice クラスから継承したメソッド)
で、デバイス情報を手に入れ、それと列挙されたデバイス情報と比較して
決めていました。だから特に意味のあるものではないです。

> だとすると、シーケンサの出力に繋ぐべきなのは、実は「デフォルトの
> デバイス」でなく「デフォルトのシンセサイザ」の方だったのかも
> 知れません。これで、音のももたりが解決するかも。

Synthesizer extends MidiDevice で、結局は MidiDevice として
扱うことになりますし、その違いは JavaVM 内で音声合成までを行う
デバイスであるというだけなので、つなぐ対象が MidiDevice であることには
違いないと思います。用意されるメソッドもソフトシンセ用のものばかりですし。
GOO
E-Mail: goo_n@hotmail.com

■ この記事のコメントを書く

■ この書き込みを削除/復活します(投稿者のみ可)
■ この書き込み近辺の一覧表示へ

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

T-Net ■ メインページ