The following is a very welcome contribution from Philip Derrin, the creator of MacCro, an excellent Oscilloscope and Spectrum Analyzer shareware software for the Macintosh platform. invites its readers to visit Philip's home page for further info about MacCro.



Simple stuff first: the URL for MacCRO in your article is incorrect; it should be (I recently changed ISPs, and no longer use Ozemail, so your link goes to an old version - which I can't remove, because Ozemail won't let me log in).

The triggering capability for the Oscilloscope is something I was planning to add to MacCRO in any case, so that's not a problem.

What sort of frequency resolution would you need for the spectrum analyser and sonogram? As you mentioned in your article, memory use is a problem, but there it's more complicated than that: To get good frequency resolution, data must be captured over a long period of time, and then a Fourier transform must be done, which takes a huge amount of processor time, even on a G3/G4 machine. This is very difficult to do in real time, especially if you want decent resolution at low frequencies.

To "work in real time, with log scale from 15 kHz down to 0.01 Hz", is very difficult even with a modern computer: 15kHz requires a sample frequency of at least 30kHz, and 0.01Hz requires a recording at least 100 seconds long. There is then a requirement of at least 12MB of memory just for the captured data, and to do the Fourier transform on that data would take about another two minutes on my 333mHz G3 - though on a G4 using Altivec you might be able to speed it up to about thirty seconds (the computer would freeze during this time, unless you were running Mac OS X). Adding a row of pixels to a spectrogram every four minutes is not exactly real time.

Restricting the bandwidth would make this much simpler. For example, if you want to know about the 0.01Hz - 1Hz band, only two samples per second are necessary, though you still have to record for about two minutes before there is enough data for a 0.01Hz resolution. The Fourier transform would then take a fraction of a second, as it currently does in MacCRO. Also, it would be necessary to filter out the higher frequencies, rather than just taking a sample twice a second, but that isn't difficult.

This restriction of bandwidth would mean you're losing all the data outside that bandwidth, so it's definitely important to be able to record to disk at the same time. QuickTime can already do this - I only have to tell it where to put the data. Compression would use up precious CPU time, so a large hard disk is a requirement.

Processing data from disk is relatively easy - it might be possible, for example, to produce a spectrogram from 0.01Hz to 15kHz, by repeating the bandwidth-restriction method several times to give different resolutions across the graph. This would mean the computer doesn't waste time producing a lot of high-resolution data for the high frequencies (which isn't displayed on a logarithmic graph), but still has good resolution at low frequencies. It *might* be possible to do the same thing in real time using multi-threading under OS X, if your computer is fast enough.

Also, getting any signal at all at such a low frequency would require the right hardware. A proper digital sound card would be required for frequencies below a few hertz. Of course, this is a requirement anyway for the new G4 machines (with no analog audio input).

I may be able to have a go at some of this later this year. At the moment I'm busily preparing for final exams...

I hope this helps.