Re: ALSA midi problems Was: Re: [linux-audio-dev] disk-based sampler:

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: ALSA midi problems Was: Re: [linux-audio-dev] disk-based sampler:
From: Benno Senoner (sbenno_AT_gardena.net)
Date: Sat Jul 15 2000 - 00:49:18 EEST


On Fri, 14 Jul 2000, Chris Baugher wrote:
> Ok... I fixed the mlock problem, just needed to change the max voices and
> streams.
>
> I tried putting different values for usleep in the MidiIn main loop and
> found that usleep(150000) seems to work the best. Now when I hit a note I
> can hear a sine wave corresponding to the pitch of the particular note.
> The "resource not available" error stills appears occasionally but now I
> can at least get a few notes out. If I make the usleep() time smaller the
> error happens more often.

can you please try this patch ( patch -p0 < this patchfile)

--- midiin.cpp Thu Jul 13 13:31:51 2000
+++ midiin-test.cpp Fri Jul 14 23:45:50 2000
@@ -206,10 +206,10 @@

   i=0;
   while(1) {
- res=read(midifd,&buffer[i],1);
- if(res<0) {
- perror("ERROR in read_midi_bytes: read");
- exit(0);
+ while(1) {
+ res=read(midifd,&buffer[i],1);
+ if(res >=0) break;
+ usleep(20000);
     }
     d_printf("read_midi_bytes: char=%x dec=%d i=%d len=%d\n",buffer[i],buffer[i],i,len);

it basically checks if the read() from the raw midi device was successful,
if not it sleeps 20msec and retries until success , this will hurt MIDI timing
but at least the application will not exit anymore.

ALSA folks, do I have to use NON BLOCKING IO plus select() when accessing to
raw MIDI in devices ?

If this is true, is there any particular reason why the BLOCKING mode was
removed. A blocking read() should be more efficient than select() plus
non-blocking read() right ?
Correct me if I am wrong plese.

let us know

Benno.


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sat Jul 15 2000 - 00:18:44 EEST