Растягивать и недосыпать)
Если у тебя монитор на компьютере дает 50.1Гц, а спектрум 49.9Гц (для примеру), то придется растянуть времянки спектрума до 50.1Гц.
Тоже самое и со звуком.
- - - Добавлено - - -
Совершенно, верно. Точность измерения частоты кадров и семплов - это самое сложное, над чем я долго работал.
Твои тесты драйверов звуковых карт, как я понял, опираются на DirectSound. А это очень старая технология, которая эмулируется через WASAPI уже сто лет как.
Что же касается WASAPI, то даже в кооперативном (обычном) режиме, забор данных идет плюс-минус равномерно. Но даже с теми звуковухами, которые имеют внутренние дополнительные буфера-прослойки (у меня есть такая карта), все равно получается стабильно с моим алгоритмом, приходится только несколько побольше сделать зазор звукового буфера (лишние 10мс, в худшем случае 20мс). А в целом основная часть звуковух работает стабильно с зазором 5мс. Впрочем, можно ставить 2-3мс, но это такие мелочи, которые можно округлить до 5мс для надежности.
Я гонял эту систему стабилизации на совершенно разных и даже очень тормозных компах, пока что прекрасно справляется.
Впрочем, вполне возможно, что найдутся какие-то экзотические случаи, но пока что не встретились.
Система на столько универсальна, что любые большие биения и нестабильности лечатся одним и тем же алгоритмом, просто требуют несколько большего зазора звукового буфера, вот и все.
- - - Добавлено - - -
Приведу такую аналогию.
В комнате болтается маятник подвешенный под потолком (трения нет, он качается не затухая). Если маятник хороший, стандартный, то он качается равномерно, и если зазор от крайних положений маятника до стен 1 метр, маятник с большой долей вероятности будет всегда качаться одинаково, не доставая до стен (не вызывая переполнения буфера, пересинхронизации и требования новой раскачки). Частоту качаний маятника тоже легко измерить на достаточно коротком окне.
Но предположим, что на маятник действуют дополнительные силы, например, крюк, на котором он качается, ездит туда-сюда с какой-то периодичностью. А этот крюк ездит еще по одним рельсам со своей периодичностью. Теперь, чтобы маятник не касался стен, стены надо немного раздвинуть. Иногда много. Но всегда есть такое положение стен, когда даже такой сложно предсказуемый на коротком отрезке времени маятник будет качаться не доставая до стен. Что же касается вычисления частоты качания маятника, то тут становится сложнее, но на более большом окне она вычисляется стабильно. И чем больше проходит времени с момента запуска эмулятора, тем стабильность выше.
- - - Добавлено - - -
Если ты посмотришь на графики работы аудиосистемы, которые тут выкладывали, то фиолетовый график - это и есть диаграмма качания маятника.
Он то приближается к одной стене, то к другой, качается у всех по разному (в зависимости от интерференции частоты семплов и кадров на конкретной машине), но все время удерживается в стабильном коридоре. Если же качнется за пределы, то наступит пересинхронизация (установка маятника в середину коридора). Но при оптимальном зазоре сверху и снизу пересинхронизация не наступит никогда.

