In Reply to: Thanks for the response! posted by Jaundiced Ear on July 24, 2013 at 21:20:09:
Hi JE,
the issue is not about day to day consistancy, but about "how can different programms that all send the same bits to the DAC sound different?" Is this what you are really after?
The insight is to note that in my previous post I was talking about things that affect the sound that are NOT changes to the bits, but things like ground plane noise. I was trying to show that what is happening inside the computer (processor, memory acceses etc) can change the ground plane noise. Not just the amplitude but also the spectrum of the noise. I'll give some specific examples later.
Not all programs that read files and send bits to a DAC do it exactly the same way. Some may have several buffers the data goes throuigh on it's path, some may only have one or two. Some may be built using a "layered" hierachical approach with different software "modules" that call each other, where others may be fairly "flat" with just one routine that does all the processing.
The exact sequence of instructions and memory accesses is guaranteed to be different between the programs. Since it is these instructions and memory accesses that cause the ground plane noise, I hope you can see that differences in how a task is done can produce different noise.
And BTW this CAN be measured. I've built a little ground noise analyzer that can easily see the difference in the noise from different programs doing supposedly the same thing.
Now for a concrete example. Let's take a simple program that is just coppying audio data from a file to a buffer and then to an simple output port. It has two threads, one reading the file and putting the data in the buffer, and one taking data out of the buffer and putting it on the out port using an external clock to time the opperation. The first thread waits until the buffer is empty then fills it up and goes back to sleep. (in reality there would be two buffers used in a ping pong arrangement, but that is irrelevant to the issue at hand).
So lets take this program and make two copies, one which has a small buffer and one which has a large buffer. The total amount of processing is exactly the same, the code is exactly the same, but is the ground plane noise the same? NO!
In the case of the small buffer the first thread spends a fairly short period of time waiting since the buffer empties out quickly. It spends a small amount of work often. With the large buffer each time it wakes up it has to handle a lot more data, but it waits a much longer time between sessions.
So why does this matter? If you look at the "work performed by the thread" over time the large buffer version shows a very "bursty" activity, but the small buffer shows a much more uniform activity. If you look at this in the frequency domain the small buffer version is dominated by relatively low intensity at high frequencies, mostly above the human hearing range. But when you look at the large buffer version you see higher intensity at much lower frequencies that are right smack dab in the middle of the human hearing range. This latter noise is going to have a much bigger affect on audibility.
And note this was exactly the same code, just different buffer sizes. Think what can happen when you are comparing different programs that use very different program architectures.
As an analogy, think about getting a group of people from point A to point B, either using a two seater sports car or a 30 person bus. The sports car has to go much faster and more often, the bus can only take a few trips and lumber along. But the result is the same. All the people get from poingt A to point B in the same total amount of time. But if you stand at the side of the road and have to put up with the noise, is it the same?
I hope that makes sense.
John S.
This post is made possible by the generous support of people like you and our sponsors:
Follow Ups
- RE: Thanks for the response! - John Swenson 13:57:51 07/25/13 (28)
- Very true but? - Gordon Rankin 06:01:56 07/26/13 (1)
- RE: Very true but? - Tony Lauck 07:46:04 07/26/13 (0)
- RE: Thanks for the response! - cmiu 23:57:03 07/25/13 (0)
- RE: Thanks for the response! - Jaundiced Ear 15:02:27 07/25/13 (24)
- RE: Thanks for the response! - Mercman 15:50:01 07/25/13 (23)
- RE: Thanks for the response! - Jaundiced Ear 17:11:46 07/25/13 (22)
- RE: Thanks for the response! - Tony Lauck 18:06:51 07/25/13 (17)
- I'm still not sure I understand - Jaundiced Ear 19:59:26 07/25/13 (16)
- RE: I'm still not sure I understand - John Swenson 15:49:44 07/26/13 (4)
- VERY well said! - Ivan303 09:37:07 07/31/13 (0)
- Ah ha! Yes, this makes sense! - Jaundiced Ear 16:32:26 07/26/13 (2)
- RE: Ah ha! Yes, this makes sense! - jkeny 17:08:05 07/26/13 (1)
- RE: Ah ha! Yes, this makes sense! - Jaundiced Ear 16:53:34 07/27/13 (0)
- RE: I'm still not sure I understand - Tony Lauck 20:33:30 07/25/13 (10)
- OK, now I'm really confused. - Jaundiced Ear 22:54:53 07/25/13 (9)
- RE: OK, now I'm really confused. - rick_m 08:30:21 07/26/13 (5)
- RE: OK, now I'm really confused. - jkeny 10:50:49 07/26/13 (4)
- RE: OK, now I'm really confused. - rick_m 13:59:06 07/26/13 (1)
- RE: OK, now I'm really confused. - jkeny 15:17:50 07/26/13 (0)
- RE: OK, now I'm really confused. - Say 12:11:17 07/26/13 (1)
- RE: OK, now I'm really confused. - jkeny 12:34:58 07/26/13 (0)
- RE: OK, now I'm really confused. - Tony Lauck 06:47:31 07/26/13 (0)
- RE: OK, now I'm really confused. - Mercman 03:24:18 07/26/13 (1)
- RE: OK, now I'm really confused. - Jaundiced Ear 04:14:16 07/26/13 (0)
- RE: Thanks for the response! - Mercman 17:17:34 07/25/13 (3)
- RE: Thanks for the response! - Bob_C 19:44:55 07/25/13 (2)
- I know I'm not as nice as you are, Bob_C - Jaundiced Ear 20:45:12 07/25/13 (1)
- RE: I know I'm not as nice as you are, Bob_C - Bob_C 21:35:08 07/25/13 (0)