1# test_MixingMatrix.praat
2# djmw 20170421
3
4appendInfoLine: "test_MixingMatrix"
5
6stereo = Create Sound from formula: "s", 2, 0, 1, 44100, "sin(2*pi*row*300*x)"
7mono = Create Sound from formula: "s", 1, 0, 1, 44100, "sin(2*pi*300*x)"
8mm [1] = Create simple MixingMatrix: "mm1", 2, 1, "1 0"
9mm [2] = Create simple MixingMatrix: "mm2", 2, 1, "0 1"
10mm [3] = Create simple MixingMatrix: "mm3", 2, 1, "1 1"
11mm [4] = Create simple MixingMatrix: "mm4", 2, 2, "1 0 1 0"
12mm [5] = Create simple MixingMatrix: "mm5", 2, 1, "0.5 0.5"
13mm [6] = Create simple MixingMatrix: "mm7", 2, 2, "0 1 1 0"
14
15mm [7] = Create simple MixingMatrix: "mm6", 1, 2, "1 1"
16
17appendInfoLine: tab$+ "Mix"
18
19for i to 6
20	selectObject: mm [i]
21	numberOfRows = Get number of rows
22	selectObject: stereo, mm[i]
23	s [i] = Mix
24	numberOfChannels = Get number of channels
25	assert numberOfChannels = numberOfRows; 'i'
26endfor
27
28selectObject: mono, mm [7]
29s [7] = Mix
30
31eps = 1e-15
32for i to 300
33	stereo_300 = Object_'stereo' [1,i]
34	stereo_600 = Object_'stereo' [2,i]
35	mono_300 = Object_'mono' [1,i]
36	for j to 7
37		sj = s[j]
38		s1_'j' = Object_'sj' [1,i]
39	endfor
40	assert abs (s1_1 - stereo_300) < eps; mm[1]
41	assert abs(s1_2 - stereo_600) < eps; mm[2]
42	assert abs(s1_3 - (stereo_300 + stereo_600)) < eps; mm[3]
43	s4 = s [4]
44	s2_4 = Object_'s4' [2,i]
45	assert abs(s1_4 - stereo_300) < eps; mm[4]
46	assert abs(s2_4 - stereo_300) < eps; mm[4]
47	assert abs(s1_5 - 0.5*(stereo_300 + stereo_600)) < eps; mm[5]
48	assert abs(s1_6 - stereo_600) < eps; mm[6]
49	s6 = s [6]
50	s2_6 = Object_'s6' [2,i]
51	assert abs(s2_6 - stereo_300) < eps; mm[6]
52	assert abs(s1_7 - stereo_300) < eps; mm[7]
53	s7 = s [7]
54	s2_7= Object_'s7' [2,i]
55	assert abs(s2_7 - stereo_300) < eps; mm[7]
56endfor
57
58for i to 7
59	removeObject: s [i]
60endfor
61
62removeObject: stereo, mono, mm [7]
63
64appendInfoLine: tab$+ "Mix part..."
65
66stereo = Create Sound from formula: "s", 2, 0, 1, 44100, "row"
67for i to 6
68	t1 = randomUniform (-0.5, 1.5)
69	numberOfSamples = randomInteger (1, 1000)
70	t2 = t1 + numberOfSamples / 44100
71	selectObject: mm [i]
72	numberOfRows = Get number of rows
73	selectObject: stereo, mm[i]
74	s [i] = Mix part: t1, t2
75	n = Get number of samples
76	assert n == numberOfSamples; 'i'
77	start = Get start time
78	end = Get end time
79	assert abs (start - t1) < eps; 'start' 'i'
80	assert abs (end - t2) < eps; end' 'i'
81endfor
82
83for i to 6
84	removeObject: mm [i], s[i]
85endfor
86removeObject: stereo
87
88appendInfoLine: "test_MixingMatrix OK"
89