Skip to content

Commit

Permalink
openalsoft audio fix
Browse files Browse the repository at this point in the history
Co-authored-by: Smokey <78874128+Smokey555@users.noreply.github.com>
Co-authored-by: Cobalt Bar <79053181+CobaltBar@users.noreply.github.com>
  • Loading branch information
3 people committed Oct 4, 2024
1 parent bc8f506 commit 95b31dc
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 0 deletions.
14 changes: 14 additions & 0 deletions alsoft.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[general]
sample-type=float32
stereo-mode=speakers
stereo-encoding=panpot
hrtf=false
cf_level=0
resampler=fast_bsinc24
front-stablizer=false
output-limiter=false
volume-adjust=0
[decoder]
hq-mode=false
distance-comp=false
nfc=false
10 changes: 10 additions & 0 deletions project.hxp
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ class Project extends HXProject {
configureHaxelibs();
configureAssets();
configureIcons();
configureALSoft();
}

/**
Expand Down Expand Up @@ -740,6 +741,15 @@ class Project extends HXProject {
addIcon("art/iconOG.png");
}

/**
* For desktop platforms, copy the OpenALSoft config file into the build to improve audio quality.
*/
function configureALSoft() {
if (isDesktop()) {
addAsset("alsoft.txt", 'plugins/alsoft.${isWindows() ? "ini" : "conf"}', "default", false);
}
}

//
// HELPER FUNCTIONS
// Easy functions to make the code more readable.
Expand Down
3 changes: 3 additions & 0 deletions source/Main.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package;
import flixel.FlxGame;
import flixel.FlxState;
import funkin.Preferences;
#if desktop
import funkin.audio.ALSoftConfig; // Just to make sure DCE doesn't remove this, since it's not directly referenced anywhere else.
#end
import funkin.util.logging.CrashHandler;
import funkin.ui.debug.MemoryCounter;
import funkin.save.Save;
Expand Down
31 changes: 31 additions & 0 deletions source/funkin/audio/ALSoftConfig.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package funkin.audio;

import haxe.io.Path;

/*
* A class that simply points OpenALSoft to a custom configuration file when
* the game starts up.
*
* The config overrides a few global OpenALSoft settings with the aim of
* improving audio quality on desktop targets.
*/
@:keep class ALSoftConfig
{
#if desktop
static function __init__():Void
{
var origin:String = #if hl Sys.getCwd() #else Sys.programPath() #end;

var configPath:String = Path.directory(Path.withoutExtension(origin));
#if windows
configPath += "/plugins/alsoft.ini";
#elseif mac
configPath = Path.directory(configPath) + "/Resources/plugins/alsoft.conf";
#else
configPath += "/plugins/alsoft.conf";
#end

Sys.putEnv("ALSOFT_CONF", configPath);
}
#end
}

0 comments on commit 95b31dc

Please sign in to comment.