Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/include/FAPOFX.h
178 lines | 5.1 KiB | text/x-c | CLexer
178 lines | 5.1 KiB | text/x-c | CLexer
r0 | /* FAudio - XAudio Reimplementation for FNA | |||
* | ||||
* Copyright (c) 2011-2020 Ethan Lee, Luigi Auriemma, and the MonoGame Team | ||||
* | ||||
* This software is provided 'as-is', without any express or implied warranty. | ||||
* In no event will the authors be held liable for any damages arising from | ||||
* the use of this software. | ||||
* | ||||
* Permission is granted to anyone to use this software for any purpose, | ||||
* including commercial applications, and to alter it and redistribute it | ||||
* freely, subject to the following restrictions: | ||||
* | ||||
* 1. The origin of this software must not be misrepresented; you must not | ||||
* claim that you wrote the original software. If you use this software in a | ||||
* product, an acknowledgment in the product documentation would be | ||||
* appreciated but is not required. | ||||
* | ||||
* 2. Altered source versions must be plainly marked as such, and must not be | ||||
* misrepresented as being the original software. | ||||
* | ||||
* 3. This notice may not be removed or altered from any source distribution. | ||||
* | ||||
* Ethan "flibitijibibo" Lee <flibitijibibo@flibitijibibo.com> | ||||
* | ||||
*/ | ||||
#ifndef FAPOFX_H | ||||
#define FAPOFX_H | ||||
#include "FAPO.h" | ||||
#define FAPOFXAPI FAUDIOAPI | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif /* __cplusplus */ | ||||
/* GUIDs */ | ||||
/* "Legacy" GUIDs are from XAPOFX <= 1.5. They were removed in XAudio 2.8 and later. */ | ||||
extern const FAudioGUID FAPOFX_CLSID_FXEQ, FAPOFX_CLSID_FXEQ_LEGACY; | ||||
extern const FAudioGUID FAPOFX_CLSID_FXMasteringLimiter, FAPOFX_CLSID_FXMasteringLimiter_LEGACY; | ||||
extern const FAudioGUID FAPOFX_CLSID_FXReverb, FAPOFX_CLSID_FXReverb_LEGACY; | ||||
extern const FAudioGUID FAPOFX_CLSID_FXEcho, FAPOFX_CLSID_FXEcho_LEGACY; | ||||
/* Structures */ | ||||
#pragma pack(push, 1) | ||||
/* See FAPOFXEQ_* constants below. | ||||
* FrequencyCenter is in Hz, Gain is amplitude ratio, Bandwidth is Q factor. | ||||
*/ | ||||
typedef struct FAPOFXEQParameters | ||||
{ | ||||
float FrequencyCenter0; | ||||
float Gain0; | ||||
float Bandwidth0; | ||||
float FrequencyCenter1; | ||||
float Gain1; | ||||
float Bandwidth1; | ||||
float FrequencyCenter2; | ||||
float Gain2; | ||||
float Bandwidth2; | ||||
float FrequencyCenter3; | ||||
float Gain3; | ||||
float Bandwidth3; | ||||
} FAPOFXEQParameters; | ||||
/* See FAPOFXMASTERINGLIMITER_* constants below. */ | ||||
typedef struct FAPOFXMasteringLimiterParameters | ||||
{ | ||||
uint32_t Release; /* In milliseconds */ | ||||
uint32_t Loudness; /* In... uh, MSDN doesn't actually say what. */ | ||||
} FAPOFXMasteringLimiterParameters; | ||||
/* See FAPOFXREVERB_* constants below. | ||||
* Both parameters are arbitrary and should be treated subjectively. | ||||
*/ | ||||
typedef struct FAPOFXReverbParameters | ||||
{ | ||||
float Diffusion; | ||||
float RoomSize; | ||||
} FAPOFXReverbParameters; | ||||
/* See FAPOFXECHO_* constants below. */ | ||||
typedef struct FAPOFXEchoParameters | ||||
{ | ||||
float WetDryMix; /* Percentage of processed signal vs original */ | ||||
float Feedback; /* Percentage to feed back into input */ | ||||
float Delay; /* In milliseconds */ | ||||
} FAPOFXEchoParameters; | ||||
#pragma pack(pop) | ||||
/* Constants */ | ||||
#define FAPOFXEQ_MIN_FRAMERATE 22000 | ||||
#define FAPOFXEQ_MAX_FRAMERATE 48000 | ||||
#define FAPOFXEQ_MIN_FREQUENCY_CENTER 20.0f | ||||
#define FAPOFXEQ_MAX_FREQUENCY_CENTER 20000.0f | ||||
#define FAPOFXEQ_DEFAULT_FREQUENCY_CENTER_0 100.0f | ||||
#define FAPOFXEQ_DEFAULT_FREQUENCY_CENTER_1 800.0f | ||||
#define FAPOFXEQ_DEFAULT_FREQUENCY_CENTER_2 2000.0f | ||||
#define FAPOFXEQ_DEFAULT_FREQUENCY_CENTER_3 10000.0f | ||||
#define FAPOFXEQ_MIN_GAIN 0.126f | ||||
#define FAPOFXEQ_MAX_GAIN 7.94f | ||||
#define FAPOFXEQ_DEFAULT_GAIN 1.0f | ||||
#define FAPOFXEQ_MIN_BANDWIDTH 0.1f | ||||
#define FAPOFXEQ_MAX_BANDWIDTH 2.0f | ||||
#define FAPOFXEQ_DEFAULT_BANDWIDTH 1.0f | ||||
#define FAPOFXMASTERINGLIMITER_MIN_RELEASE 1 | ||||
#define FAPOFXMASTERINGLIMITER_MAX_RELEASE 20 | ||||
#define FAPOFXMASTERINGLIMITER_DEFAULT_RELEASE 6 | ||||
#define FAPOFXMASTERINGLIMITER_MIN_LOUDNESS 1 | ||||
#define FAPOFXMASTERINGLIMITER_MAX_LOUDNESS 1800 | ||||
#define FAPOFXMASTERINGLIMITER_DEFAULT_LOUDNESS 1000 | ||||
#define FAPOFXREVERB_MIN_DIFFUSION 0.0f | ||||
#define FAPOFXREVERB_MAX_DIFFUSION 1.0f | ||||
#define FAPOFXREVERB_DEFAULT_DIFFUSION 0.9f | ||||
#define FAPOFXREVERB_MIN_ROOMSIZE 0.0001f | ||||
#define FAPOFXREVERB_MAX_ROOMSIZE 1.0f | ||||
#define FAPOFXREVERB_DEFAULT_ROOMSIZE 0.6f | ||||
#define FAPOFXECHO_MIN_WETDRYMIX 0.0f | ||||
#define FAPOFXECHO_MAX_WETDRYMIX 1.0f | ||||
#define FAPOFXECHO_DEFAULT_WETDRYMIX 0.5f | ||||
#define FAPOFXECHO_MIN_FEEDBACK 0.0f | ||||
#define FAPOFXECHO_MAX_FEEDBACK 1.0f | ||||
#define FAPOFXECHO_DEFAULT_FEEDBACK 0.5f | ||||
#define FAPOFXECHO_MIN_DELAY 1.0f | ||||
#define FAPOFXECHO_MAX_DELAY 2000.0f | ||||
#define FAPOFXECHO_DEFAULT_DELAY 500.0f | ||||
/* Functions */ | ||||
/* Creates an effect from the pre-made FAPOFX effect library. | ||||
* | ||||
* clsid: A reference to one of the FAPOFX_CLSID_* GUIDs | ||||
* pEffect: Filled with the resulting FAPO object | ||||
* pInitData: Starting parameters, pass NULL to use the default values | ||||
* InitDataByteSize: Parameter struct size, pass 0 if pInitData is NULL | ||||
* | ||||
* Returns 0 on success. | ||||
*/ | ||||
FAPOFXAPI uint32_t FAPOFX_CreateFX( | ||||
const FAudioGUID *clsid, | ||||
FAPO **pEffect, | ||||
const void *pInitData, | ||||
uint32_t InitDataByteSize | ||||
); | ||||
/* See "extensions/CustomAllocatorEXT.txt" for more details. */ | ||||
FAPOFXAPI uint32_t FAPOFX_CreateFXWithCustomAllocatorEXT( | ||||
const FAudioGUID *clsid, | ||||
FAPO **pEffect, | ||||
const void *pInitData, | ||||
uint32_t InitDataByteSize, | ||||
FAudioMallocFunc customMalloc, | ||||
FAudioFreeFunc customFree, | ||||
FAudioReallocFunc customRealloc | ||||
); | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif /* __cplusplus */ | ||||
#endif /* FAPOFX_H */ | ||||
/* vim: set noexpandtab shiftwidth=8 tabstop=8: */ | ||||