ASIO SDK как обрабатывать аудиобуферы

Итак, я работаю над программным обеспечением для обработки звука, и я немного запутался в обработке звука ASIO. Из того, что я читаю, похоже, что когда выполняется обратный вызов переключателя буфера, мне нужно обработать «вход» в «выход». Но что, если у меня разное количество входных и выходных каналов? И я предполагаю, что мне нужно выполнить преобразование формата, если мой формат ввода и вывода не совпадают, верно?


person Caleb Merchant    schedule 29.03.2015    source источник
comment
Какой плагин вы разрабатываете? Я предполагаю, что плагин эффекта, если у вас есть входы и выходы?   -  person marko    schedule 30.03.2015
comment
Да по существу. Я просто смущен тем, как он хочет, чтобы я обрабатывал данные. Я знаю, когда это нужно сделать, но я не знаю, какие буферы мне нужно обработать, а в какие записать обратно.   -  person Caleb Merchant    schedule 30.03.2015


Ответы (1)


Что вам нужно сделать, так это получить доступ к asioDriverInfo.inputsChannels и asioDriverInfo.inputBuffers. Я использовал этот фрагмент кода, чтобы выяснить перечисление ввода/вывода моего устройства. Я надеюсь, что это помогает.

string cad;
if (ASIOStart() == ASE_OK)
{
    for (int i = 0; i < asioDriverInfo.inputChannels + asioDriverInfo.outputChannels; i++)
    {
        cad =  asioDriverInfo.channelInfos[i].isInput? "input" : "output ";
        cout<<"Chanel "<<i<<" : "<<asioDriverInfo.channelInfos[i].name<<" "<<cad<<endl;
    }               
    for (int i = 0; i < asioDriverInfo.inputBuffers + asioDriverInfo.outputBuffers; i++)
    {
        cad =  asioDriverInfo.bufferInfos[i].isInput? "input" : "output ";
        cout<<"Buffer "<<i<<asioDriverInfo.bufferInfos[i].buffers<<" : " << cad  <<" chanel "<<asioDriverInfo.bufferInfos[i].channelNum<<endl;
    }
...and rest of stuff
person Antonio Paredes Picon    schedule 07.04.2015