1
1
import numpy as np
2
+ import pytest
2
3
3
4
import pyroomacoustics as pra
4
5
8
9
source_loc1 = [3.5 , 7.7 , 2.1 ]
9
10
mic0 = [7 , 8 , 3.9 ]
10
11
mic1 = [7.87 , 3.6 , 6.1 ]
12
+ mic_dir0 = pra .FigureEight (
13
+ orientation = pra .DirectionVector (azimuth = 90 , colatitude = 15 , degrees = True )
14
+ )
15
+ mic_dir1 = pra .FigureEight (
16
+ orientation = pra .DirectionVector (azimuth = 180 , colatitude = 15 , degrees = True )
17
+ )
18
+ src_dir0 = pra .FigureEight (
19
+ orientation = pra .DirectionVector (azimuth = 270 , colatitude = 15 , degrees = True )
20
+ )
21
+ src_dir1 = pra .FigureEight (
22
+ orientation = pra .DirectionVector (azimuth = 0 , colatitude = 15 , degrees = True )
23
+ )
11
24
12
25
13
26
def test_add_source_mic ():
@@ -56,12 +69,21 @@ def test_add_source_mic_obj():
56
69
assert room .mic_array .R .shape == (3 , 2 )
57
70
58
71
59
- def test_add_source_mic_obj_2 ():
72
+ @pytest .mark .parametrize ("with_dir" , ((True ,), (False ,)))
73
+ def test_add_source_mic_obj_2 (with_dir ):
60
74
room = pra .ShoeBox (room_size )
61
75
62
- source0 = pra .SoundSource (source_loc0 , signal = sig )
63
- source1 = pra .SoundSource (source_loc1 , signal = sig )
64
- mic_array = pra .MicrophoneArray (np .c_ [mic0 , mic1 ], fs = room .fs )
76
+ if with_dir :
77
+ sdir0 = src_dir0
78
+ sdir1 = src_dir1
79
+ mdir = [mic_dir0 , mic_dir1 ]
80
+ else :
81
+ sdir0 = sdir1 = None
82
+ mdir = [None , None ]
83
+
84
+ source0 = pra .SoundSource (source_loc0 , signal = sig , directivity = sdir0 )
85
+ source1 = pra .SoundSource (source_loc1 , signal = sig , directivity = sdir1 )
86
+ mic_array = pra .MicrophoneArray (np .c_ [mic0 , mic1 ], fs = room .fs , directivity = mdir )
65
87
66
88
room .add (source0 ).add (source1 ).add (mic_array )
67
89
@@ -72,6 +94,19 @@ def test_add_source_mic_obj_2():
72
94
assert np .allclose (room .mic_array .R [:, 0 ], mic0 )
73
95
assert np .allclose (room .mic_array .R [:, 1 ], mic1 )
74
96
assert room .mic_array .R .shape == (3 , 2 )
97
+ # Test directivities.
98
+ assert room .sources [0 ].directivity is sdir0
99
+ assert room .sources [1 ].directivity is sdir1
100
+ assert all (d is md for d , md in zip (room .mic_array .directivity , mdir ))
101
+
102
+
103
+ def test_add_source_mic_obj_with_dir_error ():
104
+ room = pra .ShoeBox (room_size )
105
+
106
+ mic_array = pra .MicrophoneArray (np .c_ [mic0 , mic1 ], fs = room .fs )
107
+
108
+ with pytest .raises (ValueError ):
109
+ room .add_microphone_array (mic_array , directivity = [mic_dir0 , mic_dir1 ])
75
110
76
111
77
112
def test_add_source_mic_ndarray ():
0 commit comments