/*=========================================================================== BASS_FX 2.4 - Copyright (c) 2002-2018 (: JOBnik! :) [Arthur Aminov, ISRAEL] [http://www.jobnik.org] bugs/suggestions/questions: forum : http://www.un4seen.com/forum/?board=1 http://www.jobnik.org/forums e-mail : bass_fx@jobnik.org -------------------------------------------------- NOTE: This header will work only with BASS_FX version 2.4.12 Check www.un4seen.com or www.jobnik.org for any later versions. * Requires BASS 2.4 (available at http://www.un4seen.com) ===========================================================================*/ #ifndef BASS_FX_H #define BASS_FX_H #ifdef __cplusplus extern "C" { #endif #ifndef BASS_FXDEF #define BASS_FXDEF(f) WINAPI f #endif // BASS_CHANNELINFO types #define BASS_CTYPE_STREAM_TEMPO 0x1f200 #define BASS_CTYPE_STREAM_REVERSE 0x1f201 // Tempo / Reverse / BPM / Beat flag #define BASS_FX_FREESOURCE 0x10000 // Free the source handle as well? // BASS_FX Version DWORD BASS_FXDEF(BASS_FX_GetVersion)(); /*=========================================================================== DSP (Digital Signal Processing) ===========================================================================*/ /* Multi-channel order of each channel is as follows: 3 channels left-front, right-front, center. 4 channels left-front, right-front, left-rear/side, right-rear/side. 5 channels left-front, right-front, center, left-rear/side, right-rear/side. 6 channels (5.1) left-front, right-front, center, LFE, left-rear/side, right-rear/side. 8 channels (7.1) left-front, right-front, center, LFE, left-rear/side, right-rear/side, left-rear center, right-rear center. */ // DSP channels flags #define BASS_BFX_CHANALL -1 // all channels at once (as by default) #define BASS_BFX_CHANNONE 0 // disable an effect for all channels #define BASS_BFX_CHAN1 1 // left-front channel #define BASS_BFX_CHAN2 2 // right-front channel #define BASS_BFX_CHAN3 4 // see above info #define BASS_BFX_CHAN4 8 // see above info #define BASS_BFX_CHAN5 16 // see above info #define BASS_BFX_CHAN6 32 // see above info #define BASS_BFX_CHAN7 64 // see above info #define BASS_BFX_CHAN8 128 // see above info // if you have more than 8 channels (7.1), use this macro #define BASS_BFX_CHANNEL_N(n) (1<<((n)-1)) // DSP effects enum { BASS_FX_BFX_ROTATE = 0x10000, // A channels volume ping-pong / multi channel BASS_FX_BFX_ECHO, // Echo / 2 channels max (deprecated) BASS_FX_BFX_FLANGER, // Flanger / multi channel (deprecated) BASS_FX_BFX_VOLUME, // Volume / multi channel BASS_FX_BFX_PEAKEQ, // Peaking Equalizer / multi channel BASS_FX_BFX_REVERB, // Reverb / 2 channels max (deprecated) BASS_FX_BFX_LPF, // Low Pass Filter 24dB / multi channel (deprecated) BASS_FX_BFX_MIX, // Swap, remap and mix channels / multi channel BASS_FX_BFX_DAMP, // Dynamic Amplification / multi channel BASS_FX_BFX_AUTOWAH, // Auto Wah / multi channel BASS_FX_BFX_ECHO2, // Echo 2 / multi channel (deprecated) BASS_FX_BFX_PHASER, // Phaser / multi channel BASS_FX_BFX_ECHO3, // Echo 3 / multi channel (deprecated) BASS_FX_BFX_CHORUS, // Chorus/Flanger / multi channel BASS_FX_BFX_APF, // All Pass Filter / multi channel (deprecated) BASS_FX_BFX_COMPRESSOR, // Compressor / multi channel (deprecated) BASS_FX_BFX_DISTORTION, // Distortion / multi channel BASS_FX_BFX_COMPRESSOR2, // Compressor 2 / multi channel BASS_FX_BFX_VOLUME_ENV, // Volume envelope / multi channel BASS_FX_BFX_BQF, // BiQuad filters / multi channel BASS_FX_BFX_ECHO4, // Echo 4 / multi channel BASS_FX_BFX_PITCHSHIFT, // Pitch shift using FFT / multi channel (not available on mobile) BASS_FX_BFX_FREEVERB // Reverb using "Freeverb" algo / multi channel }; /* Deprecated effects in 2.4.10 version: ------------------------------------ BASS_FX_BFX_ECHO -> use BASS_FX_BFX_ECHO4 BASS_FX_BFX_ECHO2 -> use BASS_FX_BFX_ECHO4 BASS_FX_BFX_ECHO3 -> use BASS_FX_BFX_ECHO4 BASS_FX_BFX_REVERB -> use BASS_FX_BFX_FREEVERB BASS_FX_BFX_FLANGER -> use BASS_FX_BFX_CHORUS BASS_FX_BFX_COMPRESSOR -> use BASS_FX_BFX_COMPRESSOR2 BASS_FX_BFX_APF -> use BASS_FX_BFX_BQF with BASS_BFX_BQF_ALLPASS filter BASS_FX_BFX_LPF -> use 2x BASS_FX_BFX_BQF with BASS_BFX_BQF_LOWPASS filter and appropriate fQ values */ // Rotate typedef struct { float fRate; // rotation rate/speed in Hz (A negative rate can be used for reverse direction) int lChannel; // BASS_BFX_CHANxxx flag/s (supported only even number of channels) } BASS_BFX_ROTATE; // Echo (deprecated) typedef struct { float fLevel; // [0....1....n] linear int lDelay; // [1200..30000] } BASS_BFX_ECHO; // Flanger (deprecated) typedef struct { float fWetDry; // [0....1....n] linear float fSpeed; // [0......0.09] int lChannel; // BASS_BFX_CHANxxx flag/s } BASS_BFX_FLANGER; // Volume typedef struct { int lChannel; // BASS_BFX_CHANxxx flag/s or 0 for global volume control float fVolume; // [0....1....n] linear } BASS_BFX_VOLUME; // Peaking Equalizer typedef struct { int lBand; // [0...............n] more bands means more memory & cpu usage float fBandwidth; // [0.1...........<10] in octaves - fQ is not in use (Bandwidth has a priority over fQ) float fQ; // [0...............1] the EE kinda definition (linear) (if Bandwidth is not in use) float fCenter; // [1Hz..