@@ -31,6 +31,18 @@ sConfig ReadConfigFromCommandLine( int argc, char* argv[] )
3131 if ( strstr ( argv[i], " --loop" ) == argv[i] ) Cfg.m_Loop = true ;
3232 else if ( strstr ( argv[i], " --wav-modplug" ) == argv[i] ) Cfg.m_UseModPlugToDecodeWAV = true ;
3333 else if ( strstr ( argv[i], " --verbose" ) == argv[i] ) Cfg.m_Verbose = true ;
34+ else if (strstr (argv[i], " --gain" ) == argv[i])
35+ {
36+ if (i + 1 < argc)
37+ {
38+ Cfg.m_Gain = strtof (argv[++i], nullptr );
39+ }
40+ else
41+ {
42+ printf (" Expected gain level [float] for --volume\n " );
43+ exit (0 );
44+ }
45+ }
3446 else if ( strstr (argv[i], " --output-file" ) == argv[i] )
3547 {
3648 if ( i+1 < argc )
@@ -57,7 +69,7 @@ void PrintBanner()
5769 printf ( " portamp@linderdaum.com\n " );
5870 printf ( " https://github.com/corporateshark/PortAMP\n " );
5971 printf ( " \n " );
60- printf ( " portamp <filename1> [<filename2> ...] [--loop] [--wav-modplug] [--verbose] [--output-file <filename.wav>]\n " );
72+ printf ( " portamp <filename1> [<filename2> ...] [--loop] [--wav-modplug] [--verbose] [--gain <float>] [-- output-file <filename.wav>]\n " );
6173 printf ( " \n " );
6274}
6375
@@ -78,11 +90,16 @@ int main( int argc, char* argv[] )
7890 g_Config.m_Verbose = true ;
7991#endif
8092
81- auto AudioSubsystem = CreateAudioSubsystem_OpenAL ();
93+ std::shared_ptr<iAudioSubsystem> AudioSubsystem = CreateAudioSubsystem_OpenAL ();
8294
8395 AudioSubsystem->Start ();
8496
85- auto Source = AudioSubsystem->CreateAudioSource ();
97+ if (g_Config.m_Gain > 0 ) {
98+ AudioSubsystem->SetListenerGain (g_Config.m_Gain );
99+ }
100+
101+ std::shared_ptr<iAudioSource> Source = AudioSubsystem->CreateAudioSource ();
102+
86103 // allow seamless looping if there is only one track
87104 if ( g_Playlist.GetNumTracks () == 1 ) Source->SetLooping ( g_Config.m_Loop );
88105
0 commit comments