[vlc-devel] [PATCH 1/2] audio_filter: SOFAlizer new module

Wolfgang Hrauda wolfgang.hrauda at gmx.at
Mon Apr 20 13:27:20 CEST 2015


Am 17.04.2015 um 17:51 schrieb David Fuhrmann <david.fuhrmann at gmail.com>:

> Hi Wolfgang,
Hi David,

Thanks for your explanations!

> 
>> Am 17.04.2015 um 14:33 schrieb Wolfgang Hrauda <wolfgang.hrauda at gmx.at>:
>> 
>> Am 14.04.2015 um 18:38 schrieb David Fuhrmann <david.fuhrmann at gmail.com>:
>> 
>>> Hi,
>> Hi David,
>> 
>>> 
>>>> +vlc_module_begin ()
>>>> +    set_description( N_("SOFAlizer") )
>>>> +    set_shortname( N_("SOFAlizer") )
>>>> +    set_capability( "audio filter", 0)
>>>> +    set_help( HELP_TEXT )
>>>> +    add_loadfile( "sofalizer-filename1", "", FILE1_NAME_TEXT, FILE_NAME_LONGTEXT, false)
>>>> +    add_loadfile( "sofalizer-filename2", "", FILE2_NAME_TEXT, FILE_NAME_LONGTEXT, false)
>>>> +    add_loadfile( "sofalizer-filename3", "", FILE3_NAME_TEXT, FILE_NAME_LONGTEXT, false)
>>> 
>>> I do not really like such kind of stuff. Why three file names? If you want to switch to a fourth file, you are screwed. And with this its really hard to integrate it in any UI (for providing on-the-fly change of the file).
>> Thanks a lot for your thoughts on this!
>> 
>> Just to make sure, we're talking about the same thing, I'd like to explain, what we are doing and why:
>> The SOFA files contain HRTF data which are very individual to each person. And the psychoacoustic effect of the binaural rendering ( which is done in our module) is very sensitive to what HRTF set you use. Therefore it is absolutely important to be able to compare a few HRTF sets on-the-fly without interruption in the playback. E.g., going through a file open dialogue for changing files, would be a too long interruption of playback,
> 
> Well, an open dialog in the GUI does not pause any audio playback.
Ok, that's good. But the most common usage will (probably) be to switch forth and back between two or three different HRTF sets for comparison. So, we'd prefer not to use open dialogs during playback, at all.

> 
>> because the auditive impression would already vanish, making an accurate comparison impossible.
>> E.g. if you had your own HRTF data set measured, you might need to compare different post-processing versions of it. And if you don't have your own HRTF set, you need the select one that gives you a good effect, which is quite tricky and unpredictable.
>> 
>> Therefore, three SOFA files (each containing one HRTF set) can be defined in the advanced settings. All their data is loaded during opening of the audio module. This allows for almost seamless switching between the three different HRTF sets in the UI.
> 
> How do you plan to do the switching? Just a combo box to select variant1/2/3?
Currently, it's a slider with three possible positions.

> 
>> I agree that three is an arbitrary choice, but I think in this context it is a good choice.
>> 
>> 
>>> Did you tried one variable, and on-the-fly reconfiguration in a variable callback? I think this would be better, and thats what variable callbacks are for.
>> I admit I do not understand exactly, how this would work!? How would the user change between files, then? Would it mean that a file open dialogue would pop up each time the user wants to change to a different file?
> 
> This is not about how you implement the GUI. Even with one variable for the „current HRTF file", you can still implement a combo box in the GUI, for selecting predefined presets, instead of an open dialog.
I see. With one variable for the current HRTF file, how could the user change the "predefined presets" (i.e. selecting other files to compare between)?
For example:
Imagine I had my personal HRTFs measured and got two different files with different post-processing of the measurements. How would I (as a user) point SOFAlizer to them (e.g. in the settings) and then switch forth and back between them in the module's GUI (in your ideal implementation)?

> 
>> Keeping in mind what I wrote above (our goal is seamless switching between files during playback), do you think the variable callback approach would work?
> 
> I understand your need here. Question is: How long does it take to load and parse such an HRTF file? Its probably quite fast, and then it should be fine to use a callback. I mean who cares if the switch to the new HRTF file happens only 20 ms after you clicked something in the GUI.
As Piotr Majdak wrote in his answer (17th April), the files might even get in the range of GBs.
I just did a quick test loading an 80 MB reverberant HRTF file (also contains room information): It takes something like 1.1 seconds to load, which means there would be quite some noticeable delay in the reaction to the user input, even with that files size. And this file only covers source positions (i.e. virtual loudspeaker positions) in the horizontal plane…

Thanks for your ideas!
Best,
Wolfgang





> 
> Best,
> David
> 
>> 
>> Thanks for your help and best regards,
>> Wolfgang
>> 
>> 
>> 
>>> 
>>> Best regards,
>>> David
>>> _______________________________________________
>>> vlc-devel mailing list
>>> To unsubscribe or modify your subscription options:
>>> https://mailman.videolan.org/listinfo/vlc-devel
>> 
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel




More information about the vlc-devel mailing list