diff --git a/linux/firewire/JackFFADODriver.cpp b/linux/firewire/JackFFADODriver.cpp index 417bb247b..d40f86aa1 100644 --- a/linux/firewire/JackFFADODriver.cpp +++ b/linux/firewire/JackFFADODriver.cpp @@ -442,6 +442,10 @@ int JackFFADODriver::Attach() char fw_portname[REAL_JACK_PORT_NAME_SIZE]; char jack_portname[REAL_JACK_PORT_NAME_SIZE+1]; char alias[REAL_JACK_PORT_NAME_SIZE + sizeof(ALIAS_NAME) + 100]; + unsigned int audio_c_chn; + unsigned int audio_p_chn; + unsigned int midi_c_chn; + unsigned int midi_p_chn; ffado_driver_t* driver = (ffado_driver_t*)fDriver; @@ -505,18 +509,21 @@ int JackFFADODriver::Attach() } fCaptureChannels = 0; + audio_c_chn = 0; + midi_c_chn = 0; for (channel_t chn = 0; chn < driver->capture_nchannels; chn++) { ffado_streaming_get_capture_stream_name(driver->dev, chn, fw_portname, sizeof(fw_portname)); driver->capture_channels[chn].stream_type = ffado_streaming_get_capture_stream_type(driver->dev, chn); - snprintf( - jack_portname, sizeof(jack_portname), - "%s:capture_%d", fClientControl.fName, (int)chn + 1); - // capture port aliases (jackd1 style port names) - snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_in", fw_portname); - if (driver->capture_channels[chn].stream_type == ffado_stream_type_audio) { + audio_c_chn++; + snprintf( + jack_portname, sizeof(jack_portname), + "%s:capture_%u", fClientControl.fName, audio_c_chn); + // capture port aliases (jackd1 style port names) + snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_in", fw_portname); + printMessage ("Registering audio capture port %s (%s)", jack_portname, alias); if (fEngine->PortRegister(fClientControl.fRefNum, jack_portname, JACK_DEFAULT_AUDIO_TYPE, @@ -541,6 +548,13 @@ int JackFFADODriver::Attach() jack_log("JackFFADODriver::Attach fCapturePortList[i] %ld ", port_index); fCaptureChannels++; } else if (driver->capture_channels[chn].stream_type == ffado_stream_type_midi) { + midi_c_chn++; + snprintf( + jack_portname, sizeof(jack_portname), + "%s:midi_capture_%u", fClientControl.fName, midi_c_chn); + // capture port aliases (jackd1 style port names) + snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_in", fw_portname); + printMessage ("Registering midi capture port %s (%s)", jack_portname, alias); if (fEngine->PortRegister(fClientControl.fRefNum, jack_portname, JACK_DEFAULT_MIDI_TYPE, @@ -584,18 +598,21 @@ int JackFFADODriver::Attach() } fPlaybackChannels = 0; + audio_p_chn = 0; + midi_p_chn = 0; for (channel_t chn = 0; chn < driver->playback_nchannels; chn++) { ffado_streaming_get_playback_stream_name(driver->dev, chn, fw_portname, sizeof(fw_portname)); driver->playback_channels[chn].stream_type = ffado_streaming_get_playback_stream_type(driver->dev, chn); - snprintf( - jack_portname, sizeof(jack_portname), - "%s:playback_%d", fClientControl.fName, (int)chn + 1); - // playback port aliases (jackd1 style port names) - snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_out", fw_portname); - if (driver->playback_channels[chn].stream_type == ffado_stream_type_audio) { + audio_p_chn++; + snprintf( + jack_portname, sizeof(jack_portname), + "%s:playback_%u", fClientControl.fName, audio_p_chn); + // playback port aliases (jackd1 style port names) + snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_out", fw_portname); + printMessage ("Registering audio playback port %s (%s)", jack_portname, alias); if (fEngine->PortRegister(fClientControl.fRefNum, jack_portname, JACK_DEFAULT_AUDIO_TYPE, @@ -621,6 +638,13 @@ int JackFFADODriver::Attach() jack_log("JackFFADODriver::Attach fPlaybackPortList[i] %ld ", port_index); fPlaybackChannels++; } else if (driver->playback_channels[chn].stream_type == ffado_stream_type_midi) { + midi_p_chn++; + snprintf( + jack_portname, sizeof(jack_portname), + "%s:midi_playback_%u", fClientControl.fName, midi_p_chn); + // playback port aliases (jackd1 style port names) + snprintf(alias, sizeof(alias), ALIAS_NAME ":%s_out", fw_portname); + printMessage ("Registering midi playback port %s (%s)", jack_portname, alias); if (fEngine->PortRegister(fClientControl.fRefNum, jack_portname,