>Mark Knecht wrote:
>> I recently purchased an RME HDSP 9652 card. The card is working fine
>> for audio, but the MIDI interface is a timing disaster. The interface
>> works, but won't keep time. A 2 minute song is Rosegarden takes abut
>> 2:45 to play every time. You can hear how the HDSP isn't delivering
>> closely spaced MIDI events together, but is sort of smearing them out.
>
>The hdsp driver doesn't send more than one MIDI byte per timer tick.
>IMHO it should be modified to send in a loop until the FIFO is full
that's what this tried to do:
if (hmidi->output) {
if (!snd_rawmidi_transmit_empty (hmidi->output)) {
if ((n_pending = snd_hdsp_midi_output_possible (hmidi->hdsp,
hmidi->id)) > 0) {
if (n_pending > sizeof (buf))
n_pending = sizeof (buf);
if ((to_write = snd_rawmidi_transmit (hmidi->output,
buf, n_pending)) > 0) {
for (i = 0; i < to_write; ++i)
snd_hdsp_midi_write_byte (hmidi->hdsp,
hmidi->id, buf[i]);
} else {
clear_timer = 1;
}
}
} else {
clear_timer = 1;
}
how does this end up writing only a single byte? unless n_pending is
always either 0 or 1, which on closer inspection, i see that it is
... yikes.
>(however, I don't know if the HDSP has a FIFO at all). And it should start
it does have a FIFO.
>sending in output_trigger() instead of delaying it to the next timer tick.
hmm. i modelled this code on another PCI driver that had MIDI
support. is there an example you can point me to that starts from
within the equivalent output_trigger?
--p
-------------------------------------------------------
This SF.NET email is sponsored by: FREE SSL Guide from Thawte
are you planning your Web Server Security? Click here to get a FREE
Thawte SSL guide and find the answers to all your SSL security issues.
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel