[openbeos-midi] Re: Update (and SBLive midi tester wanted!)

  • From: Crain Greg <greg.crain@xxxxxxxxxxx>
  • To: "'openbeos-midi@xxxxxxxxxxxxx'" <openbeos-midi@xxxxxxxxxxxxx>
  • Date: Fri, 12 Sep 2003 12:54:48 -0400

>> There's still a few things that I am not 100% sure about.  
>The undocumented workarounds flag in the generic_mpu401_module 
>create_device() call, maybe
>:-\ 

Yup, thats one of them!  But I have a suspicion what it is.  Some soundcards do 
not implement a UART command port, only a data port, so that it is always in 
UART mode.  The generic module should not try to reset, or enter UART mode on 
these cards.  With no command port, I think the data port is slightly different 
too. I haven't seen a soundcard that does this, but they supposedly exist.

>> Is the module copied for each sound card, or is the module only 
>> loaded once and all cards share it 
>> I'm not that familiar how modules are used. 

>Kernel modules are load on demand, and when more than one driver or 
>other module call get_module() on it, he's shared between us, yes.
>However, each generic_mpu401_module "client" should call 
>create_device() first, and pass in void **out_storage argument a place 
>to keep 
>an "handle" to client specific data. That way the MPU401 module attach, 
>with client help, each specific module "client" (aka sound card driver) 
>data...
 
Okay, that makes sense.  Thats something that would still need to be added.

>> Is the midi parser even used

>Good question!
>I guess his purpose is to help midi driver coders to implement in their 
>driver a read() hook that return full, valid, MIDI event bytes, as the 
>midi server expect to get at least one event per read() call.
 
One thing that I saw was that if I ever returned anything other than a single 
byte at a time from the read_hook, the thread would die and the read_hook 
wasn't called again.   This makes sense if num_bytes=0, but I would think that 
if I had 4 bytes in the buffer, they should all be returned.  Maybe I'm doing 
something wrong still.

I will try to clean-up, debug my code over the weekend and post it monday, 
working or not.  More eyes looking at it would only help.

Greg Crain
gsc70@xxxxxxxxxxx 

Other related posts: