[Alsa-devel] Re: HDSP 9652 MIDI - A timing disaster?

2003-01-13 Thread Paul Davis
>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



Re: [Alsa-devel] Re: HDSP 9652 MIDI - A timing disaster?

2003-01-13 Thread Mark Knecht
On Mon, 2003-01-13 at 09:04, Clemens Ladisch wrote:
> 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
> (however, I don't know if the HDSP has a FIFO at all). And it should start
> sending in output_trigger() instead of delaying it to the next timer tick.
> 
Clemens,
   Thanks for the response. One comment I forgot to make in the first
post. This MIDI interface works fine under Windows, so whatever causes
the problem is purely a Alsa MIDI issue. If we can figure it out, then
we can fix it.

   I agree that it sounds like this sort of one note per timer tick.
When the interface is supposed to send a chord, it sends what sounds
like an arpegiated chord. It's all smeared out.

   Is there some example code I could look at to understand implementing
a FIFO? However, if there is a FIFO Full indication, doesn't we need to
know _how_ it's indicated? I would assume it's different for all cards?
(Bus possibly similar for cards from the same manufacturer? 

   Also, this is the HDSP 9652, which is a single PCI card. Is this
problem showing up for the DigiFace/MultiFace type cards?

Thanks,
Mark



---
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



[Alsa-devel] Re: HDSP 9652 MIDI - A timing disaster?

2003-01-13 Thread Clemens Ladisch
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
(however, I don't know if the HDSP has a FIFO at all). And it should start
sending in output_trigger() instead of delaying it to the next timer tick.


HTH
Clemens



---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel