Even on my Intel Core i7 (2.8 GHz quad-core) I am able to get Fluidsynth
to cause xruns when playing really fast on a stereo piano sound that I
have (voice polyphony at 256).  As I am playing fast arpeggios with the
pedal down, I can watch the jack dsp load (as reported by Cadence) go
higher and higher until a slew of xruns all hit at once, ruining the
sound.  I have jack latency set at 2 buffers of 256 samples.  I haven't
tested this with older versions, but it doesn't seem right to me that
FluidSynth should fail like this on such a fast processor.  The CPU
usage doesn't even seem to be very high at all.

Here is the piano SoundFont I was testing this with:
https://dl.dropbox.com/u/8126161/Splendid%20Grand-normal%20FluidSynth%20v2.tar.bz

You may keep the SoundFont for your own personal use, but please don't
spread it around.  While the samples are in the public domain, the
sample programming was done for a commercial project, and I don't think
the copyright holders would be happy about me publishing it online.

How to reproduce: Using the first preset in the SoundFont, hold down the
pedal and go nuts.  When playing very fast (I have a master's degree in
piano performance), it doesn't take long for me to start getting xruns.

Aere, how can I test the version from the PPA so I can compare?  Also,
how do you pronounce your name?  I'm just curious :)

Thanks,
-~Chris


On 08/02/2012 05:31 PM, Aere Greenway wrote:
> David and all:
>
> I spent some time today trying to run the test on my 450 megahertz
> machine.  It was good that I did, in that I was able (finally) to
> successfully run the test. 
>
> The release-candidate fluidsynth will not successfully play my
> demo-pieces on a 450 megahertz machine, while your PPA for Ubuntu
> 11.10 (that I re-packaged for 12.04) plays it perfectly, and without
> any under-runs.  That's a pretty significant difference. 
>
> Here are the details of the testing I performed:
>
> I first applied updates for anything with "pulse" (as in pulseaudio)
> in it, as well as anything with "alsa" in it - specifically libasound2. 
>
> I then tried running the test, but qjackctl still crashed. 
>
> I got some diagnostic information on it, but where you said there is
> no dependency of fluidsynth on jack, I totally removed (purged) jackd
> and qjactctl, and re-installed them. 
>
> I noticed in what got re-installed, it used jackd2, where your build
> process seems to insist on jackd1.  Also, your build process seems to
> install development versions of jackd, but re-installing used
> non-development versions. 
>
> After re-installing, qjackctl and qsynth initialized successfully!  So
> I was now in-business. 
>
> I then brought up Rosegarden, and played the demo-piece that qsynth
> has been unable to play without your PPA version of libfluidsynth1. 
>
> It start out okay, but within a few seconds, the sound that was
> generated was crashing chords, one per second, with short pauses in
> between each second.  There were many under-runs, and the system was
> performing sluggishly.  It took me a quite awhile to get the mouse
> cursor over to where I could click the Rosegarden "Stop" button, and
> then it took awhile to finally stop. 
>
> I then followed your instructions on how to un-install the
> release-candidate fluidsynth, restoring the original, and ran the test
> again. 
>
> This time, it played flawlessly, though at the end, qjackctl showed a
> few under-runs (which I hadn't heard). 
>
> I hadn't checked if the under-runs were there when I re-connected
> Rosegarden to Qsynth, so I cleared the under-run count and played it
> through again. 
>
> Before starting it, I noticed the "Reverb" check-box of Qsynth was
> checked, which adds overhead (I don't even try the "Chorus" check-box
> on slow machines).  So before starting the piece, I un-checked the
> "Reverb" check-box. 
>
> It played flawlessly all the way through, without a single under-run. 
> While it was playing, the RT-percentage displayed by qjackctl was
> hovering around 70%.
>
> Just to be thorough, I re-selected the "Reverb" check-box of Qsynth,
> and played it through again. 
>
> It again played flawlessly, with no under-runs, though the
> RT-percentage displayed by qjackctl was now hovering around 79% (so
> reverb added about 9 percent to the real-time overhead). 
>
> My conclusions from the testing, are that the increased real-time
> percentage I observed in my faster machine's Ubuntu partition was
> indeed an indicator of big problems for slower machines.  The testing
> showed that the release-candidate fluidsynth could not play the demo
> piece at all on a 450 megahertz machine. 
>
> I really hope that newer versions of fluidsynth will not abandon
> slower machines altogether.  If there are features that have been
> added that are adding the overhead, it would be good to have some way
> of turning these features off, rather than abandoning the slower
> machines. 
>
> By the way, if you would like to test with this infamous demo piece, I
> will be happy send it to you as an attachment, a MIDI (.mid) file. 
>
> Also, it is good to be aware that another thing I configure
> differently to avoid overhead on slower machines, is to set the
> polyphony parameter to 64 (rather than the default of 256). 
>
> On the faster machine (the Ubuntu partition) that succeeded in playing
> the piece, I also limited the polyphony configuration value to 64. 
>
> Now that I can run the tests on that machine, please let me know if
> there is further testing you would like me to run, or if you have a
> fixed-version to test. 
>
>
> - Aere
>
>
> On Thu, 2012-08-02 at 17:55 +0200, David Henningsson wrote:
>> On 08/02/2012 07:45 AM, Aere Greenway wrote:
>> > David:
>> >
>> > I ran the test on a partition I was planning on replacing (to minimize
>> > risk to my other testing).
>> >
>> > A side-effect of that decision, is that it was done on a non-updated
>> > system.  In fact, the crash-report generated for it, indicated it wasn't
>> > reportable because of an obsolete version of libasound.so (or something
>> > like that).
>> >
>> > I didn't update it because updates on a 450 megahertz machine take a lot
>> > of time, and I was going to replace the partition anyway.
>> >
>> > It seemed to me (as I watched the build process) that it was complaining
>> > about jackd1 vs. jackd2.
>>
>> Please verify that you're still running the jack version you expect. If 
>> the build process switched jack version for you, you can switch it back 
>> (just install the right version again). This is just because the 
>> development package is not switching as well as the library package in 
>> Debian. FluidSynth can run against either version.
>>
>> > But when I went to get the listings of the
>> > build process, the file (written by abiword, which also had significant
>> > problems in this release) had somehow been garbled, and could not be
>> > read by Libre Office - so I lost my build listings!
>> >
>> > I am pretty sure the build process was what caused problems for
>> > qjackctl, because I only use that machine for testing, and the last
>> > thing I (most likely) did on it was the same test I was trying to run
>> > with the new fluidsynth.  I'm sure it was successful before, because I
>> > always run those tests on new systems.
>> >
>> > I did not manually copy any '.so' files.
>> >
>> > Here is what I was able to collect of the problem:
>> >
>> > aere@Aere-HP-Vectra <mailto:aere@Aere-HP-Vectra>:~$ gdb qjackctl
>> > GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04
>> > Copyright (C) 2012 Free Software Foundation, Inc.
>> > License GPLv3+: GNU GPL version 3 or later
>> > <http://gnu.org/licenses/gpl.html>
>> > This is free software: you are free to change and redistribute it.
>> > There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>> > and "show warranty" for details.
>> > This GDB was configured as "i686-linux-gnu".
>> > For bug reporting instructions, please see:
>> > <http://bugs.launchpad.net/gdb-linaro/>...
>> > "/usr/bin/qjackctl": not in executable format: File format not recognized
>>
>> Hrm, next time instead run "gdb /usr/lib/qjackctl/qjackctl.real", as 
>> qjackctl is a wrapper script. :-/
>>
>> > (gdb)
>> >
>> > FROM QJACKCTL MESSAGES:
>> >
>> > 12:37:43.266 Patchbay deactivated.
>> > 12:37:43.361 Statistics reset.
>> > 12:37:43.659 ALSA connection change.
>> > 12:37:43.751 D-BUS: Service not available (org.jackaudio.service aka
>> > jackdbus).
>> > 12:37:43.828 JACK is starting...
>> > 12:37:43.831 /usr/bin/jackd -dalsa -dhw:0 -r44100 -p1024 -n2
>> > 12:37:43.905 ALSA connection graph change.
>> > 12:37:43.908 JACK was started with PID=1670.
>> > jackd 0.121.2
>> > Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn
>> > and others.
>> > jackd comes with ABSOLUTELY NO WARRANTY
>> > This is free software, and you are welcome to redistribute it
>> > under certain conditions; see the file COPYING for details
>> > JACK compiled with System V SHM support.
>> > loading driver ..
>> > apparent rate = 44100
>> > creating alsa driver ... hw:0|hw:0|1024|2|44100|0|0|nomon|swmeter|-|32bit
>> > control device hw:0
>> > 12:37:48.293 Server configuration saved to "/home/aere/.jackdrc".
>> > 12:37:48.325 Statistics reset.
>> > 12:38:06.453 Client activated.
>> > cannot read result for request type 6 from server (Connection reset by 
>> > peer)
>> > cannot read server event (Success)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> > cannot continue execution of the processing graph (Bad file descriptor)
>> >
>> > FROM CRASH REPORT (COPIED BY HAND):
>>
>> A tip could be to take a photo with a digital camera / phone instead of 
>> hand-copying - it's up to you what you find simplest.
>>
>> > jackd crashed with signal 7 in pa_shm_create_rw
>> >
>> > StacktraceTop
>> > pa_shm_create_rw() from /usr/lib/i386-linux-gnu/libpulsecommon-1.1.so
>> > pa_mempool_new() from /usr/lib/i386-linux-gnu/libpulsecommon-1.1.so
>> > pa_context_new_with_proplist() from /usr/lib/i386-linux-gnu/libpulse.so.0
>> > pa_context_new() from /usr/lib/i386-linux-gnu/libpulse.so.0
>> > conf_pulse_hook_load_if_running() from
>> > /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
>>
>> This is related to alsa-plugins or pulseaudio, not fluidsynth. If 
>> upgrading *everything* is hard, you should try upgrading at least all 
>> packages beginning with "pulseaudio", "libpulse" or "libasound". I saw a 
>> Launchpad bug with the same stack trace, and the bug reporter said it 
>> was resolved with an update.
>>
>> > Please be aware that I consider the testing (done on an Ubuntu
>> > partition) to have been successful.  I just wanted to find out if the
>> > increased overhead causes it to no longer work on my slowest machine.
>>
>> Ok.
>>
>> // David
>>
>
> -- 
>
> Sincerely,
> Aere
>
>
>
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev

_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to