Anything can be misconstrued, and that is what you are doing here. I never said what you are saying above.
I agree that you didn't say it, but I think it could be misconstrued in the way I suggested. I could be wrong about that, but that was/is my opinion.
Latency is NOT directly proportional to disc access time. Latency depends on the audio buffer length plus any additional delays in sample processing. IF you can reduce the audio buffer length, you will reduce latency. There are many factors (including the voice limit you set, additional processing such as convolution reverb used, size of pre-load buffers, your CPU speed, the disc access time, the disc interface rate limit, etc. etc.) that affect the size of the audio buffer you need to use, and therefore the latency that you need to use.
I mostly agree with all this, however my testing to date suggests that in Kontakt (in my specific config) the pre-load has no or very little affect on the required sample buffer, and hence the latency. The pre-load changes how much data is read from each sample each time a read is made, and thus it changes the number of head seeks per unit of time, which then directly affects the data rate that can be sustained from the disk. This affects polyphony
, not latency. Obviously if I were to keep decreasing the sample buffer size, though, there would be a point where it would start to cause problems, because the lower the sample buffer, the higher the CPU load (more audio driver interrupts per second or whatever). I have re-tested now using an internal disk (to get data rate up, and hence the CPU usage up a bit), and even when I go down to a sample buffer of 64 samples, it still doesn't seem to affect the polyphony. (~85 voices at both 64 samples and 512 samples). I had to switch to ASIO4ALL on the internal audio interface to be able to go down to 64 - my USB audio interface has a lower limit of 128. Now, I haven't yet actually tried playing normally, for long periods of time, using a sample buffer of 64. I'm simply saying that when I was feeding Kontakt the test MIDI files (many simultaneous Note-Ons), I didn't notice any clicks/pops.
What I said was that latency can be a much bigger problem with sampled pianos than modeled pianos because of drive access times.
I am not very comfortable with this statement at all, despite the results of your own testing. I certainly haven't experienced this yet.
IF disc access time is limiting the number of voices that can be played (whether voices are cut off prematurely by the program - a less objectionable but still objectionable problem, or if slow disc access actually creates dropouts) then using a longer audio buffer will eventually fix that problem (because there is more time to read the disc). So if one uses a longer audio buffer to solve a slow disc problem they will then get longer latency - and longer latency affects the feel of playing a software piano, even before it is overtly recognizable as an audio delay.
The "audio buffer" is the buffer is simply a buffer that the sample player application fills with sample data, and then hands over to the audio driver. It has nothing to do with the process of reading data off the disk, except that as this buffer size is decreased, it does increase the general load on the system. If the bottleneck is primarily the disk
, then by far the best way to relieve that bottleneck is to increase the disk read transfer size
, which is completely seperate to the audio buffer size. In Kontakt, the pre-load size changes the disk read transfer size, and of course does not change the audio buffer size.EDIT:
Re-reading your comment here again, I think just perhaps, that you have a basic misunderstanding of the function of the "audio buffer". I completely agree that the longer the access time, the more time is needed to read the disk. However, what gives the system this time is seperate buffering to the audio buffer. Initially, it is the pre-load buffer. The audio-buffer is nowhere near large enough. When a note is first played, the first little audio-buffer-size worth of sample data is read from the pre-load buffer, immediately, without involving the disk at all. It may stream some more audio-buffer-size worth of chunks from the pre-load buffer without initiating a disk access as well. The amount of audio sent to the audio driver before a disk access is initiated would depend on the size of the pre-load buffer. At some point, a disk access would be initiated. In the mean time, audio can be continued to be streamed from the pre-load buffer.
Now, when the data from disk is ready, it will be deposited into another buffer area that would behave the same as the pre-load buffer. (I think the pre-load buffer proper would always have to be maintained with the initial attack data) This data of course must be ready before the initial pre-load data (that was loaded at instrument load time) has finished being streamed to the audio driver. So, it appears to me that you may
be confusing the function of the audio buffer with the pre-load buffer.
Aside from this, I re-iterate that I completely accept that there could be secondary effects. For example, the shorter the audio buffer, the shorter the time between audio driver services (e.g interrupts of some sort), and thus the more sensitive the audio streaming will be to other high priority processes & drivers. This is rather system/config dependent though. I maintain that the main reason to get a faster disk is to improve polyphony - not latency, and that's why I objected to the statement you made. (I know there are other benefits, such as faster load time & less pre-load RAM)
This following is simply an undeniable fact. If you get Slow Disc warnings on your software piano (they flash the words Slow Disc on some programs) you will be able to stop them, and the objectionable audio effects caused by them, by increasing the audio buffer length to some larger length, which of course increases the latency.
It is VERY deniable IMHO. ;^) You asked me to test it, and I did, and I did not find any evidence to support your assertion whatsoever!
(I am not denying the results of your testing, though) When I maxed out my disk, upping the sample buffer size didn't do anything to improve it. (or should I go higher than 512 samples?) I would be keen to try Ivory on Windows. (unfortunately I don't have it)
I wrote a lengthy post about doing this...
I've re-read the post. There is one piece of information I don't think you provided, and it might be important:
Using the FW 800 disk, did you carefully determine the maximum polpyhony/disk-throughput (i.e - no dropouts and/or disk warnings) using a sample buffer of 128 samples, and then determine the maximum polyphony/throughput using 256 samples? I.e - I know that increasing the sample buffer to 256 stopped the problem, but how much
better did it become?
p.s Tried to test EWQLP, but it's performing dreadfully
with my torture MIDI files. For investigation.