1# test_detectSilences.praat
2# djmw 20170808
3
4appendInfoLine: "test_detectSilences.praat"
5
6text$ [0] = "+-, +-+-, ..., +-+-+-+-+-"
7text$ [1] = "-+, -+-+, ..., -+-+-+-+-+"
8db0 = -30
9for k from 0 to 1
10	appendInfoLine: tab$, text$ [k]
11	sound [k] = Create Sound from formula: "s"+ string$(k), 1, 0, 1, 44100, "randomGauss (0,0.1)"
12	for i to 5
13		selectObject: sound [k]
14		Formula (part): (2*i-1 -k)*0.1, (2*i-k) *0.1, 1, 1, "self*10^(db0 / 20)"
15		tg = To TextGrid (silences): 100, 0, -25, 0.01, 0.01, "silent", "sounding"
16		numberOfIntervals = Get number of intervals: 1
17		numberOfIntervals2 = i * 2 + (if i < 5 then 1-k else 0 fi)
18		assert numberOfIntervals = numberOfIntervals2; 'numberOfIntervals' 'i' 'k'
19		removeObject: tg
20	endfor
21endfor
22
23appendInfoLine: tab$, "silence is  +3dB or -3dB w.r.t  threshold"
24db0 = -30
25for k from 0 to 1
26	for idb to 2
27		db = -27 - (idb -1) * 6; 3 db around db0
28		selectObject: sound [k]
29		tg = To TextGrid (silences): 100, 0, db, 0.01, 0.01, "silent", "sounding"
30		numberOfIntervals = Get number of intervals: 1
31		numberOfIntervals2 = if db < db0 then 1 else 10 fi
32		assert numberOfIntervals = numberOfIntervals2; 'db'
33		removeObject: tg
34	endfor
35endfor
36
37# sound [0] and sound [1] have 10 intervals
38appendInfoLine: tab$, "minimum sounding/silent interval exceeds largest interval"
39for k from 0 to 1
40	selectObject: sound [k]
41	tg = To TextGrid (silences): 100, 0, db, 0.15, 0.15, "silent", "sounding"
42	numberOfIntervals = Get number of intervals: 1
43	assert numberOfIntervals = 1
44	removeObject: sound [k], tg
45endfor
46
47# more tests...
48
49#removeObject: sound
50appendInfoLine: "test_detectSilences.praat OK"
51