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

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

#75: 継承関係で質問
Date: 2001/02/11 15:21:34 Sun Author: GOO・豪 (tnet0077)
Parent Article: #70: 継承関係で質問
Child Article: #76: 継承関係で質問

なんか違う方向に走っちゃったきがするので、返事を書き直しです(^^;

> MidiSystem.getSequencer() で得られるのは「デフォルトのシーケンサ」
> だと思うのですが、違うでしょうか?

その通りです。デフォルト以外のデバイスは
MidiDevice.Info[] MidiSystem.getMidiDeviceInfo()
で調べ、
MidiDevice MidiSystem.getMidiDevice(MidiDevice.Info info)
でデバイスを取得と言うことになります。
他のデバイスの Sequencer は手に入れることはできないのです。
ファイルから手に入れた Sequence クラスのデータをセットして
再生するメソッドを持つのは Sequencer だけであるにもかかわらずです。

> そして、シーケンサ は デバイスの一種で、デバイス同士をトランスミッタと
> レシーバを接続することによって、MIDIデータを処理し演奏するんだと
> 思います。
〜
> よって、シーケンサのトランスミッタと、(MIDI音源)デバイスのレシーバを
> 接続することによって、音が鳴るようになるのではないでしょうか?

Sequencer extend MidiDevice なので、デバイスの一種なのは確かです。
そして、MidiDevice はレシーバとトランスミッタを持っていて、
シーケンサがもつトランスミッタを他のデバイスのレシーバに接続させ、
シーケンサを再生スタートさせれば tos さんが言うように他のデバイスが
鳴るはずです。しかし、そもそもシーケンサが手に入らないのです。
特にデフォルトデバイスがうちの環境でよく死ぬので・・・

って、ここまで書いて気づきましたが、最初に選択するデバイスは
デフォルトシーケンサの取得でチェックしています。これ自体が分かると
言うことはシーケンサ自体は手に入れられているわけで、
その中のデバイスは死んでいるということになるのでしょうか。
つまり、シーケンサは再生するためのものであって、
デフォルトデバイスがついているのはおまけのようなものなんでしょうか?
デフォルトではシーケンサが持つレシーバにシーケンサのトランスミッタが
つながっていると。そういうわけでしょうか。

もしそうだったら tos さんの言うとおりで、私は大きな勘違いをしていた
ようです(^^; シーケンサがデバイスであるということに惑わされていたわけですね。
まあ、とにかく試してみます。
GOO
E-Mail: goo_n@hotmail.com

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

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

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

T-Net ■ メインページ