API libpd позволяет обрабатывать аудио только в кадрах по 64 сэмпла за раз. В прошлом я устанавливал размер буфера аудиоустройства на число, кратное 64. Никаких проблем там нет.
Теперь мне нужно сделать приложение для Windows, совместимое с ASIO. Я использую RtAudio. Проблема заключается в том, что когда я инициализирую свою звуковую карту ASIO (Roland FA-66) с помощью API RtAudio, он игнорирует параметр размера буфера и выбирает один из его собственных, который не делится на 64.
Я думал об обходном пути. Это будет происходить в функции обратного вызова аудио:
Я не пробовал это, но я думаю, что это будет работать.
Однако я хотел бы знать, существует ли «стандартная» или «хорошо известная» процедура для решения этой проблемы. Может быть, есть предупреждения или советы, которые я не знаю?
Ваш подход кажется верным. Единственное, с чем вам нужно быть осторожным, это выравнивание памяти.
Вот отличная (и очень короткая) статья о memcpy
Подводные камни, которые могут вызвать у вас головную боль: http://www.codepolice.org/c/memcpy.html