Browse Source

Correct latency for MIDI backend.

tags/1.9.8
Stephane Letz 15 years ago
parent
commit
5e19eacbea
2 changed files with 20 additions and 0 deletions
  1. +10
    -0
      common/JackMidiDriver.cpp
  2. +10
    -0
      macosx/coremidi/JackCoreMidiDriver.cpp

+ 10
- 0
common/JackMidiDriver.cpp View File

@@ -74,9 +74,12 @@ int JackMidiDriver::Attach()
jack_port_id_t port_index;
char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE];
char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE];
jack_latency_range_t latency_range;
jack_nframes_t latency = fEngineControl->fBufferSize;
int i;

jack_log("JackMidiDriver::Attach fBufferSize = %ld fSampleRate = %ld", fEngineControl->fBufferSize, fEngineControl->fSampleRate);
latency_range.max = latency_range.min = latency;

for (i = 0; i < fCaptureChannels; i++) {
snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, i + 1);
@@ -87,10 +90,16 @@ int JackMidiDriver::Attach()
}
port = fGraphManager->GetPort(port_index);
port->SetAlias(alias);
port->SetLatencyRange(JackCaptureLatency, &latency_range);
fCapturePortList[i] = port_index;
jack_log("JackMidiDriver::Attach fCapturePortList[i] port_index = %ld", port_index);
}

if (!fEngineControl->fSyncMode) {
latency += fEngineControl->fBufferSize;;
latency_range.max = latency_range.min = latency;
}

for (i = 0; i < fPlaybackChannels; i++) {
snprintf(alias, sizeof(alias) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, i + 1);
snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1);
@@ -100,6 +109,7 @@ int JackMidiDriver::Attach()
}
port = fGraphManager->GetPort(port_index);
port->SetAlias(alias);
port->SetLatencyRange(JackPlaybackLatency, &latency_range);
fPlaybackPortList[i] = port_index;
jack_log("JackMidiDriver::Attach fPlaybackPortList[i] port_index = %ld", port_index);
}


+ 10
- 0
macosx/coremidi/JackCoreMidiDriver.cpp View File

@@ -227,9 +227,12 @@ int JackCoreMidiDriver::Attach()
char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE];
char endpoint_name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE];
char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE];
jack_latency_range_t latency_range;
jack_nframes_t latency = fEngineControl->fBufferSize;
int i;

jack_log("JackCoreMidiDriver::Attach fBufferSize = %ld fSampleRate = %ld", fEngineControl->fBufferSize, fEngineControl->fSampleRate);
latency_range.max = latency_range.min = latency;

for (i = 0; i < fCaptureChannels; i++) {

@@ -249,10 +252,16 @@ int JackCoreMidiDriver::Attach()
}
port = fGraphManager->GetPort(port_index);
port->SetAlias(alias);
port->SetLatencyRange(JackCaptureLatency, &latency_range);
fCapturePortList[i] = port_index;
jack_log("JackCoreMidiDriver::Attach fCapturePortList[i] port_index = %ld", port_index);
}

if (!fEngineControl->fSyncMode) {
latency += fEngineControl->fBufferSize;;
latency_range.max = latency_range.min = latency;
}

for (i = 0; i < fPlaybackChannels; i++) {

err = MIDIObjectGetStringProperty(fMidiSource[i], kMIDIPropertyName, &pname);
@@ -271,6 +280,7 @@ int JackCoreMidiDriver::Attach()
}
port = fGraphManager->GetPort(port_index);
port->SetAlias(alias);
port->SetLatencyRange(JackPlaybackLatency, &latency_range);
fPlaybackPortList[i] = port_index;
jack_log("JackCoreMidiDriver::Attach fPlaybackPortList[i] port_index = %ld", port_index);
}


Loading…
Cancel
Save