def test_test_equalization(): freefield.initialize(setup="dome", default="play_rec", camera=None) _, filename = tempfile.mkstemp() freefield.equalize_speakers(file_name=filename) freefield.load_equalization(filename) raw, leve, full = freefield.test_equalization() freefield.spectral_range(raw)
def test_initialize(): for default in [ 'play_rec', 'play_birec', 'loctest_freefield', 'loctest_headphones', 'cam_calibration' ]: setup = np.random.choice(["dome", "arc"]) freefield.initialize(setup=setup, default=default)
def test_apply_equalization(): freefield.initialize(setup="dome", default="play_rec", camera=None) sound = slab.Sound.whitenoise() speaker = numpy.random.choice(freefield.SPEAKERS) numpy.testing.assert_raises(ValueError, freefield.apply_equalization, sound, speaker) _, filename = tempfile.mkstemp() freefield.equalize_speakers(file_name=filename) freefield.load_equalization(filename) equalized = freefield.apply_equalization(sound, speaker) assert isinstance(equalized, slab.Sound)
def test_calibrate_camera(): for _ in range(5): freefield.initialize(setup="dome", default="cam_calibration", camera=None) n_cams = numpy.random.randint(1, 4) freefield.CAMERAS = VirtualCam(n_cams=n_cams) n_reps, n_images = numpy.random.randint(1, 5), numpy.random.randint(1, 5) speakers = freefield.all_leds() freefield.calibrate_camera(speakers, n_reps, n_images) cams = freefield.CAMERAS.calibration.keys() assert len(cams) == n_cams speakers = freefield.pick_speakers([1, 2, 3, 4, 5]) numpy.testing.assert_raises(ValueError, freefield.calibrate_camera, speakers, n_reps, n_images) freefield.calibrate_camera_no_visual(speakers, n_reps, n_images)
def test_play_and_record(): sound = slab.Sound.whitenoise() freefield.initialize(setup="dome", default="play_rec", camera=None) for speaker in freefield.SPEAKERS: rec = freefield.play_and_record(speaker, sound, compensate_delay=True, equalize=False) assert rec.n_samples == sound.n_samples assert rec.n_channels == 1 freefield.initialize(setup="dome", default="play_birec", camera=None) for speaker in freefield.SPEAKERS: rec = freefield.play_and_record(speaker, sound, compensate_delay=True, equalize=False) assert rec.n_samples == sound.n_samples assert rec.n_channels == 2
def test_pick_speakers(): for setup in ["dome", "arc"]: freefield.initialize(setup=setup, default="play_rec", camera=None) indices = [s.index for s in freefield.SPEAKERS] coordinates = [(s.azimuth, s.elevation) for s in freefield.SPEAKERS] for _ in range(100): n_picks = numpy.random.randint(0, 47) picks = numpy.random.choice(indices, n_picks, replace=False) speakers = freefield.pick_speakers(picks) assert len(speakers) == n_picks assert [s.index for s in speakers].sort() == picks.sort() idx = np.random.randint(47, size=2) idx.sort() picks = coordinates[idx[0]:idx[1]] n_picks = len(picks) speakers = freefield.pick_speakers(picks) assert len(speakers) == n_picks assert [(s.azimuth, s.elevation) for s in speakers].sort() == picks.sort() picks = numpy.random.choice(freefield.SPEAKERS, n_picks, replace=False) speakers = freefield.pick_speakers(picks) assert all(speakers == picks)
def test_equalizing(): freefield.initialize(setup="dome", default="play_rec", camera=None) sound = slab.Sound.chirp(duration=0.05, from_frequency=100, to_frequency=20000) speakers = numpy.random.choice(freefield.SPEAKERS, numpy.random.randint(1, 47), replace=False) target_speaker = numpy.random.choice(freefield.SPEAKERS) levels = freefield._level_equalization(speakers, sound, target_speaker, threshold=80) assert len(levels) == len(speakers) levels = freefield._level_equalization(speakers, sound, target_speaker, threshold=100) assert all(levels == 1) filter_bank, _ = freefield._frequency_equalization(speakers, sound, target_speaker, levels, 1 / 8, 200, 20000, 1.0, 80) assert filter_bank.n_channels