Last night, I got home, made my wife some pork tenderloin with maple glaze, and then about 9:30 settled in with my laptop and started to think about what I should do about getting my QRSS software ready for release. I was pretty pleased with my “record” program: it had been steadily receiving and recording .WAV audio for my beacon for about three days, and was consuming only about 2% of my CPU, so the laptop stayed nice and cool. I have a separate program which I can use to render these .WAV files intro spectrograms, and I think I understand how to do that. What I didn’t have was an idea how I was going to convert these bits into a working, functional system that was flexible and cool.
It’s kind of in the same state as my oscillator, buffer amp, and RF Power meter circuit I have breadboarded on the dining room table at the moment.
In such cases, you have two choices: you can think carefully and design your next step, or you can heat up the soldering iron/C compiler, and just experiment.
I chose to do the later.
The result of an additional hour of coding was a melding of the two programs: I created
qrssrecord, a Frankenstein combination of both recording and FFT software. It now uses portaudio, libsndfile, fftw3 and libjpeg (all pretty standard, portable libraries) and records 8khz audio, saves it to disk in chunks of programmable length (currently 5 minutes) and simultaneously does all the FFT magic to plot out the spectrograms for the signal in chunks of the same length. I left it running as I went to bed, having checked to see that the first few images I saw were of some FSK CW signal, which appeared to be an upside down VK2 station….
I was puzzled by this. I hadn’t seen a reverse shifting Australian station before. Was this some new station I had not seen before? I saw VK4ZW was coming in my WSPR spots. Was it him?
In the morning all was clear: I had a bug in my program. The signal was upside down because I screwed up and drew them upside down. It was in fact the now familiar callsign of VK2ZAY:
Heh. I’ll need to fix the bug. I’m not quite sure that this exact structure is what I want in my final program. I think it closely links two programs which we might not wish to closely link. After all, you’ll need some code (or want some code) to render out .wav files at a later date, perhaps with different settings, so why not just use a separate program all along? But for now, I think I’ll use it for further experimentation.
I’ve also dropped my beacon to broadcasting only once every 12 minutes, so I can get more recordings. Sometimes, the black bar of my own transmissions occurs at very inopportune spots.