Browse Source

Swapped 'alias' and 'name' for 'alsarawmidi' port names. Added debugging code to 'WinMME' driver to figure out if the waitable timers are causing jitter.

tags/1.9.8
Devin Anderson 14 years ago
parent
commit
2b589c803c
2 changed files with 35 additions and 9 deletions
  1. +10
    -9
      linux/alsarawmidi/JackALSARawMidiPort.cpp
  2. +25
    -0
      windows/winmme/JackWinMMEOutputPort.cpp

+ 10
- 9
linux/alsarawmidi/JackALSARawMidiPort.cpp View File

@@ -36,20 +36,20 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info,
char device_id[32]; char device_id[32];
snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", card, device, snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", card, device,
subdevice); subdevice);
const char *alias_prefix;
const char *alias_suffix;
const char *error_message; const char *error_message;
snd_rawmidi_t **in; snd_rawmidi_t **in;
const char *name_prefix;
snd_rawmidi_t **out; snd_rawmidi_t **out;
const char *name_suffix;
if (snd_rawmidi_info_get_stream(info) == SND_RAWMIDI_STREAM_OUTPUT) { if (snd_rawmidi_info_get_stream(info) == SND_RAWMIDI_STREAM_OUTPUT) {
alias_prefix = "system:midi_playback_";
alias_suffix = "out";
in = 0; in = 0;
name_suffix = "out";
name_prefix = "system:midi_playback_";
out = &rawmidi; out = &rawmidi;
} else { } else {
alias_prefix = "system:midi_capture_";
alias_suffix = "in";
in = &rawmidi; in = &rawmidi;
name_suffix = "in";
name_prefix = "system:midi_capture_";
out = 0; out = 0;
} }
const char *func; const char *func;
@@ -113,9 +113,10 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info,
func = "CreateNonBlockingPipe"; func = "CreateNonBlockingPipe";
goto close; goto close;
} }
snprintf(alias, sizeof(alias), "%s%d", alias_prefix, index + 1);
snprintf(name, sizeof(name), "system:%d-%d %s %d %s", card + 1, device + 1,
snd_rawmidi_info_get_name(info), subdevice + 1, name_suffix);
snprintf(alias, sizeof(alias), "system:%d-%d %s %d %s", card + 1,
device + 1, snd_rawmidi_info_get_name(info), subdevice + 1,
alias_suffix);
snprintf(name, sizeof(name), "%s%d", name_prefix, index + 1);
this->io_mask = io_mask; this->io_mask = io_mask;
return; return;
free_params: free_params:


+ 25
- 0
windows/winmme/JackWinMMEOutputPort.cpp View File

@@ -153,9 +153,34 @@ JackWinMMEOutputPort::Execute()
break; break;
} }


// Debugging code
jack_log("JackWinMMEOutputPort::Execute - waiting at %f for %f "
"milliseconds before sending message (current frame: %d, "
"send frame: %d)",
((double) current_time) / 1000.0,
((double) (frame_time - current_time)) / 1000.0,
GetFramesFromTime(current_time), event->time);
// End debugging code

if (! Wait(timer)) { if (! Wait(timer)) {
break; break;
} }

// Debugging code
jack_time_t wakeup_time = GetMicroSeconds();
jack_log("JackWinMMEOutputPort::Execute - woke up at %f.",
((double) wakeup_time) / 1000.0);
if (wakeup_time > frame_time) {
jack_log("JackWinMMEOutputPort::Execute - overslept by %f "
"milliseconds.",
((double) (wakeup_time - frame_time)) / 1000.0);
} else if (wakeup_time < frame_time) {
jack_log("JackWinMMEOutputPort::Execute - woke up %f "
"milliseconds too early.",
((double) (frame_time - wakeup_time)) / 1000.0);
}
// End debugging code

} }
jack_midi_data_t *data = event->buffer; jack_midi_data_t *data = event->buffer;
DWORD message = 0; DWORD message = 0;


Loading…
Cancel
Save