回答編集履歴

2

誤記訂正(波形再生=>波形生成)

2018/07/22 07:17

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  (2) スレッドB
24
24
 
25
- 生きているオシレーター(群)から波形をバッファーへ生成し、その波形を再生するという処理を無限に繰り返すようなものになります。なおjavax.sound.sampled.SourceDataLineによる波形再生は再生している間中writeがブロックするのではなくバッファー内の波形データをOSが制御する再生チャネル用の内部バッファーへ転送するだけなので転送が完了すれば呼び出し元スレッドへリターンしてくれます。つまり音声が再生されている間に次の波形を計算できます(あまり複雑な波形でなければですが)。そのためとりあえずは波形生と再生は一つのスレッドで行っても大丈夫だと思います。
25
+ 生きているオシレーター(群)から波形をバッファーへ生成し、その波形を再生するという処理を無限に繰り返すようなものになります。なおjavax.sound.sampled.SourceDataLineによる波形再生は再生している間中writeがブロックするのではなくバッファー内の波形データをOSが制御する再生チャネル用の内部バッファーへ転送するだけなので転送が完了すれば呼び出し元スレッドへリターンしてくれます。つまり音声が再生されている間に次の波形を計算できます(あまり複雑な波形でなければですが)。そのためとりあえずは波形生と再生は一つのスレッドで行っても大丈夫だと思います。
26
26
 
27
27
 
28
28
 

1

波形出力用のインターフェース名(SourceDataLine)を明記

2018/07/22 07:17

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  (2) スレッドB
24
24
 
25
- 生きているオシレーター(群)から波形をバッファーへ生成し、その波形を再生するという処理を無限に繰り返すようなものになります。なおjavax.sound.sampledによる波形再生は再生している間中writeがブロックするのではなくバッファー内の波形データをOSが制御する再生チャネル用の内部バッファーへ転送するだけなので転送が完了すれば呼び出し元スレッドへリターンしてくれます。つまり音声が再生されている間に次の波形を計算できます(あまり複雑な波形でなければですが)。そのためとりあえずは波形再生と再生は一つのスレッドで行っても大丈夫だと思います。
25
+ 生きているオシレーター(群)から波形をバッファーへ生成し、その波形を再生するという処理を無限に繰り返すようなものになります。なおjavax.sound.sampled.SourceDataLineによる波形再生は再生している間中writeがブロックするのではなくバッファー内の波形データをOSが制御する再生チャネル用の内部バッファーへ転送するだけなので転送が完了すれば呼び出し元スレッドへリターンしてくれます。つまり音声が再生されている間に次の波形を計算できます(あまり複雑な波形でなければですが)。そのためとりあえずは波形再生と再生は一つのスレッドで行っても大丈夫だと思います。
26
26
 
27
27
 
28
28