diff --git a/windows/JackRouter/JackRouter.cpp b/windows/JackRouter/JackRouter.cpp index 56324e8f..6d177f08 100644 --- a/windows/JackRouter/JackRouter.cpp +++ b/windows/JackRouter/JackRouter.cpp @@ -198,7 +198,7 @@ JackRouter::JackRouter() : AsioDriver() fAutoConnectIn = get_private_profile_int("AUTO_CONNECT", "input", 1, confPath.c_str()); fAutoConnectOut = get_private_profile_int("AUTO_CONNECT", "output", 1, confPath.c_str()); - fFloatSample = get_private_profile_int("IO", "float-samples", 1, confPath.c_str()); + fFloatSample = get_private_profile_int("IO", "float-sample", 1, confPath.c_str()); FreeLibrary(handle); @@ -207,11 +207,11 @@ JackRouter::JackRouter() : AsioDriver() } if (!fFloatSample) { - fInputBuffers = new long*[kNumInputs]; - fOutputBuffers = new long*[kNumOutputs]; + fInputBuffers = (void**)new long*[kNumInputs]; + fOutputBuffers = (void**)new long*[kNumOutputs]; } else { - fInputBuffers = new float*[kNumInputs]; - fOutputBuffers = new float*[kNumOutputs]; + fInputBuffers = (void**)new float*[kNumInputs]; + fOutputBuffers = (void**)new float*[kNumOutputs]; } fInMap = new long[kNumInputs]; @@ -319,14 +319,14 @@ int JackRouter::process(jack_nframes_t nframes, void* arg) int pos = (driver->fToggle) ? 0 : driver->fBufferSize ; for (i = 0; i < driver->fActiveInputs; i++) { - if (!fFloatSample) { + if (!driver->fFloatSample) { jack_default_audio_sample_t* buffer = (jack_default_audio_sample_t*)jack_port_get_buffer(driver->fInputPorts[i], nframes); - long* in = driver->fInputBuffers[i] + pos; + long* in = (long*)driver->fInputBuffers[i] + pos; for (j = 0; j < nframes; j++) { in[j] = buffer[j] * jack_default_audio_sample_t(0x7fffffff); } } else { - memcpy(driver->fInputBuffers[i] + pos, + memcpy((float*)driver->fInputBuffers[i] + pos, jack_port_get_buffer(driver->fInputPorts[i], nframes), nframes * sizeof(jack_default_audio_sample_t)); } @@ -335,16 +335,16 @@ int JackRouter::process(jack_nframes_t nframes, void* arg) driver->bufferSwitch(); for (i = 0; i < driver->fActiveOutputs; i++) { - if (!fFloatSample) { + if (!driver->fFloatSample) { jack_default_audio_sample_t* buffer = (jack_default_audio_sample_t*)jack_port_get_buffer(driver->fOutputPorts[i], nframes); - long* out = driver->fOutputBuffers[i] + pos; + long* out = (long*)driver->fOutputBuffers[i] + pos; jack_default_audio_sample_t gain = jack_default_audio_sample_t(1)/jack_default_audio_sample_t(0x7fffffff); for (j = 0; j < nframes; j++) { buffer[j] = out[j] * gain; } } else { memcpy(jack_port_get_buffer(driver->fOutputPorts[i], nframes), - driver->fOutputBuffers[i] + pos, + (float*)driver->fOutputBuffers[i] + pos, nframes * sizeof(jack_default_audio_sample_t)); } } @@ -599,12 +599,12 @@ ASIOError JackRouter::createBuffers(ASIOBufferInfo *bufferInfos, long numChannel fInMap[fActiveInputs] = info->channelNum; if (!fFloatSample) { fInputBuffers[fActiveInputs] = new long[fBufferSize * 2]; // double buffer - } + } else { fInputBuffers[fActiveInputs] = new jack_default_audio_sample_t[fBufferSize * 2]; // double buffer } if (fInputBuffers[fActiveInputs]) { info->buffers[0] = fInputBuffers[fActiveInputs]; - info->buffers[1] = fInputBuffers[fActiveInputs] + fBufferSize; + info->buffers[1] = (fFloatSample) ? (void*)((float*)fInputBuffers[fActiveInputs] + fBufferSize) : (void*)((long*)fInputBuffers[fActiveInputs] + fBufferSize); } else { info->buffers[0] = info->buffers[1] = 0; notEnoughMem = true; @@ -635,7 +635,7 @@ error: if (fOutputBuffers[fActiveOutputs]) { info->buffers[0] = fOutputBuffers[fActiveOutputs]; - info->buffers[1] = fOutputBuffers[fActiveOutputs] + fBufferSize; + info->buffers[1] = (fFloatSample) ? (void*)((float*)fOutputBuffers[fActiveOutputs] + fBufferSize) : (void*)((long*)fOutputBuffers[fActiveOutputs] + fBufferSize); } else { info->buffers[0] = info->buffers[1] = 0; notEnoughMem = true; diff --git a/windows/Setup/JackRouter.ini b/windows/Setup/JackRouter.ini index 8a62b6a7..2be31aea 100644 --- a/windows/Setup/JackRouter.ini +++ b/windows/Setup/JackRouter.ini @@ -1,6 +1,7 @@ [IO] input=4 output=4 +float-sample=1 [AUTO_CONNECT] input=1 diff --git a/windows/Setup/src/32bits/JackRouter.dll b/windows/Setup/src/32bits/JackRouter.dll index 211104e0..50d00101 100644 Binary files a/windows/Setup/src/32bits/JackRouter.dll and b/windows/Setup/src/32bits/JackRouter.dll differ diff --git a/windows/Setup/src/64bits/JackRouter.dll b/windows/Setup/src/64bits/JackRouter.dll index 0a67b5ab..d3042c93 100644 Binary files a/windows/Setup/src/64bits/JackRouter.dll and b/windows/Setup/src/64bits/JackRouter.dll differ