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