プログラミングのお話 の 79 番の書き込みへコメントを付けます.
ボード:
T-Net - 管理人室
フリートーク - フリートーク MainStream
音楽 - 音楽 MainStream
コンピュータ音楽 - コンピュータ音楽 MainStream
コンピュータ音楽 - MIDI
コンピュータ音楽 - DTM おすすめリンク集
コンピュータ音楽 - 音楽理論・作曲技術
コンピュータ音楽 - 習作 発表会
コンピュータ音楽 - オリジナル音楽 発表会
コンピュータ音楽 - 既存曲の研究
フラクタル・Math Art - フラクタル・Math Art MainStream
フラクタル・Math Art - TFEngine & T-Fract 開発室
コンピュータ - コンピュータ MainStream
コンピュータ - プログラミングのお話
コンピュータ - UNIX
コンピュータ - インターネット
ゲーム - ゲーム MainStream
ゲーム - PlayStation
ゲーム - PlayStation2
ハンドル(名前):
(guest)
Subject:
書き込み:(1行は折り返さないように30文字程度で改行してください。)
>> まず始めに、もしこの話題がもっと続くなら(プレイヤの制作を続けるなら)、 >> 新しいサブボードを作りませんか? >> 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 であることには > 違いないと思います。用意されるメソッドもソフトシンセ用のものばかりですし。
■ メインページ