!7 module ListenOnNoise > DynPrintLogAndEnabled { double minLevel = 25; // percent double maxPause = 2; // pause allowed while we keep recording, seconds double minDuration = 2; // min seconds of complete recording to submit transient long noiseSince, lastNoise; start { doEvery(200, r { float volume = dm_inputVolumeLevel(); //print("Volume: " + volume); if (volume >= minLevel) { // got noise lastNoise = sysNow(); if (noiseSince == 0) noiseSince = lastNoise; } else if (noiseSince != 0) { // got no noise, but am recording if (elapsedSeconds(lastNoise) > maxPause-0.05) { double duration = toSeconds(lastNoise-noiseSince); if (duration >= minDuration-0.05) print("Keeping recording of " + formatDouble(duration, 1) + " seconds"); else print("Discarding recording of " + formatDouble(duration, 1) + " seconds"); noiseSince = 0; } }); } }