[openal] Making OpenAL Soft more "portable"?
Chris Robinson
chris.kcat at gmail.com
Fri Jun 3 20:00:07 EDT 2016
On 06/03/2016 11:52 AM, Marvin -SShock wrote:
> I really like your work and I'm currently interested in getting
> OpenAL Soft with HRTF to work in Dark engine games, see here:
> https://www.systemshock.org/index.php?topic=8371.0
Hi. Cool, thanks. :)
> One hurdle in getting more people to try OALS is the installation
> process. To install OALS one has to have at least a basic
> understanding of the OS which some users might lack.
Yes, unfortunately Windows installers isn't something I've learned how
to do yet. It'd be nice to have an installer that'll automatically put
the DLLs in the right place for all apps to see, install the config
utility with a start menu entry (or wherever it would go these days),
and install the HRTF data sets to where OpenAL Soft will find them.
> This is where
> fanpatches can help. However, the user would still have to change the
> OS sampling frequency to match the HRTF table, plus the author of the
> SS2 fanpatch is against making his tool change files outside of the
> game folder, possibly because of security concerns. Is it possible to
> change OALS in such a way so as to use it as a drop-in, fully
> portable replacement? Let's say the game is set up to recognize OALS,
> this would require
> a) having OALS look for the alsoft.ini inside the
> game folder (it already does this for HRTF tables, so why not the
> ini, too?)
The main issue is that the "game folder" isn't a particularly
well-defined place. On Windows it's relatively easy to get (IIRC,
there's a function call to get the full path to the process's
executable), but on Linux, the idea of a game folder is actually pretty
hazy since executables, data, and configs are installed in separate
places -- and even in cases where the whole game is in a self-contained
directory, there's no safe and portable way to get the full path to the
executable, as far as I'm aware. On OSX, I don't know where to even start.
> b) being able to override the Windows sampling frequency
> with the setting from alsoft.ini, i.e. having a "force sampling
> frequency" option
Unfortunately I don't think there's anything I can do from OpenAL Soft.
Even if it was a good idea to change the device's sample rate, I don't
think it can be changed by normal processes (it's a system setting that
only users with elevated or admin privileges can change, I believe), and
Windows' audio system doesn't support resampling on its end, requiring
the client to provide audio in the native rate.
Ultimately it's better to advise users that they don't really need to go
above 44.1 or 48khz for normal audio playback. Unless they're doing
studio-grade work with studio-grade equipment, 96khz and up won't gain
anything except higher CPU use.
> This would also enable anyone to use per-game settings instead of
> relying on one single global configuration which might have to be
> changed for each game.
>
> Is this possible? Or do you have doubts about it/not enough time?
Generally speaking, config settings are supposed to be for user- or
system-specific options, rather than app-specific. Anything various apps
would be interested in should instead be accessible through an OpenAL
API extension.
But in the case where different apps do actually need different config
settings, the ALSOFT_CONF environment variable can be used to specify
another config file with extra settings (which also allows it to be
shared too, if you have multiple apps that need the same tweaks).
More information about the openal
mailing list