From: Arthur Marsh <arthur.marsh@internode.on.net>
To: Clemens Ladisch <clemens@ladisch.de>
Cc: alsa-devel@alsa-project.org
Subject: Re: MIDI playback not keeping steady time with recent kernels
Date: Wed, 09 Feb 2011 01:49:25 +1030 [thread overview]
Message-ID: <4D515EFD.3040909@internode.on.net> (raw)
In-Reply-To: <4D512EA9.2020909@ladisch.de>
Clemens Ladisch wrote, on 08/02/11 22:23:
> Arthur Marsh wrote:
>>>> Arthur Marsh wrote, on 05/02/11 17:30:
>>>>> MIDI playback either through xmms or aplaymidi won't keep regular time,
>>>>> sounding weird going faster and slower under any kind of system load
>>>>> except when nothing else is running.
>>
>> I've tried setting "options snd-timer timer_limit=x" where x is anywhere
>> from 5 down to 0, and seeing either:
>>
>> $ cat /proc/asound/seq/timer
>> Timer for queue 0 : HR timer
>> Period time : 0.004000250
>> Skew : 65536 / 65536
>>
>> or "system timer" in place of "HR timer".
>>
>> In all cases, under sufficient load (which might be just running
>> aptitude -u), the tempo of the MIDI file play-back slows right down.
>
> The ALSA interfaces of both the system timer and the HR timer do not
> handle delayed interrupts correctly. Please try the patch below, and if
> it fixes the HR timer, tell me if you're OK with the published tag
> Reported-and-tested-by: Arthur Marsh<arthur.marsh@internode.on.net>.
>
>
> Regards,
> Clemens
>
> --- a/sound/core/hrtimer.c
> +++ b/sound/core/hrtimer.c
> @@ -45,12 +45,13 @@ static enum hrtimer_restart snd_hrtimer_
> {
> struct snd_hrtimer *stime = container_of(hrt, struct snd_hrtimer, hrt);
> struct snd_timer *t = stime->timer;
> + unsigned long oruns;
>
> if (!atomic_read(&stime->running))
> return HRTIMER_NORESTART;
>
> - hrtimer_forward_now(hrt, ns_to_ktime(t->sticks * resolution));
> - snd_timer_interrupt(stime->timer, t->sticks);
> + oruns = hrtimer_forward_now(hrt, ns_to_ktime(t->sticks * resolution));
> + snd_timer_interrupt(stime->timer, t->sticks * oruns);
>
> if (!atomic_read(&stime->running))
> return HRTIMER_NORESTART;
>
OK, I applied this patch.
When the MIDI file was playing:
$ cat /proc/asound/seq/timer
Timer for queue 0 : HR timer
Period time : 0.004000250
Skew : 65536 / 65536
I still experienced some slow-down and speed-up under heavy load.
Thanks for the patch. I'm happy to do any further testing you can suggest.
Regards,
Arthur.
next prev parent reply other threads:[~2011-02-08 15:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <559v18-575.ln1@ppp121-45-136-118.lns11.adl6.internode.on.net>
[not found] ` <bma128-mok.ln1@ppp121-45-136-118.lns11.adl6.internode.on.net>
[not found] ` <elo128-8u4.ln1@ppp121-45-136-118.lns11.adl6.internode.on.net>
[not found] ` <11c228-725.ln1@ppp121-45-136-118.lns11.adl6.internode.on.net>
2011-02-08 11:53 ` MIDI playback not keeping steady time with recent kernels Clemens Ladisch
2011-02-08 15:19 ` Arthur Marsh [this message]
2011-02-08 15:40 ` Clemens Ladisch
2011-02-09 0:51 ` Arthur Marsh
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=4D515EFD.3040909@internode.on.net \
--to=arthur.marsh@internode.on.net \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
/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;
as well as URLs for NNTP newsgroup(s).