diff --git a/windows/JackRouter/JackRouter.cpp b/windows/JackRouter/JackRouter.cpp index 6d177f08..3afe6482 100644 --- a/windows/JackRouter/JackRouter.cpp +++ b/windows/JackRouter/JackRouter.cpp @@ -821,6 +821,7 @@ void JackRouter::RestoreConnections() fConnections.clear(); } + //------------------------------------------------------------------------------------------ void JackRouter::AutoConnect() { @@ -831,12 +832,21 @@ void JackRouter::AutoConnect() } else { if (fAutoConnectIn) { for (int i = 0; i < fActiveInputs; i++) { + /* if (!ports[i]) { printf("source port is null i = %ld\n", i); break; } else if (jack_connect(fClient, ports[i], jack_port_name(fInputPorts[i])) != 0) { printf("Cannot connect input ports\n"); } + */ + long ASIO_channel = fInMap[i]; + if (!ports[ASIO_channel]) { + printf("source port is null ASIO_channel = %ld\n", ASIO_channel); + break; + } else if (jack_connect(fClient, ports[ASIO_channel], jack_port_name(fInputPorts[i])) != 0) { + printf("Cannot connect input ports\n"); + } } } jack_free(ports); @@ -847,12 +857,21 @@ void JackRouter::AutoConnect() } else { if (fAutoConnectOut) { for (int i = 0; i < fActiveOutputs; i++) { - if (!ports[i]){ + /* + if (!ports[i]){ printf("destination port is null i = %ld\n", i); break; } else if (jack_connect(fClient, jack_port_name(fOutputPorts[i]), ports[i]) != 0) { printf("Cannot connect output ports\n"); } + */ + long ASIO_channel = fOutMap[i]; + if (!ports[ASIO_channel]){ + printf("destination port is null ASIO_channel = %ld\n", ASIO_channel); + break; + } else if (jack_connect(fClient, jack_port_name(fOutputPorts[i]), ports[ASIO_channel]) != 0) { + printf("Cannot connect output ports\n"); + } } } jack_free(ports); diff --git a/windows/portaudio/JackPortAudioDevices.cpp b/windows/portaudio/JackPortAudioDevices.cpp index b9f44751..eab9676a 100644 --- a/windows/portaudio/JackPortAudioDevices.cpp +++ b/windows/portaudio/JackPortAudioDevices.cpp @@ -228,7 +228,7 @@ void PortAudioDevices::DisplayDevicesNames() } /* print device info fields */ - jack_info ("Name = %s", GetFullName (id).c_str()); + jack_info ("Name = %s", GetFullName(id).c_str()); jack_info ("Max inputs = %d", fDeviceInfo[id]->maxInputChannels); jack_info ("Max outputs = %d", fDeviceInfo[id]->maxOutputChannels); @@ -269,7 +269,7 @@ void PortAudioDevices::DisplayDevicesNames() jack_info("**************************** End of list ****************************"); } -bool PortAudioDevices::IsDuplex (PaDeviceIndex id) +bool PortAudioDevices::IsDuplex(PaDeviceIndex id) { //does the device has in and out facilities if (fDeviceInfo[id]->maxInputChannels && fDeviceInfo[id]->maxOutputChannels) { @@ -277,7 +277,7 @@ bool PortAudioDevices::IsDuplex (PaDeviceIndex id) } //else is another complementary device ? (search in devices with the same name) for (PaDeviceIndex i = 0; i < fNumDevice; i++) { - if ((i != id) && (GetDeviceName (i) == GetDeviceName (id))) { + if ((i != id) && (GetDeviceName(i) == GetDeviceName(id))) { if ((fDeviceInfo[i]->maxInputChannels && fDeviceInfo[id]->maxOutputChannels) || (fDeviceInfo[i]->maxOutputChannels && fDeviceInfo[id]->maxInputChannels)) { return true; diff --git a/windows/portaudio/JackPortAudioDriver.cpp b/windows/portaudio/JackPortAudioDriver.cpp index 2ffb457c..d9841773 100644 --- a/windows/portaudio/JackPortAudioDriver.cpp +++ b/windows/portaudio/JackPortAudioDriver.cpp @@ -248,6 +248,29 @@ int JackPortAudioDriver::Close() return res; } +int JackPortAudioDriver::Attach() +{ + if (JackAudioDriver::Attach() == 0) { + + char alias[REAL_JACK_PORT_NAME_SIZE]; + + for (int i = 0; i < fCaptureChannels; i++) { + snprintf(alias, sizeof(alias), "%s:out%d", fPaDevices->GetDeviceName(fInputDevice), i + 1); + JackPort* port = fGraphManager->GetPort(fCapturePortList[i]); + port->SetAlias(alias); + } + + for (int i = 0; i < fPlaybackChannels; i++) { + snprintf(alias, sizeof(alias), "%s:in%d", fPaDevices->GetDeviceName(fOutputDevice), i + 1); + JackPort* port = fGraphManager->GetPort(fPlaybackPortList[i]); + port->SetAlias(alias); + } + + } else { + return -1; + } +} + int JackPortAudioDriver::Start() { jack_log("JackPortAudioDriver::Start"); diff --git a/windows/portaudio/JackPortAudioDriver.h b/windows/portaudio/JackPortAudioDriver.h index c40810d6..82168790 100644 --- a/windows/portaudio/JackPortAudioDriver.h +++ b/windows/portaudio/JackPortAudioDriver.h @@ -79,6 +79,8 @@ class JackPortAudioDriver : public JackMMCSS, public JackAudioDriver jack_nframes_t playback_latency); int Close(); + + int Attach(); int Start(); int Stop();