1
1
/*===========================================================================
2
- BASS_FX 2.4 - Copyright (c) 2002-2013 (: JOBnik! :) [Arthur Aminov, ISRAEL]
2
+ BASS_FX 2.4 - Copyright (c) 2002-2018 (: JOBnik! :) [Arthur Aminov, ISRAEL]
3
3
[http://www.jobnik.org]
4
4
5
5
bugs/suggestions/questions:
6
6
forum : http://www.un4seen.com/forum/?board=1
7
- http://www.jobnik.org/smforum
7
+ http://www.jobnik.org/forums
8
8
9
9
--------------------------------------------------
10
10
11
- NOTE: This header will work only with BASS_FX version 2.4.10
11
+ NOTE: This header will work only with BASS_FX version 2.4.12
12
12
Check www.un4seen.com or www.jobnik.org for any later versions.
13
13
14
14
* Requires BASS 2.4 (available at http://www.un4seen.com)
25
25
#define BASS_FXDEF (f ) WINAPI f
26
26
#endif
27
27
28
+ // BASS_CHANNELINFO types
29
+ #define BASS_CTYPE_STREAM_TEMPO 0x1f200
30
+ #define BASS_CTYPE_STREAM_REVERSE 0x1f201
31
+
28
32
// Tempo / Reverse / BPM / Beat flag
29
33
#define BASS_FX_FREESOURCE 0x10000 // Free the source handle as well?
30
34
81
85
BASS_FX_BFX_COMPRESSOR2 , // Compressor 2 / multi channel
82
86
BASS_FX_BFX_VOLUME_ENV , // Volume envelope / multi channel
83
87
BASS_FX_BFX_BQF , // BiQuad filters / multi channel
84
- BASS_FX_BFX_ECHO4 // Echo/Reverb / multi channel
88
+ BASS_FX_BFX_ECHO4 , // Echo 4 / multi channel
89
+ BASS_FX_BFX_PITCHSHIFT , // Pitch shift using FFT / multi channel (not available on mobile)
90
+ BASS_FX_BFX_FREEVERB // Reverb using "Freeverb" algo / multi channel
85
91
};
86
92
87
93
/*
90
96
BASS_FX_BFX_ECHO -> use BASS_FX_BFX_ECHO4
91
97
BASS_FX_BFX_ECHO2 -> use BASS_FX_BFX_ECHO4
92
98
BASS_FX_BFX_ECHO3 -> use BASS_FX_BFX_ECHO4
93
- BASS_FX_BFX_REVERB -> use BASS_FX_BFX_ECHO4 with fFeedback enabled
99
+ BASS_FX_BFX_REVERB -> use BASS_FX_BFX_FREEVERB
94
100
BASS_FX_BFX_FLANGER -> use BASS_FX_BFX_CHORUS
95
101
BASS_FX_BFX_COMPRESSOR -> use BASS_FX_BFX_COMPRESSOR2
96
102
BASS_FX_BFX_APF -> use BASS_FX_BFX_BQF with BASS_BFX_BQF_ALLPASS filter
@@ -287,7 +293,7 @@ typedef struct {
287
293
int lChannel ; // BASS_BFX_CHANxxx flag/s
288
294
} BASS_BFX_BQF ;
289
295
290
- // Echo/Reverb
296
+ // Echo 4
291
297
typedef struct {
292
298
float fDryMix ; // dry (unaffected) signal mix [-2.......2]
293
299
float fWetMix ; // wet (affected) signal mix [-2.......2]
@@ -297,6 +303,31 @@ typedef struct {
297
303
int lChannel ; // BASS_BFX_CHANxxx flag/s
298
304
} BASS_BFX_ECHO4 ;
299
305
306
+ // Pitch shift (not available on mobile)
307
+ typedef struct {
308
+ float fPitchShift ; // A factor value which is between 0.5 (one octave down) and 2 (one octave up) (1 won't change the pitch) [1 default]
309
+ // (fSemitones is not in use, fPitchShift has a priority over fSemitones)
310
+ float fSemitones ; // Semitones (0 won't change the pitch) [0 default]
311
+ long lFFTsize ; // Defines the FFT frame size used for the processing. Typical values are 1024, 2048 and 4096 [2048 default]
312
+ // It may be any value <= 8192 but it MUST be a power of 2
313
+ long lOsamp ; // Is the STFT oversampling factor which also determines the overlap between adjacent STFT frames [8 default]
314
+ // It should at least be 4 for moderate scaling ratios. A value of 32 is recommended for best quality (better quality = higher CPU usage)
315
+ int lChannel ; // BASS_BFX_CHANxxx flag/s
316
+ } BASS_BFX_PITCHSHIFT ;
317
+
318
+ // Freeverb
319
+ #define BASS_BFX_FREEVERB_MODE_FREEZE 1
320
+
321
+ typedef struct {
322
+ float fDryMix ; // dry (unaffected) signal mix [0........1], def. 0
323
+ float fWetMix ; // wet (affected) signal mix [0........3], def. 1.0f
324
+ float fRoomSize ; // room size [0........1], def. 0.5f
325
+ float fDamp ; // damping [0........1], def. 0.5f
326
+ float fWidth ; // stereo width [0........1], def. 1
327
+ DWORD lMode ; // 0 or BASS_BFX_FREEVERB_MODE_FREEZE, def. 0 (no freeze)
328
+ int lChannel ; // BASS_BFX_CHANxxx flag/s
329
+ } BASS_BFX_FREEVERB ;
330
+
300
331
/*===========================================================================
301
332
set dsp fx - BASS_ChannelSetFX
302
333
remove dsp fx - BASS_ChannelRemoveFX
@@ -322,13 +353,18 @@ enum {
322
353
enum {
323
354
BASS_ATTRIB_TEMPO_OPTION_USE_AA_FILTER = 0x10010 , // TRUE (default) / FALSE (default for multi-channel on mobile devices for lower CPU usage)
324
355
BASS_ATTRIB_TEMPO_OPTION_AA_FILTER_LENGTH , // 32 default (8 .. 128 taps)
325
- BASS_ATTRIB_TEMPO_OPTION_USE_QUICKALGO , // TRUE (default on mobile devices for loswer CPU usage) / FALSE (default)
356
+ BASS_ATTRIB_TEMPO_OPTION_USE_QUICKALGO , // TRUE (default on mobile devices for lower CPU usage) / FALSE (default)
326
357
BASS_ATTRIB_TEMPO_OPTION_SEQUENCE_MS , // 82 default, 0 = automatic
327
358
BASS_ATTRIB_TEMPO_OPTION_SEEKWINDOW_MS , // 28 default, 0 = automatic
328
359
BASS_ATTRIB_TEMPO_OPTION_OVERLAP_MS , // 8 default
329
360
BASS_ATTRIB_TEMPO_OPTION_PREVENT_CLICK // TRUE / FALSE (default)
330
361
};
331
362
363
+ // tempo algorithm flags
364
+ #define BASS_FX_TEMPO_ALGO_LINEAR 0x200
365
+ #define BASS_FX_TEMPO_ALGO_CUBIC 0x400 // default
366
+ #define BASS_FX_TEMPO_ALGO_SHANNON 0x800
367
+
332
368
HSTREAM BASS_FXDEF (BASS_FX_TempoCreate )(DWORD chan , DWORD flags );
333
369
DWORD BASS_FXDEF (BASS_FX_TempoGetSource )(HSTREAM chan );
334
370
float BASS_FXDEF (BASS_FX_TempoGetRateRatio )(HSTREAM chan );
0 commit comments