From: "Dmitry Baikov" <dsbaikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: alsa-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
Jack Dev List
<jackit-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
linux-audio-dev-oG0YroN0ZiqENrSoib9kfje48wsgrGvP@public.gmane.org
Subject: alsaseq reorders my events
Date: Thu, 1 Mar 2007 16:35:02 +0300 [thread overview]
Message-ID: <70a871c80703010535p512ebabfke3c57d441a7fe2fb@mail.gmail.com> (raw)
Hi!
I nearly finished alsaseq driver for jackmidi, but have a problem.
Alsaseq reorders events in fast sequences, so note-on/note-off pairs got mixed.
The algorithm of sending is simple:
snd_seq_ev_schedule_real(&alsa_event, output_que, 1, ×tamp);
frame_time = jack_frame_time(self->jack);
frame_offset = event.time - frame_time;
offset = ((long long)frame_offset) * 1000000000 / rate;
timestamp.tv_sec = (long) (offset / 1000000000);
timestamp.tv_nsec = (long) (offset % 1000000000);
snd_seq_event_output(self->seq, &alsa_event);
Here are the traces of what is going on:
jackmidi_alsaseq reads events from external midi interface and send
them to another midi interface.
Log shows what is being sent to alsaseq and when. Output format is:
[event] at [event.time] ([frame_time] + [frame_offset]) (+[offset]ns)
c0ff@ace ~/src/jack/alsamidi $ ./jackmidi_alsaseq
port created: in (20:0) MIDI 1
port created: out (20:0) MIDI 1
port created: in (24:0) USB Trigger Finger MIDI 1
port created: out (24:0) USB Trigger Finger MIDI 1
port_event: ADD 130:0
port created: out (130:0) aseqdump
90 4e 7f at 86646526 (86622198 + 24328) (+506833333ns)
80 4e 40 at 86649830 (86622200 + 27630) (+575625000ns)
90 4e 7f at 86654006 (86622201 + 31805) (+662604166ns)
80 4e 40 at 86656795 (86638582 + 18213) (+379437500ns)
90 4e 7f at 86660562 (86638584 + 21978) (+457875000ns)
80 4e 40 at 86663502 (86638584 + 24918) (+519125000ns)
90 4e 7f at 86666819 (86638585 + 28234) (+588208333ns)
80 4e 40 at 86669453 (86638585 + 30868) (+643083333ns)
90 4e 7f at 86673078 (86654965 + 18113) (+377354166ns)
80 4e 40 at 86676430 (86654966 + 21464) (+447166666ns)
90 4e 6f at 86678638 (86654967 + 23671) (+493145833ns)
80 4e 40 at 86680654 (86654968 + 25686) (+535125000ns)
We can see that all events go strictly in order (their frame_time is
monotonically increasing). Frame offsets are so big, because it runs
under jackd -d dummy -p 16384.
At the same time, aseqdump is hooked to jackmidi_alsaseq output port:
c0ff@ace ~ $ aseqdump
Waiting for data at port 130:0. Press Ctrl+C to end.
Source_ Event_________________ Ch _Data__
0:1 Port subscribed 128:5 -> 130:0
0:1 Port subscribed 128:2 -> 130:0
128:2 Note on 0 78 127
128:2 Note off 0 78 64
128:2 Note off 0 78 64
128:2 Note on 0 78 127
128:2 Note on 0 78 127
128:2 Note on 0 78 127
128:2 Note off 0 78 64
128:2 Note on 0 78 127
128:2 Note off 0 78 64
128:2 Note off 0 78 64
128:2 Note on 0 78 111
128:2 Note off 0 78 64
We see, Note on/Note off events are mixed.
Your suggestions, please.
Regards,
Dmitry.
P.S. Not wanting to start a flame war, but it is exactly the case, why
it's better for jackmidi driver to use as lower-level interface as
possible - less problems, more control.
P.P.S. alsa-devels, if you reply, please CC me, i'm not subscribed.
next reply other threads:[~2007-03-01 13:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-01 13:35 Dmitry Baikov [this message]
2007-03-01 16:51 ` [Jackit-devel] [Alsa-devel] alsaseq reorders my events Rui Nuno Capela
2007-03-01 16:59 ` [Jackit-devel] " Clemens Ladisch
2007-03-01 17:23 ` Dmitry Baikov
2007-03-01 22:02 ` Rui Nuno Capela
2007-03-01 22:12 ` Lee Revell
2007-03-01 22:14 ` Dmitry Baikov
2007-03-01 22:17 ` Lee Revell
2007-03-02 10:35 ` Clemens Ladisch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=70a871c80703010535p512ebabfke3c57d441a7fe2fb@mail.gmail.com \
--to=dsbaikov-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=alsa-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=jackit-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=linux-audio-dev-oG0YroN0ZiqENrSoib9kfje48wsgrGvP@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox