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

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

#72: 継承関係で質問
Date: 2001/02/11 06:52:40 Sun Author: GOO・豪 (tnet0077)
Parent Article: #70: 継承関係で質問
Child Article: #73: 継承関係で質問

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

なんで getSequencer(指定のデバイス) といった指定の仕方が
用意されていないのかが納得いかないところですが、
もしかしたら Sequencer ってのはデバイス情報だけでなく
tos さんが言うようにつなぎ方などもできあがっていないと
いけないためにそれがよく分かっているデフォルトデバイスに
限ってこういうわかりやすいインターフェイスを用意している
のかなぁとか考えたりもします。

とにかく、tos さんはそっちの方向が正しいのではないかと
あの説明からは読みとったわけですね。私もそっちしか残っていないと
思うのでその方向で考えてみようと思います。

> よって、シーケンサのトランスミッタと、(MIDI音源)デバイスのレシーバを
> 接続することによって、音が鳴るようになるのではないでしょうか?

そのシーケンサってのはシーケンスをセット(Sequencer.setSequence(Sequence))
してデバイス情報を持たない状態で再生するだけのデバイスとして
扱う形でしょうか。

ところで、今までデフォルトの JAVA Sound Sequencer が
死んでいて気づかなかったんですが、これに限っては例外違反が起きませんね。
MidiDevice で渡されるけどインスタンスは Sequencer なんでしょうかね。
このために例の見つけたコードでも (Sequencer)MidiDevice というキャストを
やっていたのかもしれません。JAVA Sound Sequencer が
Synthesizer でもあるというあたりがポイントでしょうか。
これは説明にも書いてありますが MidiDevice instanceof Synthesizer
で調べられるらしいのでとりあえず表示できるようにしてみますね。
Synthesizer でない MidiDevice の場合は tos さんの言うような
つなぎ合わせで実現する、と。

ちょっとあそこの説明ではわかりにくかったですが
とりあえずシーケンスの再生スケジューリングはシーケンサしか
やってくれないようなので、とりあえず試してみます。
GOO
E-Mail: goo_n@hotmail.com

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

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

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

T-Net ■ メインページ