I've done a bunch of experiments today. I found by looking at Activity Monitor that almost every time I had a dropout, there was disk activity, specifically, disk *writes*. I theorized that these were Firefox writing to it's cache every time I loaded a new web page.
So I moved firefox's cache to an external drive and ran with that for a while. After an hour or so, I got a dropout or two. So that's obviously not the entire problem.
Next I moved Firefox's cache back to the internal drive and moved my current playlist of 228 songs to the external drive. This induced a LOT of I/O as it moved the files and I got a bunch of dropouts during the move. After the move, it settled down and played well for a while. Again, maybe an hour, or a little less. Then I got some dropouts. <sigh>
So I moved the files back to the internal drive. This time I didn't get any dropouts during the move, which was kind of amazing actually. I examined Firefox's cache and found it had a lot of entries, so I cleared it. TONS of dropouts during the cache clear. Seconds at a time in fact. This must have hit the disk really hard.
For maybe 2 hours or so, maybe slightly longer, everything was smooth. Then I got some dropouts again. Note that during these tests I've always had at least a little bit of free RAM, sometimes a LOT of free RAM. During some of the audio dropouts, I had more than a gigabyte of free RAM, so I'm now pretty sure this is not a RAM issue.
It also doesn't seem to be related to the transfer of files from disk since I got dropouts with the files on an external disk.
I've also characterized the reads and writes by process and found that most of the time, the big writes are in fact Firefox. But other times it's system processes like launchd and mdworker. I don't know what those processes do; I was just looking for clues to the pattern of reads and writes I saw in activity monitor.
I'm not really sure where to go from here. I'm open to suggestions.
Brian.