* Re: USB fix (debian bug#100041)
[not found] <E18sngu-0000w3-00@sc8-sf-list2.sourceforge.net>
@ 2003-03-11 20:05 ` Pedro Lopez-Cabanillas
2003-03-12 9:37 ` Clemens Ladisch
0 siblings, 1 reply; 6+ messages in thread
From: Pedro Lopez-Cabanillas @ 2003-03-11 20:05 UTC (permalink / raw)
To: Jordi Mallach, Clemens Ladisch; +Cc: alsa-devel
On Tuesday 11 March 2003 18:36, Clemens Ladisch wrote:
> Jordi Mallach wrote:
> > any comment on the last "stacatto" bug I reported after the big
> > report?
>
> I couldn't reproduce it on my machine (current CVS instead of 0.9.0beta8,
> 2.4.18 instead of 2.4.2, Roland Sound Canvas connected with USB instead of
> SB MIDI port).
>
> I have noticed that calling SNDCTL_SEQ_RESET (as well as close()ing the
> handle to /dev/music) sends "all notes off", "controller reset" and
> pitch-bend messages to all channels on all ports, but that should result
> in a delay of at most 40ms before the first note, and not in a timing
> problem at a later note.
After that messages, there is a 0xfe (Active Sensing) message (the rawmidi
close() default policy). Running the test program with a Roland SC-88
(connected with a MIDI cable to some interface drived by ALSA) it shows this
effect (first long note is clearly shortened). After the program reachs a
delay of about 300ms the problem is solved, so i think that the Active
Sensing can be guilty here.
There is a description of ActiveSensing messages here:
http://www.midi.org/about-midi/table1.shtml
Active Sensing.
Use of this message is optional. When
initially sent, the receiver will expect
to receive another Active Sensing message
each 300ms (max), or it will be assume
that the connection has been terminated.
At termination, the receiver will turn off
all voices and return to normal (non-
active sensing) operation.
I have to say that with my other external synth (an old Roland JV-80) the test
program runs fine (every note with the right length), but shows a "Midi
Communication Error" in it's LCD display. The SC-88 shows another error
message saying "Midi Off Line" every time a program close()s a rawmidi or OSS
device.
I know that using ALSA rawmidi API, there is a function to prevent this, doing
something like this:
snd_rawmidi_t *handle_out;
snd_rawmidi_params_t *params;
[...]
snd_rawmidi_params_malloc(¶ms);
snd_rawmidi_params_current(handle_out, params);
snd_rawmidi_params_set_no_active_sensing(handle_out, params, 1);
snd_rawmidi_params(handle_out, params);
snd_rawmidi_params_free(params);
But, how to do something like that for OSS programs? (without fixing the OSS
program itself, of course)
Another way that i have tried to workaround the problem is redirect some
source of Active Sensing events (using ALSA's aconnect, for instance) to the
same output port (72:0) of the test program. This works, but is not a
definitive solution at all.
BTW: my ALSA client 72 is a Midisport2x2. I can use it with a GPL firmware and
also with the Midiman's propietary firmware, as you know. Modifying the GPL
firmware, i can block all the ActiveSensing events if i want. Isn't free
software great? :-)
Regards,
Pedro
--
ALSA Library Bindings for Pascal
http://alsapas.alturl.com
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: USB fix (debian bug#100041)
2003-03-11 20:05 ` USB fix (debian bug#100041) Pedro Lopez-Cabanillas
@ 2003-03-12 9:37 ` Clemens Ladisch
2003-03-12 9:54 ` Jaroslav Kysela
0 siblings, 1 reply; 6+ messages in thread
From: Clemens Ladisch @ 2003-03-12 9:37 UTC (permalink / raw)
To: Pedro Lopez-Cabanillas; +Cc: Jordi Mallach, alsa-devel
Pedro Lopez-Cabanillas wrote:
> On Tuesday 11 March 2003 18:36, Clemens Ladisch wrote:
> > Jordi Mallach wrote:
> > > any comment on the last "stacatto" bug I reported after the big
> > > report?
> >
> > I couldn't reproduce it on my machine (current CVS instead of 0.9.0beta8,
> > 2.4.18 instead of 2.4.2, Roland Sound Canvas connected with USB instead of
> > SB MIDI port).
> >
> > I have noticed that calling SNDCTL_SEQ_RESET (as well as close()ing the
> > handle to /dev/music) sends "all notes off", "controller reset" and
> > pitch-bend messages to all channels on all ports, but that should result
> > in a delay of at most 40ms before the first note, and not in a timing
> > problem at a later note.
>
> After that messages, there is a 0xfe (Active Sensing) message (the rawmidi
> close() default policy). Running the test program with a Roland SC-88
> (connected with a MIDI cable to some interface drived by ALSA) it shows this
> effect (first long note is clearly shortened). After the program reachs a
> delay of about 300ms the problem is solved, so i think that the Active
> Sensing can be guilty here.
Yes, that's it! My SC-8820 doesn't care for Active Sensing because the
connection status is handled by the USB protocol.
> I have to say that with my other external synth (an old Roland JV-80) the test
> program runs fine (every note with the right length), but shows a "Midi
> Communication Error" in it's LCD display. The SC-88 shows another error
> message saying "Midi Off Line" every time a program close()s a rawmidi or OSS
> device.
One could say "This behaviour is by design", but that's a Microsoft quote.
;-)
> I know that using ALSA rawmidi API, there is a function to prevent this, doing
> something like this:
> snd_rawmidi_params_set_no_active_sensing(handle_out, params, 1);
> But, how to do something like that for OSS programs? (without fixing the OSS
> program itself, of course)
Neither OSS nor ALSA sequencer ports can change parameters of the
underlying rawmidi port. Maybe there should be a module parameter for
this.
Regards,
Clemens
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: USB fix (debian bug#100041)
2003-03-12 9:37 ` Clemens Ladisch
@ 2003-03-12 9:54 ` Jaroslav Kysela
2003-03-12 11:10 ` Clemens Ladisch
2003-03-12 12:44 ` Takashi Iwai
0 siblings, 2 replies; 6+ messages in thread
From: Jaroslav Kysela @ 2003-03-12 9:54 UTC (permalink / raw)
To: Clemens Ladisch
Cc: Pedro Lopez-Cabanillas, Jordi Mallach,
alsa-devel@lists.sourceforge.net
On Wed, 12 Mar 2003, Clemens Ladisch wrote:
> > I know that using ALSA rawmidi API, there is a function to prevent this, doing
> > something like this:
> > snd_rawmidi_params_set_no_active_sensing(handle_out, params, 1);
> > But, how to do something like that for OSS programs? (without fixing the OSS
> > program itself, of course)
>
> Neither OSS nor ALSA sequencer ports can change parameters of the
> underlying rawmidi port. Maybe there should be a module parameter for
> this.
Yes, if this behaviour causes troubles, we can specify the reset behaviour
via a module parameter.
Perhaps, the best solution is to implement a control element which will
define the "reset" byte sequence when the rawmidi device is closed. Then
users might configure things themselves.
We can also rename snd_rawmidi_params_set_no_active_sensing() to
snd_rawmidi_params_set_no_reset().
Opinions?
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: USB fix (debian bug#100041)
2003-03-12 9:54 ` Jaroslav Kysela
@ 2003-03-12 11:10 ` Clemens Ladisch
2003-03-12 12:44 ` Takashi Iwai
1 sibling, 0 replies; 6+ messages in thread
From: Clemens Ladisch @ 2003-03-12 11:10 UTC (permalink / raw)
To: Jaroslav Kysela; +Cc: Pedro Lopez-Cabanillas, alsa-devel@lists.sourceforge.net
Jaroslav Kysela wrote:
> On Wed, 12 Mar 2003, Clemens Ladisch wrote:
> > Neither OSS nor ALSA sequencer ports can change parameters of the
> > underlying rawmidi port. Maybe there should be a module parameter for
> > this.
>
> Yes, if this behaviour causes troubles, we can specify the reset behaviour
> via a module parameter.
>
> Perhaps, the best solution is to implement a control element which will
> define the "reset" byte sequence when the rawmidi device is closed. Then
> users might configure things themselves.
Yes. 0xFE, 0xFF, GM/GS/XG reset, or nothing may be usful in specific
situations.
> Opinions?
Seems to be a Good Thing(TM).
Regards,
Clemens
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: USB fix (debian bug#100041)
2003-03-12 9:54 ` Jaroslav Kysela
2003-03-12 11:10 ` Clemens Ladisch
@ 2003-03-12 12:44 ` Takashi Iwai
2003-03-12 12:49 ` Jaroslav Kysela
1 sibling, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2003-03-12 12:44 UTC (permalink / raw)
To: Jaroslav Kysela
Cc: Clemens Ladisch, Pedro Lopez-Cabanillas, Jordi Mallach,
alsa-devel@lists.sourceforge.net
At Wed, 12 Mar 2003 10:54:26 +0100 (CET),
Jaroslav wrote:
>
> On Wed, 12 Mar 2003, Clemens Ladisch wrote:
>
> > > I know that using ALSA rawmidi API, there is a function to prevent this, doing
> > > something like this:
> > > snd_rawmidi_params_set_no_active_sensing(handle_out, params, 1);
> > > But, how to do something like that for OSS programs? (without fixing the OSS
> > > program itself, of course)
> >
> > Neither OSS nor ALSA sequencer ports can change parameters of the
> > underlying rawmidi port. Maybe there should be a module parameter for
> > this.
>
> Yes, if this behaviour causes troubles, we can specify the reset behaviour
> via a module parameter.
>
> Perhaps, the best solution is to implement a control element which will
> define the "reset" byte sequence when the rawmidi device is closed. Then
> users might configure things themselves.
yes. we can use IFACE_RAWMIDI for this control.
in which layer the implementation should come? in the rawmidi
commonly?
> We can also rename snd_rawmidi_params_set_no_active_sensing() to
> snd_rawmidi_params_set_no_reset().
sounds better.
Takashi
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: USB fix (debian bug#100041)
2003-03-12 12:44 ` Takashi Iwai
@ 2003-03-12 12:49 ` Jaroslav Kysela
0 siblings, 0 replies; 6+ messages in thread
From: Jaroslav Kysela @ 2003-03-12 12:49 UTC (permalink / raw)
To: Takashi Iwai
Cc: Clemens Ladisch, Pedro Lopez-Cabanillas, Jordi Mallach,
alsa-devel@lists.sourceforge.net
On Wed, 12 Mar 2003, Takashi Iwai wrote:
> At Wed, 12 Mar 2003 10:54:26 +0100 (CET),
> Jaroslav wrote:
> >
> > On Wed, 12 Mar 2003, Clemens Ladisch wrote:
> >
> > > > I know that using ALSA rawmidi API, there is a function to prevent this, doing
> > > > something like this:
> > > > snd_rawmidi_params_set_no_active_sensing(handle_out, params, 1);
> > > > But, how to do something like that for OSS programs? (without fixing the OSS
> > > > program itself, of course)
> > >
> > > Neither OSS nor ALSA sequencer ports can change parameters of the
> > > underlying rawmidi port. Maybe there should be a module parameter for
> > > this.
> >
> > Yes, if this behaviour causes troubles, we can specify the reset behaviour
> > via a module parameter.
> >
> > Perhaps, the best solution is to implement a control element which will
> > define the "reset" byte sequence when the rawmidi device is closed. Then
> > users might configure things themselves.
>
> yes. we can use IFACE_RAWMIDI for this control.
> in which layer the implementation should come? in the rawmidi
> commonly?
Yes, it belongs to the midlevel code - alsa-kernel/code/rawmidi.c.
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2003-03-12 12:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <E18sngu-0000w3-00@sc8-sf-list2.sourceforge.net>
2003-03-11 20:05 ` USB fix (debian bug#100041) Pedro Lopez-Cabanillas
2003-03-12 9:37 ` Clemens Ladisch
2003-03-12 9:54 ` Jaroslav Kysela
2003-03-12 11:10 ` Clemens Ladisch
2003-03-12 12:44 ` Takashi Iwai
2003-03-12 12:49 ` Jaroslav Kysela
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.