What is Zeroscan?
While cadence is good for detecting static call progress tones, it's awful at detecting speech or other interesting tones (DTMF outpulses, clicks, etc.). One of the benefits of using the AppleCat modem was the fact that I had absolute control over what cadence corrosponded to what call progress tone. The AppleCat didn't detect call progress tones internally; rather it handed a cadence bit back up to some more intelligent application. This let me write Zeroscan in such a way that it detected tones, busy signals, rings, reorder, and clicks. I then was able to define anything that fell between a click and a reorder as voice (as voice cadence is extremely sporadic) and refine these values over time. This gave me a definite speed advantage over my friend running Toneloc with a USR Courier HST; the courier had its own idea about what voice and busy signals were, and would often misinterpret (and hence, hang up) short rings or busies, and would many times not "hear" voices that were too soft or otherwise outside the cadence detection range of the modem.
One of the early problems I had when writing Zeroscan for my Apple // is that my AppleCat couldn't detect carrier (!) This almost made me abandon Zeroscan until I realized that I didn't really care about finding carriers as much as I wanted to throw away everything I knew about (ringouts, busies, and people shouting "hello? hello?!") and log everything else. As it turned out, "everything else" was all sorts of interesting things..
Zeroscan has the ability to detect audio based on both cadence and frequency. To detect call progress tones, it isolates individual streams of audio and subjects them to an FFT analysis. The output of the analysis and the cadence results are matched against a set of easily modifyable values for busy, dialtone, ring, and voice. Audio data that does not match these cadence & frequency requirements can be further analyzed for data (carrier) information and/or logged to disk for later playback.
A significant portion of Zeroscan uses "pvfutils", part of the vgetty package by Marc Eberhard <Marc.Eberhard@Uni-Duesseldorf.DE>, in particular, all the audio format conversions and a FFT analysis program.