@@ -2,8 +2,7 @@ use iai::black_box;
2
2
3
3
use web_audio_api:: context:: BaseAudioContext ;
4
4
use web_audio_api:: context:: OfflineAudioContext ;
5
- use web_audio_api:: node:: AudioNode ;
6
- use web_audio_api:: node:: AudioScheduledSourceNode ;
5
+ use web_audio_api:: node:: { AudioNode , AudioScheduledSourceNode , PanningModelType } ;
7
6
8
7
const SAMPLE_RATE : f32 = 48000. ;
9
8
const DURATION : usize = 10 ;
@@ -197,6 +196,27 @@ pub fn bench_analyser_node() {
197
196
assert_eq ! ( ctx. start_rendering_sync( ) . length( ) , SAMPLES ) ;
198
197
}
199
198
199
+ pub fn bench_hrtf_panners ( ) {
200
+ let ctx = OfflineAudioContext :: new ( 2 , black_box ( SAMPLES ) , SAMPLE_RATE ) ;
201
+
202
+ let mut panner1 = ctx. create_panner ( ) ;
203
+ panner1. set_panning_model ( PanningModelType :: HRTF ) ;
204
+ panner1. position_x ( ) . set_value ( 10.0 ) ;
205
+ panner1. connect ( & ctx. destination ( ) ) ;
206
+
207
+ let mut panner2 = ctx. create_panner ( ) ;
208
+ panner2. set_panning_model ( PanningModelType :: HRTF ) ;
209
+ panner2. position_x ( ) . set_value ( -10.0 ) ;
210
+ panner2. connect ( & ctx. destination ( ) ) ;
211
+
212
+ let mut osc = ctx. create_oscillator ( ) ;
213
+ osc. connect ( & panner1) ;
214
+ osc. connect ( & panner2) ;
215
+ osc. start ( ) ;
216
+
217
+ assert_eq ! ( ctx. start_rendering_sync( ) . length( ) , SAMPLES ) ;
218
+ }
219
+
200
220
iai:: main!(
201
221
bench_ctor,
202
222
bench_sine,
@@ -209,4 +229,5 @@ iai::main!(
209
229
bench_stereo_positional,
210
230
bench_stereo_panning_automation,
211
231
bench_analyser_node,
232
+ bench_hrtf_panners,
212
233
) ;
0 commit comments