и в этом месте Вани аргументы просто не работают про ступеньки буфера. Есть расхождения без криминала. Совсем не на порядок..
Дело не в формате плагинов. Дело исключительно в способе передачи данных из CoreAudio/ASIO в DAW и обратно и в обработке ситуации, когда время обработки буфера в DAW превысило время между двумя приходами новых данных.
В ASIO (правильно написанном, но сейчас уже все они правильно написаны) единоразовый такой overrun будет полностью скомпенсирован хвостовым буфером, например, в самой аудиокарте.
В CoreAudio все хуже, там если не успел до прихода следующей порции данных, то безусловный дропаут. И по входу, кстати, тоже.
Теперь почему это важно. Дело в том, что время, затрачиваемое на обработку в плагинах не есть константа. Есть другие процессы, прерывания, непопадания в кэши и прочие побочные накладные расходы, которые непредсказуемы. В среднем единоразовые выбросы могут достигать порядка 3*среднее_время_обработки. Выглядит это так - тысяча буферов обрабатывается за время T, а тысячепервый - за какие-нибудь 3*T.
Если, скажем, T примерно равно 50% от времени между двумя приходами данных (т.е. buffer_size/f_sample), то на этот тысячепервый раз в CoreAudio будет дропаут с последующей потерей следующего буфера на входе, а в ASIO будет просто неполное опустошение хвостового буфера в карте (неполное - если он выбран с достаточным запасом), а затем постепенное его наполнение до обычного уровня, т.к. в среднем производительность в два раза выше, нежели полностью критическая (когда T=buffer_size/f_sample).
Именно в этом и кроется смысл выражения "ASIO более производителен, чем CoreAudio". Потому что для CoreAudio надо обеспечить, чтобы 3*T было строго меньше buffer_size/f_sample, а для ASIO - 3*T<(buffer_size+tail_size)/f_sample. Множитель 3 - это, скажем так, опытным путем полученная цифра. В каждом конкретном случае она может меняться, но ее порядок именно такой. Иногда криворукие писатели непосредственно при написании плагина могут провалить явки и этот коэффициент может стать и 10, и 20, и сколько влезет, но это уже вопросы к конкретным рукожопам, и тут не рассматриваются.
Есть еще нюанс, что CoreAudio точно так же ведет себя и на этапе получения данных из драйвера и помещения их в буфер для последующей обработки. И там тоже приходится вставлять небольшой дополнительный буфер.