diff --git a/common/JackNetDriver.cpp b/common/JackNetDriver.cpp index 46f70feb..70dc2a10 100644 --- a/common/JackNetDriver.cpp +++ b/common/JackNetDriver.cpp @@ -214,7 +214,7 @@ namespace Jack plot_name = string(fParams.fName); plot_name += string("_slave"); plot_name += (fEngineControl->fSyncMode) ? string("_sync") : string("_async"); - plot_name += string("_latency"); + plot_name += string("_latency"); fNetTimeMon = new JackGnuPlotMonitor(128, 5, plot_name); string net_time_mon_fields[] = { @@ -280,14 +280,17 @@ namespace Jack jack_latency_range_t input_range; jack_latency_range_t output_range; jack_latency_range_t monitor_range; - + for (int i = 0; i < fCaptureChannels; i++) { - input_range.max = input_range.min = 0; + input_range.max = input_range.min = float(fParams.fNetworkLatency * fEngineControl->fBufferSize) / 2.f; fGraphManager->GetPort(fCapturePortList[i])->SetLatencyRange(JackCaptureLatency, &input_range); } for (int i = 0; i < fPlaybackChannels; i++) { - output_range.max = output_range.min = 0; + output_range.max = output_range.min = float(fParams.fNetworkLatency * fEngineControl->fBufferSize) / 2.f; + if (!fEngineControl->fSyncMode) { + output_range.max = output_range.min += fEngineControl->fBufferSize; + } fGraphManager->GetPort(fPlaybackPortList[i])->SetLatencyRange(JackPlaybackLatency, &output_range); if (fWithMonitorPorts) { monitor_range.min = monitor_range.max = 0; @@ -377,6 +380,7 @@ namespace Jack jack_log("JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_index, port->GetLatency()); } + UpdateLatencies(); return 0; } diff --git a/common/JackNetManager.cpp b/common/JackNetManager.cpp index 555cf690..d2fb311c 100644 --- a/common/JackNetManager.cpp +++ b/common/JackNetManager.cpp @@ -395,17 +395,30 @@ namespace Jack JackNetMaster* obj = static_cast(arg); jack_nframes_t port_latency = jack_get_buffer_size(obj->fClient); jack_latency_range_t range; - int i; - + //audio - for (i = 0; i < obj->fParams.fReturnAudioChannels; i++) { + for (int i = 0; i < obj->fParams.fSendAudioChannels; i++) { //port latency - range.min = range.max = obj->fParams.fNetworkLatency * port_latency + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency); + range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f; + jack_port_set_latency_range(obj->fAudioCapturePorts[i], JackCaptureLatency, &range); + } + + //audio + for (int i = 0; i < obj->fParams.fReturnAudioChannels; i++) { + //port latency + range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency); jack_port_set_latency_range(obj->fAudioPlaybackPorts[i], JackPlaybackLatency, &range); } - + + //midi + for (int i = 0; i < obj->fParams.fSendMidiChannels; i++) { + //port latency + range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f; + jack_port_set_latency_range(obj->fMidiCapturePorts[i], JackCaptureLatency, &range); + } + //midi - for (i = 0; i < obj->fParams.fReturnMidiChannels; i++) { + for (int i = 0; i < obj->fParams.fReturnMidiChannels; i++) { //port latency range.min = range.max = obj->fParams.fNetworkLatency * port_latency + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency); jack_port_set_latency_range(obj->fMidiPlaybackPorts[i], JackPlaybackLatency, &range); diff --git a/common/JackNetOneDriver.cpp b/common/JackNetOneDriver.cpp index 4a8b4aec..a7fc083e 100644 --- a/common/JackNetOneDriver.cpp +++ b/common/JackNetOneDriver.cpp @@ -1108,7 +1108,7 @@ extern "C" dont_htonl_floats, always_deadline, jitter_val)); if (driver->Open(period_size, sample_rate, 1, 1, capture_ports, playback_ports, - 0, "from_master_", "to_master_", 0, 0) == 0) { + 0, "from_master", "to_master", 0, 0) == 0) { return driver; } else { delete driver;