From: Bill C. <bil...@ou...> - 2014-08-24 10:29:09
|
Hi, First of all I would like to thank you guys for creating this great piece of software, and handing it out for free! However, I have issues with playing back midi files with TiMidity++ on Debian Wheezy/Jessy. If I play the files without using the ALSA server: timidity -Os filename.mid the playback is fine. If I play the files with the ALSA server: aplaymidi -p 128:0 filename.mid there is a lot of jitter and the notes are out of sync. This happens both with aplaymidi as with other applications (e.g. games running in dosbox and wine). I've tried to resolve the problem myself, without success: - I tried different soundfonts (both the default one and external ones) - I tried to lower the sampling frequency (which is noticeable in quality, but the jitter is still present) - I tried all available ports - The Arch wiki says that running TiMidity++ with the libao backend may solve such issues, but this backend is not compiled in the binaries of the debian repos. I therefore compiled timidity myself with this backend. The sound is not out of sync this time, but it stutters :( With the libao "verbose" option, I get these warnings: “ao_alsa debug: underrun, restarting...” (changing the buffer_time value does not help) If I change the backend of the TiMidity++ server to "output to file" (option -Ow), the resulting file does not contain any jitter or stuttering at all. Clearly there must be something wrong with the ALSA backend, but where should I look? (I don't use Pulse, as TiMidity++ has no native PulseAudio support) To illustrate the problem, I recorded samples with the snd_aloop loopback module: - Playback to file, as it should sound ( -Ow ): http://a.pomf.se/iawwsh.mp3 - Playback to alsa sequencer with alsa, out of sync ( -Os ): http://a.pomf.se/lbtdpu.mp3 - Playback to alsa sequencer with libao, stuttering ( -OO ): http://a.pomf.se/djbipx.mp3 I am really desperate at this point: any hints would be welcome! Kind regards, Bill Carson |
From: TAMUKI S. <ta...@li...> - 2014-08-25 01:53:32
|
Hello, From: Bill Carson <bil...@ou...> Subject: [timidity-talk] Out of sync playback with ALSA sequencer on Debian Date: Sun, 24 Aug 2014 12:29:01 +0200 > If I play the files without using the ALSA server: > > timidity -Os filename.mid > > the playback is fine. If I play the files with the ALSA server: > > aplaymidi -p 128:0 filename.mid > > there is a lot of jitter and the notes are out of sync. This happens > both with aplaymidi as with other applications (e.g. games running in > dosbox and wine). Perhaps, TiMidity++ ALSA sequencer interface has been running as a system service (like this: timidity -Os -iA) on Debian Wheezy/Jessy. Please try out adding "-B2,8 -q0/0" options. The fragment size is adjustable. The smaller number gives better real-time response. Adding "-B2,9" might be a good idea. $ timidity -iA -B2,9 -q0/0 --sequencer-ports=1 -EFresamp=1 & ... Requested buffer size 4096, fragment size 2048 ALSA pcm 'default' set buffer size 4096, period size 1364 bytes TiMidity starting in ALSA server mode Opening sequencer port: 128:0 $ aplaymidi -p 128:0 filename.mid Regards, TAMUKI Shoichi |
From: Bill C. <bil...@ou...> - 2014-08-25 11:08:01
|
Hello, Thanks for your prompt response! > Perhaps, TiMidity++ ALSA sequencer interface has been running as a > system service (like this: timidity -Os -iA) on Debian Wheezy/Jessy. The default timidity-daemon that is run by debian has the following parameters: -B2,8 -Os -iAD > Please try out adding "-B2,8 -q0/0" options. The fragment size is > adjustable. The smaller number gives better real-time response. > Adding "-B2,9" might be a good idea. If I run the daemon with the parameters you've given: $ timidity -iA -B2,9 -q0/0 -Os --sequencer-ports=1 -EFresamp=1 Requested buffer size 4096, fragment size 2048 ALSA pcm 'default' set buffer size 30104, period size 15052 bytes TiMidity starting in ALSA server mode Opening sequencer port: 129:0 Requested buffer size 4096, fragment size 2048 ALSA pcm 'default' set buffer size 30104, period size 15052 bytes $ aplaymidi -p 129:0 filename.mid There's still jitter. Even setting the number of fragments to 'maximum' (or minimum) (-B0) doesn't seem to have any effect. I've played around with the audio buffer size (-q) as well. Setting a smaller buffer seems to make it somewhat better, but still not as it should be. However, I've noticed that my /etc/asound.conf might have something to do with it. I have the following set there: pcm.dmixer { type dmix ipc_key 2 #unique IPC key ipc_key_add_uid TRUE slave { pcm "hw:Intel" #period_time 0 #in useconds period_size 4096 #in bytes buffer_size 131072 #in bytes rate 48000 format S32_LE } bindings { 0 0 1 1 } hint { show on description "Default sink for multiple (resampled) streams." } } I resample everything to 48kHz by default, as for some reason 44.1 sounds really distorted on my integrated DAC. Could that have something to do with it? Kind regards, Bill Carson |
From: TAMUKI S. <ta...@li...> - 2014-08-27 00:09:24
|
Hello, Sorry, I am not able to reproduce the jitter with "-B2,8" option on my environment. From: Bill Carson <bil...@ou...> Subject: Re: [timidity-talk] Out of sync playback with ALSA sequencer on Debian Date: Mon, 25 Aug 2014 13:07:53 +0200 > I resample everything to 48kHz by default, as for some reason 44.1 > sounds really distorted on my integrated DAC. Could that have > something to do with it? Perhaps, how about "-B2,8 -s48000 -Os -iAD" options? Or try out commentting out period_size and buffer_size in /etc/asound.conf. Regards, TAMUKI Shoichi |
From: Bill C. <bil...@ou...> - 2014-08-27 08:30:48
|
Hello, Thanks for your response. > Perhaps, how about "-B2,8 -s48000 -Os -iAD" options? Setting the daemon sample rate to 48kHz doesn't change anything. > Or try out commentting out period_size and buffer_size in /etc/asound.conf. Indeed, if I comment out all the extra settings (period size, buffer size and resampling frequency) in the alsa config, the daemon plays everything as should (no jitter, no stuttering). But I don't really see why those should affect timidity? How exactly does resampling the dmixer output affect timidity's timing? Oh well, I guess I'll have to learn to live with it. I do want to express my sincere appreciation for your assistance! Kind regards, Bill Carson |