[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Question to fluidsynth specialists - Crash in "new_fluid

From: David Henningsson
Subject: Re: [fluid-dev] Question to fluidsynth specialists - Crash in "new_fluid_settings"
Date: Thu, 5 Nov 2015 15:27:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

I'm not saying it's a good workaround - more of a quick'n'dirty hacky fix while we figure out what to do - but you can compile and ship two versions of the same library. One with and one without portaudio support; and only load the second library in case the customer selects portaudio in your UI.

// David

On 2015-11-05 15:13, Reinhold Hoffmann wrote:
Hi David, hi "sqweek",

Thanks for the immediate response. That was fast.

Definitely, a fix of "portaudio/ASIO" and all those faulty "card drivers" would 
be better :-)
Of course, the trade-off has made sense up-to-date but might be reconsidered 
now (??).

Common to all cases (incl. those links from sqweek) is that the Pa_Initialize 
in Portaudio fails with a crash on Win10.
Common to all of those 3 cases which our customer report is a special used HW 
(ASUS card, AVVID box, Cakewalk device) and Win10.

We have now built a trial package for our customers which include the verbose 
logging of libfluidsynth and of portaudio. Our
customers are committed to help in any way to find the issue. I expect their 
logs soon.

The issue which we face is, that we have customers all over the world using any 
hardware that is possible. If a special HW driver
won't work, OK. But from our perspective it does not make sense that a complete 
application crashes upon startup mostly with a
protection failure because of a niche feature which is used very rarely. (most just use 
"dsound" and are happy with that).

As soon as I have feedback from our customers I will let you know, potentially 
report a cause also in the portaudio forum.

Again, thanks for the immediate feedback.



-----Urspr√ľngliche Nachricht-----
Von: David Henningsson [mailto:address@hidden
Gesendet: Donnerstag, 5. November 2015 11:58
An: address@hidden; FluidSynth mailing list
Betreff: Re: [fluid-dev] Question to fluidsynth specialists - Crash in 

On 2015-11-05 10:52, Reinhold Hoffmann wrote:
Hi fluid-dev team,
We at Notation Software (see www.notation.com
<http://www.notation.com>) use libfluidsynth under the LGPL license.

Hi Reinhold!

We have created the libfluidsynth dll libraries for "dsound" and
"portaudio" where we use the Steinberg's ASIO underneath.
Our default setting is with the "dsound" configuration. The customer
can optionally select the portaudio/ASIO settings for e.g. realtime recording.
We have a customer error report where the software crashes at the very
first fluidsynth statement "settings = new_fluid_settings();"
An investigation showed that the customer uses an exotic audio card
where the initialzation of the portaudio/ASIO/card driver software
causes a crash for whatever reason.

Certainly the better fix would be to fix portaudio/ASIO/card driver then :-)

When using a libfluidsynth library  w/o portaudio support all works fine.
Even when only "dsound" is used, the portaudio software is started by
"new_fluid_settings()" and causes that crash.
When the libs are statically built with #define PORTAUDIO_SUPPORT, in
any case the call of "new_fluid_settings()" performs an initialization
of the portaudio/ASIO/sound card through "fluid_settings_add_option
(settings, "audio.driver", "portaudio")".

The reason PortAudio initializes even in a call to new_fluid_settings, is to 
fill in proper options for audio.portaudio.device. This
enables the user to pick from a list of devices before instantiating the 
portaudio driver.

This seems like a trade-off: on one side, it feels a bit unnecessary to 
initialize portaudio (through the Pa_Initialize call) if
you're not going to use it, OTOH, it seems useful to have a list of portaudio 
devices to choose from.
Trying to fill that list of devices only when you have set audio.driver to 
"portaudio" should be doable, but would require some
coding and I'm not sure whether or not this is a good idea, given that other 
software using libfluidsynth might expect the values to
be filled in as they are now.

What do other people think?

A fault tolerant solution should activate "fluid_settings_add_option
(settings, "audio.driver", "*portaudio*")"  ONLY when portaudio is
actively selected and not by default when the libs are statically
built at th beginning.
As I have not found anything in any forum whether an option exist, is
there a possibility to dynamically set the "portaudio" initialization?
Such a solution is trivial but as mentioned we use libfluidsynth under
the LGPL license and want to keep the software unchanged.
Does anybody can provide an advice what would be the best way to
address this issue?
Any helpful advice is highly appreciated.
Best regards,


*Notation Software Germany UG *

Dr. Reinhold Hoffmann

CEO and President

     Eduard-Thoeny-Str. 6

D-86919 Utting am Ammersee


phone +49 8806 333 9800

   fax             +49 8806 333 9805

mobile        +49 171 3036175

       e-mail address@hidden <mailto:address@hidden>

web www.notation.com <http://www.notation.com/>


fluid-dev mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]