add clang formatting
							parent
							
								
									2fd95ea452
								
							
						
					
					
						commit
						4d834b3567
					
				|  | @ -0,0 +1,166 @@ | |||
| --- | ||||
| Language:        Cpp | ||||
| # BasedOnStyle:  LLVM | ||||
| AccessModifierOffset: -2 | ||||
| AlignAfterOpenBracket: AlwaysBreak | ||||
| AlignConsecutiveMacros: None | ||||
| AlignConsecutiveAssignments: None | ||||
| AlignConsecutiveBitFields: None | ||||
| AlignConsecutiveDeclarations: None | ||||
| AlignEscapedNewlines: Right | ||||
| AlignOperands:   Align | ||||
| AlignTrailingComments: true | ||||
| AllowAllArgumentsOnNextLine: false | ||||
| AllowAllConstructorInitializersOnNextLine: true | ||||
| AllowAllParametersOfDeclarationOnNextLine: false | ||||
| AllowShortEnumsOnASingleLine: true | ||||
| AllowShortBlocksOnASingleLine: Never | ||||
| AllowShortCaseLabelsOnASingleLine: false | ||||
| AllowShortFunctionsOnASingleLine: All | ||||
| AllowShortLambdasOnASingleLine: All | ||||
| AllowShortIfStatementsOnASingleLine: Never | ||||
| AllowShortLoopsOnASingleLine: false | ||||
| AlwaysBreakAfterDefinitionReturnType: None | ||||
| AlwaysBreakAfterReturnType: None | ||||
| AlwaysBreakBeforeMultilineStrings: false | ||||
| AlwaysBreakTemplateDeclarations: MultiLine | ||||
| AttributeMacros: | ||||
|   - __capability | ||||
| BinPackArguments: false | ||||
| BinPackParameters: false | ||||
| BraceWrapping: | ||||
|   AfterCaseLabel:  false | ||||
|   AfterClass:      false | ||||
|   AfterControlStatement: Never | ||||
|   AfterEnum:       false | ||||
|   AfterFunction:   false | ||||
|   AfterNamespace:  false | ||||
|   AfterObjCDeclaration: false | ||||
|   AfterStruct:     false | ||||
|   AfterUnion:      false | ||||
|   AfterExternBlock: false | ||||
|   BeforeCatch:     false | ||||
|   BeforeElse:      false | ||||
|   BeforeLambdaBody: false | ||||
|   BeforeWhile:     false | ||||
|   IndentBraces:    false | ||||
|   SplitEmptyFunction: true | ||||
|   SplitEmptyRecord: true | ||||
|   SplitEmptyNamespace: true | ||||
| BreakBeforeBinaryOperators: None | ||||
| BreakBeforeConceptDeclarations: true | ||||
| BreakBeforeBraces: Allman | ||||
| BreakBeforeInheritanceComma: false | ||||
| BreakInheritanceList: BeforeColon | ||||
| BreakBeforeTernaryOperators: true | ||||
| BreakConstructorInitializersBeforeComma: false | ||||
| BreakConstructorInitializers: BeforeColon | ||||
| BreakAfterJavaFieldAnnotations: false | ||||
| BreakStringLiterals: true | ||||
| ColumnLimit:     100 | ||||
| CommentPragmas:  '^ IWYU pragma:' | ||||
| CompactNamespaces: false | ||||
| ConstructorInitializerAllOnOneLineOrOnePerLine: false | ||||
| ConstructorInitializerIndentWidth: 4 | ||||
| ContinuationIndentWidth: 4 | ||||
| Cpp11BracedListStyle: true | ||||
| DeriveLineEnding: true | ||||
| DerivePointerAlignment: false | ||||
| DisableFormat:   false | ||||
| EmptyLineBeforeAccessModifier: LogicalBlock | ||||
| ExperimentalAutoDetectBinPacking: false | ||||
| FixNamespaceComments: true | ||||
| ForEachMacros: | ||||
|   - foreach | ||||
|   - Q_FOREACH | ||||
|   - BOOST_FOREACH | ||||
| StatementAttributeLikeMacros: | ||||
|   - Q_EMIT | ||||
| IncludeBlocks:   Preserve | ||||
| IncludeCategories: | ||||
|   - Regex:           '^"(llvm|llvm-c|clang|clang-c)/' | ||||
|     Priority:        2 | ||||
|     SortPriority:    0 | ||||
|     CaseSensitive:   false | ||||
|   - Regex:           '^(<|"(gtest|gmock|isl|json)/)' | ||||
|     Priority:        3 | ||||
|     SortPriority:    0 | ||||
|     CaseSensitive:   false | ||||
|   - Regex:           '.*' | ||||
|     Priority:        1 | ||||
|     SortPriority:    0 | ||||
|     CaseSensitive:   false | ||||
| IncludeIsMainRegex: '(Test)?$' | ||||
| IncludeIsMainSourceRegex: '' | ||||
| IndentCaseLabels: false | ||||
| IndentCaseBlocks: false | ||||
| IndentGotoLabels: true | ||||
| IndentPPDirectives: None | ||||
| IndentExternBlock: NoIndent | ||||
| IndentRequires:  false | ||||
| IndentWidth:     4 | ||||
| IndentWrappedFunctionNames: false | ||||
| InsertTrailingCommas: None | ||||
| JavaScriptQuotes: Leave | ||||
| JavaScriptWrapImports: true | ||||
| KeepEmptyLinesAtTheStartOfBlocks: true | ||||
| MacroBlockBegin: '' | ||||
| MacroBlockEnd:   '' | ||||
| MaxEmptyLinesToKeep: 1 | ||||
| NamespaceIndentation: None | ||||
| ObjCBinPackProtocolList: Auto | ||||
| ObjCBlockIndentWidth: 4 | ||||
| ObjCBreakBeforeNestedBlockParam: true | ||||
| ObjCSpaceAfterProperty: false | ||||
| ObjCSpaceBeforeProtocolList: true | ||||
| PenaltyBreakAssignment: 2 | ||||
| PenaltyBreakBeforeFirstCallParameter: 19 | ||||
| PenaltyBreakComment: 300 | ||||
| PenaltyBreakFirstLessLess: 120 | ||||
| PenaltyBreakString: 1000 | ||||
| PenaltyBreakTemplateDeclaration: 10 | ||||
| PenaltyExcessCharacter: 1000000 | ||||
| PenaltyReturnTypeOnItsOwnLine: 1000000 | ||||
| PenaltyIndentedWhitespace: 0 | ||||
| PointerAlignment: Right | ||||
| ReflowComments:  true | ||||
| SortIncludes:    true | ||||
| SortJavaStaticImport: Before | ||||
| SortUsingDeclarations: true | ||||
| SpaceAfterCStyleCast: false | ||||
| SpaceAfterLogicalNot: false | ||||
| SpaceAfterTemplateKeyword: true | ||||
| SpaceBeforeAssignmentOperators: true | ||||
| SpaceBeforeCaseColon: false | ||||
| SpaceBeforeCpp11BracedList: false | ||||
| SpaceBeforeCtorInitializerColon: true | ||||
| SpaceBeforeInheritanceColon: true | ||||
| SpaceBeforeParens: ControlStatements | ||||
| SpaceAroundPointerQualifiers: Default | ||||
| SpaceBeforeRangeBasedForLoopColon: true | ||||
| SpaceInEmptyBlock: false | ||||
| SpaceInEmptyParentheses: false | ||||
| SpacesBeforeTrailingComments: 1 | ||||
| SpacesInAngles:  false | ||||
| SpacesInConditionalStatement: false | ||||
| SpacesInContainerLiterals: true | ||||
| SpacesInCStyleCastParentheses: false | ||||
| SpacesInParentheses: false | ||||
| SpacesInSquareBrackets: false | ||||
| SpaceBeforeSquareBrackets: false | ||||
| BitFieldColonSpacing: Both | ||||
| Standard:        Latest | ||||
| StatementMacros: | ||||
|   - Q_UNUSED | ||||
|   - QT_REQUIRE_VERSION | ||||
| TabWidth:        8 | ||||
| UseCRLF:         false | ||||
| UseTab:          Never | ||||
| WhitespaceSensitiveMacros: | ||||
|   - STRINGIZE | ||||
|   - PP_STRINGIZE | ||||
|   - BOOST_PP_STRINGIZE | ||||
|   - NS_SWIFT_NAME | ||||
|   - CF_SWIFT_NAME | ||||
| ... | ||||
| 
 | ||||
							
								
								
									
										401
									
								
								src/FAudioGMS.c
								
								
								
								
							
							
						
						
									
										401
									
								
								src/FAudioGMS.c
								
								
								
								
							|  | @ -30,9 +30,9 @@ | |||
| 
 | ||||
| #include "FAudioGMS.h" | ||||
| 
 | ||||
| #include "F3DAudio.h" | ||||
| #include "FAPOBase.h" | ||||
| #include "FAudioFX.h" | ||||
| #include "F3DAudio.h" | ||||
| 
 | ||||
| #include "FAudio.h" | ||||
| 
 | ||||
|  | @ -217,7 +217,8 @@ struct FAudioGMS_SoundInstance | |||
| 
 | ||||
|     union | ||||
|     { | ||||
|         FAudioGMS_StaticSound *staticSound; /* static sounds are loaded separately, so they do not belong to the instance */ | ||||
|         FAudioGMS_StaticSound *staticSound; /* static sounds are loaded separately, so they do
 | ||||
|                                                not belong to the instance */ | ||||
|         FAudioGMS_StreamingSound streamingSound; | ||||
|     } soundData; | ||||
| }; | ||||
|  | @ -275,8 +276,13 @@ typedef struct FAudioGMS_Device | |||
| 
 | ||||
| static FAudioGMS_Device *device = NULL; | ||||
| 
 | ||||
| /* Game Maker doesn't let us control execution order on clean up so we have this stupid macro to help us not crash on exit */ | ||||
| #define RETURN_ON_NULL_DEVICE(x) if (device == NULL) { return x; } | ||||
| /* Game Maker doesn't let us control execution order on clean up so we have this
 | ||||
|  * stupid macro to help us not crash on exit */ | ||||
| #define RETURN_ON_NULL_DEVICE(x)                                                                   \ | ||||
|     if (device == NULL)                                                                            \ | ||||
|     {                                                                                              \ | ||||
|         return x;                                                                                  \ | ||||
|     } | ||||
| 
 | ||||
| static inline FAudioGMS_StaticSound *FAudioGMS_INTERNAL_LookupStaticSound(uint32_t id) | ||||
| { | ||||
|  | @ -323,7 +329,9 @@ static void FAudioGMS_INTERNAL_SoundInstance_AddBuffer(FAudioGMS_SoundInstance* | |||
| static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance *instance); | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_Stop(FAudioGMS_SoundInstance *instance); | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_OnBufferEndCallback(FAudioVoiceCallback* callback, FAudioGMS_SoundInstance *instance) | ||||
| static void FAudioGMS_INTERNAL_OnBufferEndCallback( | ||||
|     FAudioVoiceCallback *callback, | ||||
|     FAudioGMS_SoundInstance *instance) | ||||
| { | ||||
|     if (instance->isStatic) | ||||
|     { | ||||
|  | @ -384,10 +392,7 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|     uint32_t i = 0; | ||||
|     for (i = 0; i < deviceCount; i += 1) | ||||
|     { | ||||
|         FAudio_GetDeviceDetails( | ||||
|             device->handle, | ||||
|             i, | ||||
|             &deviceDetails); | ||||
|         FAudio_GetDeviceDetails(device->handle, i, &deviceDetails); | ||||
| 
 | ||||
|         if ((deviceDetails.Role & FAudioDefaultGameDevice) == FAudioDefaultGameDevice) | ||||
|         { | ||||
|  | @ -399,10 +404,7 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|     if (i == deviceCount) | ||||
|     { | ||||
|         i = 0; /* whatever we'll just use the first one i guess */ | ||||
|         FAudio_GetDeviceDetails( | ||||
|             device->handle, | ||||
|             i, | ||||
|             &deviceDetails); | ||||
|         FAudio_GetDeviceDetails(device->handle, i, &deviceDetails); | ||||
| 
 | ||||
|         device->deviceDetails = deviceDetails; | ||||
|     } | ||||
|  | @ -414,8 +416,7 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|             FAUDIO_DEFAULT_SAMPLERATE, | ||||
|             0, | ||||
|             i, | ||||
|         NULL | ||||
|     ) != 0) | ||||
|             NULL) != 0) | ||||
|     { | ||||
|         Log("No mastering voice found! Bailing!"); | ||||
|         FAudio_Release(device->handle); | ||||
|  | @ -437,8 +438,7 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|             0, | ||||
|             0, | ||||
|             &device->fauxMasteringVoice.sends, | ||||
|         NULL | ||||
|     ) != 0) | ||||
|             NULL) != 0) | ||||
|     { | ||||
|         Log("Failed to create faux mastering voice! Bailing!"); | ||||
|         FAudioVoice_DestroyVoice(device->masteringVoice); | ||||
|  | @ -459,8 +459,7 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|     F3DAudioInitialize( | ||||
|         device->deviceDetails.OutputFormat.dwChannelMask, | ||||
|         SPEED_OF_SOUND, | ||||
|         device->handle3D | ||||
|     ); | ||||
|         device->handle3D); | ||||
| 
 | ||||
|     device->listener.OrientFront.x = 0; | ||||
|     device->listener.OrientFront.y = 0; | ||||
|  | @ -503,7 +502,9 @@ void FAudioGMS_Init(double spatialDistanceScale, double timestep) | |||
|     fflush(stdout); | ||||
| } | ||||
| 
 | ||||
| /* Taken from https://github.com/FNA-XNA/FNA/blob/master/src/Audio/SoundEffectInstance.cs */ | ||||
| /* Taken from
 | ||||
|  * https://github.com/FNA-XNA/FNA/blob/master/src/Audio/SoundEffectInstance.cs
 | ||||
|  */ | ||||
| static void SetPanMatrixCoefficients(FAudioGMS_SoundInstance *instance) | ||||
| { | ||||
|     /* Two major things to notice:
 | ||||
|  | @ -564,7 +565,12 @@ double FAudioGMS_StaticSound_LoadWAV(char *filePath) | |||
|     drwav_uint64 frameCount; | ||||
| 
 | ||||
|     FAudioGMS_StaticSound *sound = SDL_malloc(sizeof(FAudioGMS_StaticSound)); | ||||
|     float *pSampleData = drwav_open_file_and_read_pcm_frames_f32(filePath, &sound->channels, &sound->samplesPerSecond, &frameCount, NULL); | ||||
|     float *pSampleData = drwav_open_file_and_read_pcm_frames_f32( | ||||
|         filePath, | ||||
|         &sound->channels, | ||||
|         &sound->samplesPerSecond, | ||||
|         &frameCount, | ||||
|         NULL); | ||||
|     if (pSampleData == NULL) | ||||
|     { | ||||
|         Log("Error opening WAV file: "); | ||||
|  | @ -593,7 +599,9 @@ double FAudioGMS_StaticSound_LoadWAV(char *filePath) | |||
|     { | ||||
|         sound->id = device->staticSoundCount; | ||||
| 
 | ||||
|         device->staticSounds = SDL_realloc(device->staticSounds, (device->staticSoundCount + 1) * sizeof(FAudioGMS_StaticSound*)); | ||||
|         device->staticSounds = SDL_realloc( | ||||
|             device->staticSounds, | ||||
|             (device->staticSoundCount + 1) * sizeof(FAudioGMS_StaticSound *)); | ||||
|         device->staticSoundCount += 1; | ||||
|     } | ||||
| 
 | ||||
|  | @ -614,8 +622,7 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetPan(FAudioGMS_SoundInstance* ins | |||
|         instance->dspSettings.SrcChannelCount, | ||||
|         instance->dspSettings.DstChannelCount, | ||||
|         instance->dspSettings.pMatrixCoefficients, | ||||
|         0 | ||||
|     ); | ||||
|         0); | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(FAudioGMS_SoundInstance *instance) | ||||
|  | @ -633,19 +640,25 @@ static void FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(FAudioGMS_SoundInstance | |||
| 
 | ||||
|     FAudioSourceVoice_SetFrequencyRatio( | ||||
|         instance->voice.handle, | ||||
|         SDL_powf(2.0f, instance->pitch - 1) * doppler, /* FAudio expects pitch range to be -1.0 to 1.0 while GM uses 0.0 to 2.0 so we adjust here */ | ||||
|         0 | ||||
|     ); | ||||
|         SDL_powf(2.0f, instance->pitch - 1) * | ||||
|             doppler, /* FAudio expects pitch range to be -1.0 to 1.0 while GM
 | ||||
|                                                             uses 0.0 to 2.0 so | ||||
|                     we adjust here */ | ||||
|         0); | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetPitch(FAudioGMS_SoundInstance* instance, float pitch) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetPitch( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float pitch) | ||||
| { | ||||
|     pitch = SDL_max(0.0, SDL_min(2.0, pitch)); | ||||
|     instance->pitch = pitch; | ||||
|     FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(instance); | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetVolume(FAudioGMS_SoundInstance* instance, float volume) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetVolume( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float volume) | ||||
| { | ||||
|     instance->volume = volume; | ||||
|     FAudioVoice_SetVolume(instance->voice.handle, volume, 0); | ||||
|  | @ -654,8 +667,8 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetVolume(FAudioGMS_SoundInstance* | |||
| static FAudioGMS_SoundInstance *FAudioGMS_INTERNAL_SoundInstance_Init( | ||||
|     uint32_t channelCount, | ||||
|     uint32_t samplesPerSecond, | ||||
|     uint8_t isStatic | ||||
| ) { | ||||
|     uint8_t isStatic) | ||||
| { | ||||
|     FAudioGMS_SoundInstance *instance = SDL_malloc(sizeof(FAudioGMS_SoundInstance)); | ||||
| 
 | ||||
|     instance->voice.handle = NULL; | ||||
|  | @ -698,7 +711,8 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init( | |||
|     instance->dspSettings.SrcChannelCount = channelCount; | ||||
|     instance->dspSettings.DstChannelCount = device->deviceDetails.OutputFormat.Format.nChannels; | ||||
| 
 | ||||
|     uint32_t memsize = 4 * instance->dspSettings.SrcChannelCount * instance->dspSettings.DstChannelCount; | ||||
|     uint32_t memsize = | ||||
|         4 * instance->dspSettings.SrcChannelCount * instance->dspSettings.DstChannelCount; | ||||
|     instance->dspSettings.pMatrixCoefficients = SDL_malloc(memsize); | ||||
|     SDL_memset(instance->dspSettings.pMatrixCoefficients, 0, memsize); | ||||
| 
 | ||||
|  | @ -738,7 +752,9 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init( | |||
|     { | ||||
|         instance->id = device->soundInstanceCount; | ||||
| 
 | ||||
|         device->soundInstances = SDL_realloc(device->soundInstances, (device->soundInstanceCount + 1) * sizeof(FAudioGMS_SoundInstance*)); | ||||
|         device->soundInstances = SDL_realloc( | ||||
|             device->soundInstances, | ||||
|             (device->soundInstanceCount + 1) * sizeof(FAudioGMS_SoundInstance *)); | ||||
|         device->soundInstanceCount += 1; | ||||
|     } | ||||
| 
 | ||||
|  | @ -748,13 +764,12 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init( | |||
| } | ||||
| 
 | ||||
| static FAudioGMS_SoundInstance *FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound( | ||||
|     FAudioGMS_StaticSound* staticSound | ||||
| ) { | ||||
|     FAudioGMS_StaticSound *staticSound) | ||||
| { | ||||
|     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_SoundInstance_Init( | ||||
|         staticSound->channels, | ||||
|         staticSound->samplesPerSecond, | ||||
|         1 | ||||
|     ); | ||||
|         1); | ||||
| 
 | ||||
|     instance->isStatic = 1; | ||||
|     instance->soundData.staticSound = staticSound; | ||||
|  | @ -765,11 +780,13 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_CreateFromStati | |||
| double FAudioGMS_StaticSound_CreateSoundInstance(double staticSoundID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE(-1.0) | ||||
|     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||
|     FAudioGMS_StaticSound *staticSound = | ||||
|         FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||
| 
 | ||||
|     if (staticSound != NULL) | ||||
|     { | ||||
|         FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound); | ||||
|         FAudioGMS_SoundInstance *instance = | ||||
|             FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound); | ||||
|         return instance->id; | ||||
|     } | ||||
|     else | ||||
|  | @ -779,7 +796,10 @@ double FAudioGMS_StaticSound_CreateSoundInstance(double staticSoundID) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundInstance* instance, float lowPassFilter, float Q) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float lowPassFilter, | ||||
|     float Q) | ||||
| { | ||||
|     FAudioFilterParameters p; | ||||
|     p.Type = FAudioLowPassFilter; | ||||
|  | @ -791,9 +811,13 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundIns | |||
|     instance->lowPassFilter = lowPassFilter; | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double lowPassFilter, double Q) | ||||
| void FAudioGMS_SoundInstance_SetLowPassFilter( | ||||
|     double soundInstanceID, | ||||
|     double lowPassFilter, | ||||
|     double Q) | ||||
| { | ||||
|     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -801,7 +825,10 @@ void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double low | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundInstance* instance, float highPassFilter, float Q) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float highPassFilter, | ||||
|     float Q) | ||||
| { | ||||
|     FAudioFilterParameters p; | ||||
|     p.Type = FAudioHighPassFilter; | ||||
|  | @ -813,9 +840,13 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundIn | |||
|     instance->highPassFilter = highPassFilter; | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter, double Q) | ||||
| void FAudioGMS_SoundInstance_SetHighPassFilter( | ||||
|     double soundInstanceID, | ||||
|     double highPassFilter, | ||||
|     double Q) | ||||
| { | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -823,7 +854,10 @@ void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double hi | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundInstance* instance, float bandPassFilter, float Q) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float bandPassFilter, | ||||
|     float Q) | ||||
| { | ||||
|     FAudioFilterParameters p; | ||||
|     p.Type = FAudioBandPassFilter; | ||||
|  | @ -835,9 +869,13 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundIn | |||
|     instance->bandPassFilter = bandPassFilter; | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double bandPassFilter, double Q) | ||||
| void FAudioGMS_SoundInstance_SetBandPassFilter( | ||||
|     double soundInstanceID, | ||||
|     double bandPassFilter, | ||||
|     double Q) | ||||
| { | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -847,8 +885,10 @@ void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double ba | |||
| 
 | ||||
| void FAudioGMS_SoundInstance_QueueSoundInstance(double soundInstanceID, double queueSoundInstanceID) | ||||
| { | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 	FAudioGMS_SoundInstance* queueInstance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)queueSoundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *queueInstance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)queueSoundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL && queueInstance != NULL) | ||||
|     { | ||||
|  | @ -873,7 +913,8 @@ static void FAudioGMS_INTERNAL_Apply3D(FAudioGMS_SoundInstance* instance) | |||
| 
 | ||||
|     if (emitter == NULL) | ||||
|     { | ||||
|         Log("Sound instance does not have 3D data! Did you forget to initialize?"); | ||||
|         Log("Sound instance does not have 3D data! Did you forget to " | ||||
|             "initialize?"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|  | @ -882,8 +923,7 @@ static void FAudioGMS_INTERNAL_Apply3D(FAudioGMS_SoundInstance* instance) | |||
|         &device->listener, | ||||
|         emitter, | ||||
|         F3DAUDIO_CALCULATE_MATRIX | F3DAUDIO_CALCULATE_DOPPLER, | ||||
|         &instance->dspSettings | ||||
|     ); | ||||
|         &instance->dspSettings); | ||||
| 
 | ||||
|     FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(instance); | ||||
|     FAudioVoice_SetOutputMatrix( | ||||
|  | @ -892,8 +932,7 @@ static void FAudioGMS_INTERNAL_Apply3D(FAudioGMS_SoundInstance* instance) | |||
|         instance->dspSettings.SrcChannelCount, | ||||
|         instance->dspSettings.DstChannelCount, | ||||
|         instance->dspSettings.pMatrixCoefficients, | ||||
|         0 | ||||
|     ); | ||||
|         0); | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_AddBuffer(FAudioGMS_SoundInstance *instance) | ||||
|  | @ -903,26 +942,30 @@ static void FAudioGMS_INTERNAL_SoundInstance_AddBuffer(FAudioGMS_SoundInstance* | |||
| 
 | ||||
|     if (instance->playLength != 0) | ||||
|     { | ||||
| 		uint32_t distanceToEndPoint = (instance->playBegin + instance->playLength) - stb_vorbis_get_sample_offset(instance->soundData.streamingSound.fileHandle); | ||||
|         uint32_t distanceToEndPoint = | ||||
|             (instance->playBegin + instance->playLength) - | ||||
|             stb_vorbis_get_sample_offset(instance->soundData.streamingSound.fileHandle); | ||||
|         requestedSampleCount = SDL_min(requestedSampleCount, distanceToEndPoint); | ||||
|     } | ||||
| 
 | ||||
|     uint32_t requiredStagingBufferSize = requestedSampleCount * instance->format.nChannels * sizeof(float); | ||||
|     uint32_t requiredStagingBufferSize = | ||||
|         requestedSampleCount * instance->format.nChannels * sizeof(float); | ||||
|     if (instance->soundData.streamingSound.streamBufferSize < requiredStagingBufferSize) | ||||
|     { | ||||
|         instance->soundData.streamingSound.streamBuffer = SDL_realloc(instance->soundData.streamingSound.streamBuffer, requiredStagingBufferSize); | ||||
|         instance->soundData.streamingSound.streamBuffer = | ||||
|             SDL_realloc(instance->soundData.streamingSound.streamBuffer, requiredStagingBufferSize); | ||||
|         instance->soundData.streamingSound.streamBufferSize = requiredStagingBufferSize; | ||||
|     } | ||||
| 
 | ||||
|     instance->soundData.streamingSound.mostRecentBufferOffset = stb_vorbis_get_sample_offset(instance->soundData.streamingSound.fileHandle); | ||||
|     instance->soundData.streamingSound.mostRecentBufferOffset = | ||||
|         stb_vorbis_get_sample_offset(instance->soundData.streamingSound.fileHandle); | ||||
| 
 | ||||
|     /* NOTE: this function returns samples per channel, not total samples */ | ||||
|     uint32_t sampleCount = stb_vorbis_get_samples_float_interleaved( | ||||
|         instance->soundData.streamingSound.fileHandle, | ||||
|         instance->format.nChannels, | ||||
|         instance->soundData.streamingSound.streamBuffer, | ||||
|         requestedSampleCount * instance->format.nChannels | ||||
|     ); | ||||
|         requestedSampleCount * instance->format.nChannels); | ||||
| 
 | ||||
|     FAudioBuffer buffer; | ||||
|     buffer.AudioBytes = sampleCount * instance->format.nChannels * sizeof(float); | ||||
|  | @ -968,11 +1011,8 @@ double FAudioGMS_StreamingSound_LoadOGG(char* filePath) | |||
| 
 | ||||
|     stb_vorbis_info info = stb_vorbis_get_info(fileHandle); | ||||
| 
 | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_Init( | ||||
|         info.channels, | ||||
|         info.sample_rate, | ||||
|         0 | ||||
|     ); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_SoundInstance_Init(info.channels, info.sample_rate, 0); | ||||
| 
 | ||||
|     instance->soundData.streamingSound.fileHandle = fileHandle; | ||||
|     instance->soundData.streamingSound.info = info; | ||||
|  | @ -986,7 +1026,11 @@ double FAudioGMS_StreamingSound_LoadOGG(char* filePath) | |||
|     return instance->id; | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_AddEmitter(FAudioGMS_SoundInstance* instance, float x, float y, float z) | ||||
| static void FAudioGMS_INTERNAL_SoundInstance_AddEmitter( | ||||
|     FAudioGMS_SoundInstance *instance, | ||||
|     float x, | ||||
|     float y, | ||||
|     float z) | ||||
| { | ||||
|     instance->is3D = 1; | ||||
| 
 | ||||
|  | @ -1055,7 +1099,8 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance* insta | |||
|         { | ||||
|             FAudioSourceVoice_FlushSourceBuffers(instance->voice.handle); | ||||
| 
 | ||||
| 			instance->soundData.staticSound->buffer.PlayBegin = instance->voice.handle->src.curBufferOffset; | ||||
|             instance->soundData.staticSound->buffer.PlayBegin = | ||||
|                 instance->voice.handle->src.curBufferOffset; | ||||
|             instance->soundData.staticSound->buffer.PlayLength = instance->playLength; | ||||
|         } | ||||
|         else | ||||
|  | @ -1064,7 +1109,10 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance* insta | |||
|             instance->soundData.staticSound->buffer.PlayLength = instance->playLength; | ||||
|         } | ||||
| 
 | ||||
|         FAudioSourceVoice_SubmitSourceBuffer(instance->voice.handle, &instance->soundData.staticSound->buffer, NULL); | ||||
|         FAudioSourceVoice_SubmitSourceBuffer( | ||||
|             instance->voice.handle, | ||||
|             &instance->soundData.staticSound->buffer, | ||||
|             NULL); | ||||
|     } | ||||
| 
 | ||||
|     FAudioSourceVoice_Start(instance->voice.handle, 0, 0); | ||||
|  | @ -1074,7 +1122,8 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance* insta | |||
| void FAudioGMS_SoundInstance_Play(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1088,20 +1137,25 @@ static void FAudioGMS_INTERNAL_SoundInstance_Pause(FAudioGMS_SoundInstance* inst | |||
|     { | ||||
|         if (instance->soundState == SoundState_Playing) | ||||
|         { | ||||
|             FAudioSourceVoice_Stop(instance->voice.handle, 0, 0); /* this actually just pauses lol */ | ||||
|             FAudioSourceVoice_Stop( | ||||
|                 instance->voice.handle, | ||||
|                 0, | ||||
|                 0); /* this actually just pauses lol */ | ||||
|             instance->soundState = SoundState_Paused; | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         Log("SoundInstance_Pause: Invalid sound instance ID! Did you destroy this instance?"); | ||||
|         Log("SoundInstance_Pause: Invalid sound instance ID! Did you destroy " | ||||
|             "this instance?"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_Pause(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_INTERNAL_SoundInstance_Pause(instance); | ||||
| } | ||||
| 
 | ||||
|  | @ -1109,34 +1163,43 @@ static void FAudioGMS_INTERNAL_SoundInstance_Stop(FAudioGMS_SoundInstance* insta | |||
| { | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|         instance->soundState = SoundState_Stopped; /* set this before so flush buffers doesn't trigger buffer add callback */ | ||||
|         instance->soundState = | ||||
|             SoundState_Stopped; /* set this before so flush
 | ||||
|                                                                                buffers | ||||
|                                doesn't trigger buffer add callback */ | ||||
| 
 | ||||
|         FAudioSourceVoice_Stop(instance->voice.handle, 0, 0); | ||||
|         FAudioSourceVoice_FlushSourceBuffers(instance->voice.handle); | ||||
| 
 | ||||
|         if (!instance->isStatic) | ||||
|         { | ||||
|             stb_vorbis_seek(instance->soundData.streamingSound.fileHandle, instance->playBegin); /* back to the start */ | ||||
|             FAudioGMS_INTERNAL_SoundInstance_AddBuffer(instance); /* preload so we dont stutter on play */ | ||||
|             stb_vorbis_seek( | ||||
|                 instance->soundData.streamingSound.fileHandle, | ||||
|                 instance->playBegin); /* back to the start */ | ||||
|             FAudioGMS_INTERNAL_SoundInstance_AddBuffer( | ||||
|                 instance); /* preload so we dont stutter on play */ | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         Log("SoundInstance_Stop: Invalid sound instance ID! Did you destroy this instance?"); | ||||
|         Log("SoundInstance_Stop: Invalid sound instance ID! Did you destroy " | ||||
|             "this instance?"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_Stop(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_INTERNAL_SoundInstance_Stop(instance); | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetLoop(double soundInstanceID, double loop) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
| 	FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1144,7 +1207,8 @@ void FAudioGMS_SoundInstance_SetLoop(double soundInstanceID, double loop) | |||
| 
 | ||||
|         if (instance->isStatic && instance->soundState == SoundState_Playing) | ||||
|         { | ||||
| 			/* We need to pause and play so that static buffers get resubmitted */ | ||||
|             /* We need to pause and play so that static buffers get resubmitted
 | ||||
|              */ | ||||
|             FAudioGMS_INTERNAL_SoundInstance_Pause(instance); | ||||
|             FAudioGMS_INTERNAL_SoundInstance_Play(instance); | ||||
|         } | ||||
|  | @ -1154,7 +1218,8 @@ void FAudioGMS_SoundInstance_SetLoop(double soundInstanceID, double loop) | |||
| void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL && !instance->is3D) | ||||
|     { | ||||
|  | @ -1165,7 +1230,8 @@ void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan) | |||
| void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1176,7 +1242,8 @@ void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch) | |||
| void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1188,7 +1255,8 @@ void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume) | |||
| void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1207,10 +1275,15 @@ void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, dou | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_Set3DVelocity(double soundInstanceID, double xVelocity, double yVelocity, double zVelocity) | ||||
| void FAudioGMS_SoundInstance_Set3DVelocity( | ||||
|     double soundInstanceID, | ||||
|     double xVelocity, | ||||
|     double yVelocity, | ||||
|     double zVelocity) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1227,14 +1300,18 @@ void FAudioGMS_SoundInstance_Set3DVelocity(double soundInstanceID, double xVeloc | |||
| } | ||||
| 
 | ||||
| /* FIXME: this will die horribly if position is greater than total length */ | ||||
| void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds) | ||||
| void FAudioGMS_SoundInstance_SetTrackPositionInSeconds( | ||||
|     double soundInstanceID, | ||||
|     double trackPositionInSeconds) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|         uint32_t sampleFrame = instance->soundData.staticSound->samplesPerSecond * trackPositionInSeconds; | ||||
|         uint32_t sampleFrame = | ||||
|             instance->soundData.staticSound->samplesPerSecond * trackPositionInSeconds; | ||||
| 
 | ||||
|         FAudioGMS_SoundState currentState = instance->soundState; | ||||
|         if (currentState == SoundState_Playing) | ||||
|  | @ -1260,7 +1337,8 @@ void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, d | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static uint32_t FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames(FAudioGMS_SoundInstance* instance) | ||||
| static uint32_t FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames( | ||||
|     FAudioGMS_SoundInstance *instance) | ||||
| { | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1270,7 +1348,8 @@ static uint32_t FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames( | |||
|         } | ||||
|         else | ||||
|         { | ||||
| 			return instance->soundData.streamingSound.mostRecentBufferOffset + instance->voice.handle->src.curBufferOffset; | ||||
|             return instance->soundData.streamingSound.mostRecentBufferOffset + | ||||
|                    instance->voice.handle->src.curBufferOffset; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | @ -1278,14 +1357,19 @@ static uint32_t FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames( | |||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetPlayRegion(double soundInstanceID, double startInMilliseconds, double endInMilliseconds) | ||||
| void FAudioGMS_SoundInstance_SetPlayRegion( | ||||
|     double soundInstanceID, | ||||
|     double startInMilliseconds, | ||||
|     double endInMilliseconds) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
| 		uint32_t playBeginSampleFrame = instance->format.nSamplesPerSec * (startInMilliseconds / 1000); | ||||
|         uint32_t playBeginSampleFrame = | ||||
|             instance->format.nSamplesPerSec * (startInMilliseconds / 1000); | ||||
|         uint32_t playEndSampleFrame = instance->format.nSamplesPerSec * (endInMilliseconds / 1000); | ||||
|         uint32_t playLength = playEndSampleFrame - playBeginSampleFrame; | ||||
| 
 | ||||
|  | @ -1298,12 +1382,12 @@ void FAudioGMS_SoundInstance_SetPlayRegion(double soundInstanceID, double startI | |||
|         instance->playBegin = playBeginSampleFrame; | ||||
|         instance->playLength = playLength; | ||||
| 
 | ||||
| 		uint32_t currentFrame = FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames(instance); | ||||
|         uint32_t currentFrame = | ||||
|             FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames(instance); | ||||
| 
 | ||||
| 		if ( | ||||
| 			currentFrame < instance->playBegin || | ||||
| 			(currentFrame > instance->playBegin + instance->playLength) | ||||
| 		) { | ||||
|         if (currentFrame < instance->playBegin || | ||||
|             (currentFrame > instance->playBegin + instance->playLength)) | ||||
|         { | ||||
|             /* we are outside the play region */ | ||||
|             if (instance->isStatic && instance->soundState == SoundState_Playing) | ||||
|             { | ||||
|  | @ -1329,23 +1413,29 @@ void FAudioGMS_SoundInstance_SetPlayRegion(double soundInstanceID, double startI | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds) | ||||
| void FAudioGMS_SoundInstance_SetVolumeOverTime( | ||||
|     double soundInstanceID, | ||||
|     double volume, | ||||
|     double milliseconds) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);\ | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|         instance->adjustingVolumeOverTime = 1; | ||||
|         instance->targetVolume = volume; | ||||
|         instance->volumeDelta = (volume - instance->volume) / ((milliseconds / 1000) / device->timestep); | ||||
|         instance->volumeDelta = | ||||
|             (volume - instance->volume) / ((milliseconds / 1000) / device->timestep); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE(-1.0) | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1361,7 +1451,8 @@ double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID) | |||
| double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE(-1.0) | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1377,7 +1468,8 @@ double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID) | |||
| double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE(-1.0) | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1387,7 +1479,8 @@ double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | |||
|         } | ||||
|         else | ||||
|         { | ||||
|             return stb_vorbis_stream_length_in_seconds(instance->soundData.streamingSound.fileHandle); | ||||
|             return stb_vorbis_stream_length_in_seconds( | ||||
|                 instance->soundData.streamingSound.fileHandle); | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|  | @ -1400,11 +1493,13 @@ double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | |||
| double FAudioGMS_SoundInstance_GetTrackPositionInSeconds(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE(-1.0) | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
| 		return (double)FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames(instance) / instance->format.nSamplesPerSec; | ||||
|         return (double)FAudioGMS_INTERNAL_SoundInstance_GetTrackPositionInSampleFrames(instance) / | ||||
|                instance->format.nSamplesPerSec; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|  | @ -1463,7 +1558,8 @@ static void FAudioGMS_INTERNAL_SoundInstance_Destroy(FAudioGMS_SoundInstance* in | |||
| void FAudioGMS_SoundInstance_Destroy(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1474,7 +1570,8 @@ void FAudioGMS_SoundInstance_Destroy(double soundInstanceID) | |||
| void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1518,7 +1615,9 @@ double FAudioGMS_EffectChain_Create() | |||
|     { | ||||
|         effectChain->id = device->effectChainCount; | ||||
| 
 | ||||
|         device->effectChains = SDL_realloc(device->effectChains, (device->effectChainCount + 1) * sizeof(FAudioGMS_EffectChain*)); | ||||
|         device->effectChains = SDL_realloc( | ||||
|             device->effectChains, | ||||
|             (device->effectChainCount + 1) * sizeof(FAudioGMS_EffectChain *)); | ||||
|         device->effectChainCount += 1; | ||||
|     } | ||||
| 
 | ||||
|  | @ -1527,21 +1626,31 @@ double FAudioGMS_EffectChain_Create() | |||
|     return effectChain->id; | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_EffectChain_AddReverb(FAudioGMS_EffectChain* effectChain, FAudioFXReverbParameters *reverbParameters) | ||||
| static void FAudioGMS_INTERNAL_EffectChain_AddReverb( | ||||
|     FAudioGMS_EffectChain *effectChain, | ||||
|     FAudioFXReverbParameters *reverbParameters) | ||||
| { | ||||
|     effectChain->effectCount += 1; | ||||
| 
 | ||||
|     effectChain->effectTypes = SDL_realloc(effectChain->effectTypes, effectChain->effectCount * sizeof(FAudioGMS_EffectType)); | ||||
|     effectChain->effectTypes = SDL_realloc( | ||||
|         effectChain->effectTypes, | ||||
|         effectChain->effectCount * sizeof(FAudioGMS_EffectType)); | ||||
|     effectChain->effectTypes[effectChain->effectCount - 1] = EffectType_Reverb; | ||||
| 
 | ||||
|     effectChain->effectParameters = SDL_realloc(effectChain->effectParameters, effectChain->effectCount * sizeof(FAudioGMS_EffectParameters)); | ||||
|     SDL_memcpy(&effectChain->effectParameters[effectChain->effectCount - 1], reverbParameters, sizeof(FAudioFXReverbParameters)); | ||||
|     effectChain->effectParameters = SDL_realloc( | ||||
|         effectChain->effectParameters, | ||||
|         effectChain->effectCount * sizeof(FAudioGMS_EffectParameters)); | ||||
|     SDL_memcpy( | ||||
|         &effectChain->effectParameters[effectChain->effectCount - 1], | ||||
|         reverbParameters, | ||||
|         sizeof(FAudioFXReverbParameters)); | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_EffectChain_AddDefaultReverb(double effectChainID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
|     FAudioGMS_EffectChain *effectChain = | ||||
|         FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
| 
 | ||||
|     if (effectChain != NULL) | ||||
|     { | ||||
|  | @ -1590,10 +1699,11 @@ void FAudioGMS_EffectChain_AddReverb( | |||
|     double reverbGain, | ||||
|     double decayTime, | ||||
|     double density, | ||||
|     double roomSize | ||||
| ) { | ||||
|     double roomSize) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_EffectChain* effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
|     FAudioGMS_EffectChain *effectChain = | ||||
|         FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
| 
 | ||||
|     if (effectChain != NULL) | ||||
|     { | ||||
|  | @ -1655,7 +1765,8 @@ static void FAudioGMS_INTERNAL_Voice_SetEffectGain(FAudioGMS_Voice *voice, float | |||
| void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
| 
 | ||||
|     if (instance != NULL) | ||||
|     { | ||||
|  | @ -1663,13 +1774,15 @@ void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effect | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static FAudioEffectChain* FAudioGMS_INTERNAL_CreateFAudioEffectChain(FAudioGMS_EffectChain* effectChain) | ||||
| static FAudioEffectChain *FAudioGMS_INTERNAL_CreateFAudioEffectChain( | ||||
|     FAudioGMS_EffectChain *effectChain) | ||||
| { | ||||
|     FAudioEffectChain *fAudioEffectChain = SDL_malloc(sizeof(FAudioEffectChain)); | ||||
|     uint32_t i; | ||||
| 
 | ||||
|     fAudioEffectChain->EffectCount = effectChain->effectCount; | ||||
|     fAudioEffectChain->pEffectDescriptors = SDL_malloc(fAudioEffectChain->EffectCount * sizeof(FAudioEffectDescriptor)); | ||||
|     fAudioEffectChain->pEffectDescriptors = | ||||
|         SDL_malloc(fAudioEffectChain->EffectCount * sizeof(FAudioEffectDescriptor)); | ||||
| 
 | ||||
|     FAPO *reverb; | ||||
| 
 | ||||
|  | @ -1682,7 +1795,8 @@ static FAudioEffectChain* FAudioGMS_INTERNAL_CreateFAudioEffectChain(FAudioGMS_E | |||
| 
 | ||||
|             FAudioEffectDescriptor *reverbDescriptor = &fAudioEffectChain->pEffectDescriptors[i]; | ||||
|             reverbDescriptor->InitialState = 1; | ||||
|             reverbDescriptor->OutputChannels = device->deviceDetails.OutputFormat.Format.nChannels == 6 ? 6 : 1; | ||||
|             reverbDescriptor->OutputChannels = | ||||
|                 device->deviceDetails.OutputFormat.Format.nChannels == 6 ? 6 : 1; | ||||
|             reverbDescriptor->pEffect = reverb; | ||||
|             break; | ||||
| 
 | ||||
|  | @ -1695,7 +1809,10 @@ static FAudioEffectChain* FAudioGMS_INTERNAL_CreateFAudioEffectChain(FAudioGMS_E | |||
|     return fAudioEffectChain; | ||||
| } | ||||
| 
 | ||||
| static void FAudioGMS_INTERNAL_SetEffectChain(FAudioGMS_Voice* voice, FAudioGMS_EffectChain* effectChain, float effectGain) | ||||
| static void FAudioGMS_INTERNAL_SetEffectChain( | ||||
|     FAudioGMS_Voice *voice, | ||||
|     FAudioGMS_EffectChain *effectChain, | ||||
|     float effectGain) | ||||
| { | ||||
|     uint32_t i; | ||||
| 
 | ||||
|  | @ -1754,15 +1871,11 @@ static void FAudioGMS_INTERNAL_SetEffectChain(FAudioGMS_Voice* voice, FAudioGMS_ | |||
|             Log("Unknown effect type! Something is very wrong!"); | ||||
|         } | ||||
| 
 | ||||
|         FAudioVoice_SetEffectParameters( | ||||
|             voice->effectVoice, | ||||
|             i, | ||||
|             parameters, | ||||
|             parametersSize, | ||||
|             0); | ||||
|         FAudioVoice_SetEffectParameters(voice->effectVoice, i, parameters, parametersSize, 0); | ||||
|     } | ||||
| 
 | ||||
|     /* Set the instance voice to go through both faux mastering and effect voice for wet/dry */ | ||||
|     /* Set the instance voice to go through both faux mastering and effect voice
 | ||||
|      * for wet/dry */ | ||||
|     voice->sends.pSends[0].Flags = 0; | ||||
|     if (voice == &device->fauxMasteringVoice) | ||||
|     { | ||||
|  | @ -1777,9 +1890,7 @@ static void FAudioGMS_INTERNAL_SetEffectChain(FAudioGMS_Voice* voice, FAudioGMS_ | |||
| 
 | ||||
|     voice->effectChainAttached = 1; | ||||
| 
 | ||||
|     FAudioVoice_SetOutputVoices( | ||||
|         voice->handle, | ||||
|         &voice->sends); | ||||
|     FAudioVoice_SetOutputVoices(voice->handle, &voice->sends); | ||||
| 
 | ||||
|     FAudioGMS_INTERNAL_Voice_SetEffectGain(voice, effectGain); | ||||
| 
 | ||||
|  | @ -1792,11 +1903,16 @@ static void FAudioGMS_INTERNAL_SetEffectChain(FAudioGMS_Voice* voice, FAudioGMS_ | |||
|     SDL_free(fAudioEffectChain); | ||||
| } | ||||
| 
 | ||||
| void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID, double effectChainID, double effectGain) | ||||
| void FAudioGMS_SoundInstance_SetEffectChain( | ||||
|     double soundInstanceID, | ||||
|     double effectChainID, | ||||
|     double effectGain) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
|     FAudioGMS_SoundInstance *instance = | ||||
|         FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||
|     FAudioGMS_EffectChain *effectChain = | ||||
|         FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
| 
 | ||||
|     if (instance != NULL && effectChain != NULL) | ||||
|     { | ||||
|  | @ -1807,7 +1923,8 @@ void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID, double effec | |||
| void FAudioGMS_SetMasteringEffectChain(double effectChainID, double effectGain) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_EffectChain* effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
|     FAudioGMS_EffectChain *effectChain = | ||||
|         FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
| 
 | ||||
|     if (effectChain != NULL) | ||||
|     { | ||||
|  | @ -1840,7 +1957,8 @@ static void FAudioGMS_INTERNAL_EffectChain_Destroy(FAudioGMS_EffectChain *effect | |||
| void FAudioGMS_EffectChain_Destroy(double effectChainID) | ||||
| { | ||||
|     RETURN_ON_NULL_DEVICE() | ||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
|     FAudioGMS_EffectChain *effectChain = | ||||
|         FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||
| 
 | ||||
|     if (effectChain != NULL) | ||||
|     { | ||||
|  | @ -1894,7 +2012,10 @@ void FAudioGMS_Update() | |||
|             if (instance->destroyOnFinish) | ||||
|             { | ||||
|                 FAudioVoiceState state; | ||||
|                 FAudioSourceVoice_GetState(instance->voice.handle, &state, FAUDIO_VOICE_NOSAMPLESPLAYED); | ||||
|                 FAudioSourceVoice_GetState( | ||||
|                     instance->voice.handle, | ||||
|                     &state, | ||||
|                     FAUDIO_VOICE_NOSAMPLESPLAYED); | ||||
| 
 | ||||
|                 if (state.BuffersQueued == 0) | ||||
|                 { | ||||
|  |  | |||
|  | @ -36,35 +36,66 @@ | |||
| #endif | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| extern "C" | ||||
| { | ||||
| #endif /* __cplusplus */ | ||||
| 
 | ||||
|     FAUDIOGMSAPI void FAudioGMS_Init(double spatialDistanceScale, double timestep); | ||||
| 
 | ||||
| FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV(char *filePath); /* returns a static sound ID */ | ||||
| FAUDIOGMSAPI double FAudioGMS_StaticSound_CreateSoundInstance(double staticSoundID); /* returns a sound instance ID */ | ||||
|     FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV( | ||||
|         char *filePath); /* returns a static sound ID */ | ||||
|     FAUDIOGMSAPI double FAudioGMS_StaticSound_CreateSoundInstance( | ||||
|         double staticSoundID); /* returns a sound instance ID */ | ||||
|     FAUDIOGMSAPI void FAudioGMS_StaticSound_Destroy(double staticSoundID); | ||||
| 
 | ||||
| FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG(char* filepath); /* returns a sound instance ID */ | ||||
|     FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG( | ||||
|         char *filepath); /* returns a sound instance ID */ | ||||
| 
 | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_Stop(double soundInstanceID); | ||||
| 
 | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPlayRegion(double soundInstanceID, double startInMilliseconds, double endInMilliseconds); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPlayRegion( | ||||
|         double soundInstanceID, | ||||
|         double startInMilliseconds, | ||||
|         double endInMilliseconds); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLoop(double soundInstanceID, double loop); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DVelocity(double soundInstanceID, double xVelocity, double yVelocity, double zVelocity); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double lowPassFilter, double Q); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter, double Q); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double bandPassFilter, double Q); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition( | ||||
|         double soundInstanceID, | ||||
|         double x, | ||||
|         double y, | ||||
|         double z); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DVelocity( | ||||
|         double soundInstanceID, | ||||
|         double xVelocity, | ||||
|         double yVelocity, | ||||
|         double zVelocity); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds( | ||||
|         double soundInstanceID, | ||||
|         double trackPositionInSeconds); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime( | ||||
|         double soundInstanceID, | ||||
|         double volume, | ||||
|         double milliseconds); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLowPassFilter( | ||||
|         double soundInstanceID, | ||||
|         double lowPassFilter, | ||||
|         double Q); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetHighPassFilter( | ||||
|         double soundInstanceID, | ||||
|         double highPassFilter, | ||||
|         double Q); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetBandPassFilter( | ||||
|         double soundInstanceID, | ||||
|         double bandPassFilter, | ||||
|         double Q); | ||||
| 
 | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_QueueSoundInstance(double soundInstanceID, double queueSoundInstanceID); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_QueueSoundInstance( | ||||
|         double soundInstanceID, | ||||
|         double queueSoundInstanceID); | ||||
| 
 | ||||
|     FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID); | ||||
|     FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID); | ||||
|  | @ -91,24 +122,33 @@ FAUDIOGMSAPI void FAudioGMS_EffectChain_AddReverb( | |||
|         double reverbGain, | ||||
|         double decayTime, | ||||
|         double density, | ||||
|     double roomSize | ||||
| ); | ||||
|         double roomSize); | ||||
|     FAUDIOGMSAPI void FAudioGMS_EffectChain_Destroy(double effectChainID); | ||||
| 
 | ||||
|     /*
 | ||||
|      * NOTE: Any changes to the effect chain will NOT apply after this is set! | ||||
|  * You MUST call SetEffectChain again if you make changes to the effect chain parameters! | ||||
|      * You MUST call SetEffectChain again if you make changes to the effect | ||||
|      * chain parameters! | ||||
|      */ | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID, double effectChainID, double effectGain); | ||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectChain( | ||||
|         double soundInstanceID, | ||||
|         double effectChainID, | ||||
|         double effectGain); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain( | ||||
|         double soundInstanceID, | ||||
|         double effectGain); | ||||
| 
 | ||||
|     FAUDIOGMSAPI void FAudioGMS_SetMasteringEffectChain(double effectChainID, double effectGain); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SetMasteringEffectGain(double effectGain); | ||||
| 
 | ||||
|     FAUDIOGMSAPI void FAudioGMS_SetListenerPosition(double x, double y, double z); | ||||
| FAUDIOGMSAPI void FAudioGMS_SetListenerVelocity(double xVelocity, double yVelocity, double zVelocity); | ||||
|     FAUDIOGMSAPI void FAudioGMS_SetListenerVelocity( | ||||
|         double xVelocity, | ||||
|         double yVelocity, | ||||
|         double zVelocity); | ||||
| 
 | ||||
| FAUDIOGMSAPI void FAudioGMS_PauseAll(); /* useful for mobile platforms, etc */ | ||||
|     FAUDIOGMSAPI void FAudioGMS_PauseAll();  /* useful for mobile platforms, etc
 | ||||
|                                               */ | ||||
|     FAUDIOGMSAPI void FAudioGMS_ResumeAll(); /* same as above */ | ||||
|     FAUDIOGMSAPI void FAudioGMS_StopAll(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue