Rooms using Binaural Room Impulse Responses

This example simulates a cello in a reverberant environment using BRIR recordings. The resulting binaural signal as stored in out_brirs.wav. If you want to test it run the brirs.m script.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sim = simulator.SimulatorConvexRoom();
set(sim, ...
    'Renderer', @ssr_brs, ...
    'Sources', {simulator.source.Point()}, ...
    'Sinks', simulator.AudioSink(2) ...
    );
set(sim.Sources{1}, ...
    'Name', 'Cello', ...
    'IRDataset', simulator.DirectionalIR( ...
      ['impulse_responses/qu_kemar_rooms/auditorium3/', ...
       'QU_KEMAR_Auditorium3_src3_xs+2.20_ys-1.94.sofa']), ...
    'AudioBuffer', simulator.buffer.FIFO(1) ...
    );
set(sim.Sources{1}.AudioBuffer, ...
    'File', 'stimuli/anechoic/instruments/anechoic_cello.wav' ...
    );
sim.set('Init',true);
%% static scene, dynamic head
% head should rotate about 170 degree to the right with 20 degrees per second
sim.Sinks.setDynamic('UnitX', 'Velocity', 20);
sim.Sinks.set('UnitX', [cosd(85); sind(85); 0]);
while ~sim.isFinished()
  sim.set('Refresh',true);  % refresh all objects
  sim.set('Process',true);
end
sim.Sinks.saveFile('out_brirs.wav',sim.SampleRate);  % save file
sim.set('ShutDown',true);