diff --git a/src/audio/asio.cpp b/src/audio/asio.cpp index 1a3d56834..45d827a2a 100644 --- a/src/audio/asio.cpp +++ b/src/audio/asio.cpp @@ -150,6 +150,110 @@ void TAAudioASIO::onProcess(int index) { }*/ } +String TAAudioASIO::getErrorStr(ASIOError which) { + switch (which) { + case ASE_OK: + return "OK"; + break; + case ASE_SUCCESS: + return "Success"; + break; + case ASE_NotPresent: + return "Not present"; + break; + case ASE_HWMalfunction: + return "Hardware error"; + break; + case ASE_InvalidParameter: + return "Invalid parameter"; + break; + case ASE_InvalidMode: + return "Invalid mode"; + break; + case ASE_SPNotAdvancing: + return "Sample position not advancing"; + break; + case ASE_NoClock: + return "Clock not initialized"; + break; + case ASE_NoMemory: + return "Out of memory"; + break; + default: + break; + } + return "Unknown error"; +} + +String TAAudioASIO::getFormatName(ASIOSampleType which) { + switch (which) { + case ASIOSTInt16LSB: + return "16-bit LSB"; + break; + case ASIOSTInt24LSB: + return "24-bit packed LSB"; + break; + case ASIOSTInt32LSB: + return "32-bit LSB"; + break; + case ASIOSTFloat32LSB: + return "32-bit float LSB"; + break; + case ASIOSTFloat64LSB: + return "64-bit float LSB"; + break; + case ASIOSTInt16MSB: + return "16-bit MSB"; + break; + case ASIOSTInt24MSB: + return "24-bit packed MSB"; + break; + case ASIOSTInt32MSB: + return "32-bit MSB"; + break; + case ASIOSTFloat32MSB: + return "32-bit float MSB"; + break; + case ASIOSTFloat64MSB: + return "64-bit float MSB"; + break; + case ASIOSTInt32LSB16: + return "16-bit padded LSB"; + break; + case ASIOSTInt32LSB18: + return "18-bit padded LSB"; + break; + case ASIOSTInt32LSB20: + return "20-bit padded LSB"; + break; + case ASIOSTInt32LSB24: + return "24-bit padded LSB"; + break; + case ASIOSTInt32MSB16: + return "16-bit padded MSB"; + break; + case ASIOSTInt32MSB18: + return "18-bit padded MSB"; + break; + case ASIOSTInt32MSB20: + return "20-bit padded MSB"; + break; + case ASIOSTInt32MSB24: + return "24-bit padded MSB"; + break; + case ASIOSTDSDInt8LSB1: + return "1-bit LSB"; + break; + case ASIOSTDSDInt8MSB1: + return "1-bit MSB"; + break; + case ASIOSTDSDInt8NER8: + return "1-bit padded"; + break; + } + return "Unknown"; +} + void* TAAudioASIO::getContext() { return (void*)&driverInfo; } @@ -157,14 +261,22 @@ void* TAAudioASIO::getContext() { bool TAAudioASIO::quit() { if (!initialized) return false; + ASIOError result; + if (running) { logV("CRASH: STOPPING NOW (QUIT)......"); - ASIOStop(); + result=ASIOStop(); + if (result!=ASE_OK) { + logE("could not stop on quit! (%s)",getErrorStr(result)); + } running=false; } logV("CRASH: ASIODisposeBuffers()"); - ASIODisposeBuffers(); + result=ASIODisposeBuffers(); + if (result!=ASE_OK) { + logE("could not destroy buffers! (%s)",getErrorStr(result)); + } logV("CRASH: erase inBufs"); for (int i=0; i