void init_mikmod(struct config_info *conf) { md_mixfreq = audio.output_frequency; md_mode = DMODE_16BITS; md_mode |= DMODE_STEREO; md_device = 0; md_volume = 96; md_musicvolume = 128; md_sndfxvolume = 128; md_pansep = 128; md_reverb = 0; md_mode |= DMODE_SOFT_MUSIC | DMODE_SURROUND; MikMod_RegisterDriver(&drv_nos); /* XM and AMF seem to be broken with Mikmod? */ MikMod_RegisterLoader(&load_gdm); //MikMod_RegisterLoader(&load_xm); MikMod_RegisterLoader(&load_s3m); MikMod_RegisterLoader(&load_mod); MikMod_RegisterLoader(&load_med); MikMod_RegisterLoader(&load_mtm); MikMod_RegisterLoader(&load_stm); MikMod_RegisterLoader(&load_it); MikMod_RegisterLoader(&load_669); MikMod_RegisterLoader(&load_ult); MikMod_RegisterLoader(&load_dsm); MikMod_RegisterLoader(&load_far); MikMod_RegisterLoader(&load_okt); //MikMod_RegisterLoader(&load_amf); // FIXME: Should break a lot more here if(MikMod_Init(NULL)) fprintf(stderr, "MikMod Init failed: %s", MikMod_strerror(MikMod_errno)); }
UBOOL UOpenALAudioSubsystem::Init() { guard(UOpenALAudioSubsystem::Init); INT Rate = GetActualOutputRate(); // OpenAL / ALURE initialization ALCint ContextAttrs[] = { ALC_FREQUENCY, Rate, 0 }; if( alureInitDevice( NULL, ContextAttrs ) == AL_FALSE ) appErrorf( TEXT("Couldn't initialize OpenAL: %s"), alureGetErrorString() ); alDistanceModel( AL_LINEAR_DISTANCE_CLAMPED ); CheckALErrorFlag( TEXT("alDistanceModel") ); alDopplerFactor( DopplerFactor ); CheckALErrorFlag( TEXT("alDopplerFactor") ); // Metre per second to units per second, where units per meter is 52.5. // Taken from: http://wiki.beyondunreal.com/Legacy:General_Scale_And_Dimensions alSpeedOfSound( 343.3f * 52.5f ); CheckALErrorFlag( TEXT("alSpeedOfSound") ); ALuint* NewSources = new ALuint[NumSources + 1]; Sources = new FAudioSource[NumSources]; alGenSources( NumSources + 1, NewSources ); CheckALErrorFlag( TEXT("alGenSources") ); MusicSource = NewSources[0]; for( INT i=0; i<NumSources; i++ ) Sources[i].Id = NewSources[i+1]; delete[] NewSources; // Fix the music source to 0 values alSource3f( MusicSource, AL_POSITION, 0.f, 0.f, 0.f ); alSource3f( MusicSource, AL_VELOCITY, 0.f, 0.f, 0.f ); alSource3f( MusicSource, AL_DIRECTION, 0.f, 0.f, 0.f ); alSourcef( MusicSource, AL_ROLLOFF_FACTOR, 0.f ); alSourcei( MusicSource, AL_SOURCE_RELATIVE, AL_TRUE ); SetVolumes(); CheckALErrorFlag( TEXT("SetVolumes") ); // MikMod initialization //kipz - remove this because it breaks on new mikmod //MikMod_RegisterDriver( &MusicDriver ); MikMod_RegisterAllDrivers(); // Register only formats that are known to be supported by UT. // Taken from: http://wiki.beyondunreal.com/Music MikMod_RegisterLoader( &load_mod ); MikMod_RegisterLoader( &load_s3m ); MikMod_RegisterLoader( &load_stm ); MikMod_RegisterLoader( &load_it ); MikMod_RegisterLoader( &load_xm ); MikMod_RegisterLoader( &load_far ); MikMod_RegisterLoader( &load_669 ); md_mixfreq = Rate; if ( HighQualityMusic ) md_mode |= DMODE_HQMIXER; if( MikMod_Init( "" ) ) appErrorf( TEXT("Couldn't initialize MikMod: %s"), MikMod_strerror( MikMod_errno ) ); // Initialized! USound::Audio = this; UMusic::Audio = this; Initialized = 1; return 1; unguard; }