Author Topic: Re: Normalize output sound?!  (Read 1846 times)

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« on: 16 Dec '19 - 15:23 »
i have a question :) i have final target sound as PCM 8bit mono and 10.2khz as maximum frequency. i have some encode code, that do from some wav high quality samples - this 10.2 and it is work fine for me. but i am not understand how to get same volume, as original samples have. they are have nice volume - loud and clear. my conveters results is a little lower volume. and sometimes it eat some sounds. like "S" sound - some times after convert it becomes to "SH" - some noise. some one says it need some normalizations.

can some one a little help with that normalizations? and with 10.2khz as maximum. by my theory probably it need to make some equalizer and cut some high and low frequencys and up some middle (it is voice at most) and only then make some convert. and it save original sound "S" for one of my cases. but still low volume.

it need for making tool for romhacks of old Sega Mega Drive 2 games and replace original sounds if it need.

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #1 on: 16 Dec '19 - 17:44 »
Reducing the sample rate will remove higher frequencies (above 5100 Hz in your case), which may make it sound more muffled/dead. Converting to 8-bit (if originally higher) will also reduce sound quality. The level of the remaining sound shouldn't really change though. How are you currently doing the conversion? If you aren't already, you could try using the BASSmix add-on to do it, ie. create a 10200 Hz mono 8-bit mixer and process the file through it. That could look something like this:

Code: [Select]
decoder = BASS_StreamCreateFile(FALSE, filename, 0, 0, BASS_STREAM_DECODE); // create a decoder for the orignal file
BASS_ChannelSetAttribute(decoder, BASS_ATTRIB_SRC, 6); // set it to use the highest SRC quality
mixer = BASS_Mixer_StreamCreate(10200, 1, BASS_SAMPLE_8BITS | BASS_MIXER_END | BASS_STREAM_DECODE); // create a 10200 Hz mono 8-bit mixer
BASS_Encode_Start(mixer, "output.wav", BASS_ENCODE_PCM | BASS_ENCODE_AUTOFREE, NULL, NULL); // set a WAV writer on it
BASS_Mixer_StreamAddChannel(mixer, decoder, BASS_MIXER_NORAMPIN | BASS_STREAM_AUTOFREE); // plug in the decoder
while (true) { // processing loop...
BYTE buf[20000];
if (BASS_ChannelGetData(mixer, buf, sizeof(buf)) == -1) break; // process the mixer until it fails/ends
}
BASS_StreamFree(mixer); // free the mixer (and source and WAV writer due to AUTOFREE)

Please see the documentation for details on the mentioned functions/options.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #2 on: 16 Dec '19 - 17:52 »
with converting is no problem :) all from this forum and works fine.
Code: [Select]
                       ;// Create a decoding channel from the source file
                       Decoder = BASS_StreamCreateFile(#True, *SoundData, 0, SampSize, #BASS_STREAM_DECODE)
                       
                       ;// Create a mixer To change the sample rate To 32 kHz (32 it was with original comments, i just left that as is)
                       Mixer   = BASS_Mixer_StreamCreate(RecOutputFrequency, 1, #BASS_STREAM_DECODE|#BASS_SAMPLE_8BITS)
                       
                       ;// Add the decoder To the mixer  As a channel
                       BASS_Mixer_StreamAddChannel(Mixer, Decoder, #BASS_MIXER_DOWNMIX);
                       
                       ;create memory for 10 sec
                       *MemStore = AllocateMemory(104000)
                       
                       ;// Set a WAV writer on it |#BASS_ENCODE_NOHEAD
                       BASS_Encode_Start(Mixer, #Null, #BASS_ENCODE_PCM|#BASS_ENCODE_NOHEAD, @EncodeCallback(), #NUL)

end etc...
                       

i am just try to find some trues for some kind of normalization, that can make my output sample more louder and clear, as they sounds with original samples.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #3 on: 16 Dec '19 - 18:06 »
this is archive with samples from game. they all without head, so i made some player for playing. sfx plays very loud. original voice - a much lower but this is ok (try 1D and next samples in my player). and samples 00 number - it is my trying to convert. that sounds veeery low. original quality samples is here too - stark nimfa.wav

can you a little help to explain - what it need to be done, to get volume almost as it is for SFX samples? maybe it have some kind of law for normalizations... or formulas. how our ancestors from 90s create so nice loud-samples, and i cant repeat same thing? :)

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #4 on: 17 Dec '19 - 17:23 »
You shouldn't need to normalize when just converting sample rates. Have you compared the original and converted file waveforms in a sample editor? If they appear to have a similar level there then perhaps it is the software that is raising the level when playing the original sounds?

You could also try setting BASS_ATTRIB_SRC to 6 (highest quality) in your conversion code above and see if/what difference that makes:

Code: [Select]
BASS_ChannelSetAttribute(Decoder, BASS_ATTRIB_SRC, 6);

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #5 on: 17 Dec '19 - 23:05 »
it is play as it is - no any gain volume for player for SFX sounds. original voice is low too, but my converted result even lower, that it is. but SFX samples with shoots and kicks is very loud. i want to get my converted samples sounds same, as that SFX or closer to them - loud, but clear same time. i am hope bass.dll can make some kind of normalization to make my samples a little louder. this normalization can be made with bass.dll?

second item - equalizer. i think it need to cut high and low frequency and a little up middle (for voice case). by my theory it will save "S" sound. now it sounds as "SH" - some noise, not as clear "S".

and only after this two operations make convert into 10.2khz. (or better to convert and then make that normalization and equalizer edit?)

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #6 on: 18 Dec '19 - 14:57 »
it is play as it is - no any gain volume for player for SFX sounds. original voice is low too, but my converted result even lower, that it is. but SFX samples with shoots and kicks is very loud. i want to get my converted samples sounds same, as that SFX or closer to them - loud, but clear same time. i am hope bass.dll can make some kind of normalization to make my samples a little louder. this normalization can be made with bass.dll?

Oh, I see.

Normalization requires an additional pass to get the current level. You can use BASS_ChannelGetLevelEx in that. For example, like this:

Code: [Select]
float peak = 0; // peak level
while (true) {
float level;
if (!BASS_ChannelGetLevelEx(Decoder, &level, 1, BASS_LEVEL_MONO)) // get the peak level of the next 1s
break; // done
if (peak < level) peak = level; // found a new peak
}

You can then use the BASS_FX_VOLUME effect to normalize the level based on that "peak" reading, like this:

Code: [Select]
volfx = BASS_ChannelSetFX(Decoder, BASS_FX_VOLUME, 0);
BASS_FX_VOLUME_PARAM param;
param.fTarget = 1.0 / peak;
param.fTime = 0;
BASS_FXSetParamters(volfx, &param);

Then rewind the decoder (BASS_ChannelSetPosition with pos=0) and do your conversion.

If you just want to make the samples a bit louder (not necessarily normalized) then you can skip the peak scanning step and just set "param.fTarget" to whatever you want.
   
second item - equalizer. i think it need to cut high and low frequency and a little up middle (for voice case). by my theory it will save "S" sound. now it sounds as "SH" - some noise, not as clear "S".

That sounds like aliasing. If so, setting BASS_ATTRIB_SRC to 6 should help. Did you already try that?

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #7 on: 18 Dec '19 - 16:11 »
yes, just right now i am finish do this. same SH - like short Hi-Hat sound :)

#BASS_ATTRIB_SRC it self - it is 8 value correct?

and it was correct place, where i am set that?

Code: [Select]
                       ;// Create a decoding channel from the source file
                       Decoder = BASS_StreamCreateFile(#True, *SoundData, 0, SampSize, #BASS_STREAM_DECODE)
                       BASS_ChannelSetAttribute(Decoder, #BASS_ATTRIB_SRC, 6);
                       
                       ;// Create a mixer To change the sample rate To 32 kHz
                       Mixer   = BASS_Mixer_StreamCreate(RecOutpu...


about that peak and volume... it will be dificult. i will try to convert into my PureBasic language.


SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #8 on: 18 Dec '19 - 16:22 »
where to get #BASS_LEVEL_MONO value?
; BASS_ChannelGetLevelEx flags
#BASS_LEVEL_MONO = 1
#BASS_LEVEL_STEREO = 2
#BASS_LEVEL_RMS = 4
#BASS_LEVEL_VOLPAN = 8

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #9 on: 18 Dec '19 - 16:45 »
#BASS_ATTRIB_SRC it self - it is 8 value correct?

and it was correct place, where i am set that?

Code: [Select]
                       ;// Create a decoding channel from the source file
                       Decoder = BASS_StreamCreateFile(#True, *SoundData, 0, SampSize, #BASS_STREAM_DECODE)
                       BASS_ChannelSetAttribute(Decoder, #BASS_ATTRIB_SRC, 6);
                       
                       ;// Create a mixer To change the sample rate To 32 kHz
                       Mixer   = BASS_Mixer_StreamCreate(RecOutpu...

Yes, the value of BASS_ATTRIB_SRC is 8 and that BASS_ChannelSetAttribute call is correct. If it still isn't sounding right, please upload the original sample file and your conversion to have a look at here:

   ftp.un4seen.com/incoming/

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #10 on: 18 Dec '19 - 17:17 »
remeber that my archive, that i attach above examples samples.zip? it have that sample - stark nimfa.wav

converted version is sample_00 that can be play from that my player. but it was before BASS_ChannelSetAttribute... but now it same. eat "S" sound and make "SH". she says: house Stark, but it sounds as house Shtark. (not house exactly, but some "dom" - it is house for our language :)

about your ftp - not clear what i need do. and then i have forever loop for this case:
Code: [Select]
                       ;// Create a decoding channel from the source file
                       Decoder = BASS_StreamCreateFile(#True, *SoundData, 0, SampSize, #BASS_STREAM_DECODE)
                       BASS_ChannelSetAttribute(Decoder, #BASS_ATTRIB_SRC, 6);

                       SEpeak.l = 0
                       SElevel.l
                       Repeat
                         If (BASS_ChannelGetLevelEx(Decoder, @SElevel, 1, #BASS_LEVEL_MONO))
                           Break
                         EndIf
                         
                         If (SEpeak < SElevel)
                           SEpeak = SElevel
                         EndIf
                       ForEver
                       Debug SEpeak

your "&level" - it is like it need to write into memory? probably my case is @level.

probably i am doing something wrong as always :) what that function do? check all file every byte for them value and search maximum? maybe a can do this with cycle with byte per byte comparison? i can do this. or this function do something another?

and i am going to my programm-language forum for correct convert your code into mine.

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #11 on: 20 Dec '19 - 14:58 »
remeber that my archive, that i attach above examples samples.zip? it have that sample - stark nimfa.wav

converted version is sample_00 that can be play from that my player. but it was before BASS_ChannelSetAttribute... but now it same. eat "S" sound and make "SH". she says: house Stark, but it sounds as house Shtark. (not house exactly, but some "dom" - it is house for our language :)

The problem is that the "S" sound is mostly above 5100 Hz, which will be lost when reducing the sample rate to 10200 Hz, or will appear partially at lower frequencies instead if there's aliasing. Your sample_00 file is looking a bit different to what I'm getting from BASSmix. Please confirm what BASSmix version you're using and on what platform.

8-bit and low volume levels don't go well together, which I guess is why you want to raise the level. It looks like you may have raised the level slightly after converting to 8-bit in your sample_00 file? Any level change should be applied before converting to 8-bit (before detail is lost). I think it would be best to stick with 16-bit though, unless you have a particularly good reason that it needs to be 8-bit.

your "&level" - it is like it need to write into memory? probably my case is @level.

Yes, that is passing the address of the "level" variable rather than the value of it, so that BASS_ChannelGetLevelEx can set its value. Note the "break" should come if that call fails (returns FALSE), not if it succeeds (returns TRUE).

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #12 on: 22 Dec '19 - 20:23 »
i have 2 04 08 00 version. now download last one. it is... 2 04 09 00. same happen - a little eat "S". thanks a lot for your help, but probably i will use your competitor's product. it can do normalization. it make louder white noice too, but it is fine for Sega Mega Drive 2. it is bad logictik for my program, it is not single dll, but exe with a tonns of dlls... it is village's method of ogranization for this process, but result is better. not eat "S" and can do normalization (or just gain volume).

and with convert your code into my language - i have fail. so i cant attach last modification, as you talk. so i left it as is.

now i am update bass.mix, and save old method convert into 10.2khz with bass.dll, but add two new one ways: with that external programm as is, and with that external programm with "norm" param.

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #13 on: 23 Dec '19 - 16:14 »
If you're having trouble with the level scanning step, perhaps you could just skip that and use a predefined (or configurable) "fTarget" value with the BASS_FX_VOLUME effect? For example, "2.0" will double the level.

Regarding setting BASS_ATTRIB_SRC, make sure your BASS_ChannelSetAttribute function declaration specifies that the "value" parameter is a 32-bit floating-point number aka "float" (not an integer).

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #14 on: 24 Dec '19 - 13:51 »
Regarding setting BASS_ATTRIB_SRC, make sure your BASS_ChannelSetAttribute function declaration specifies that the "value" parameter is a 32-bit floating-point number aka "float" (not an integer).
yes yes... i am dumbass :) it is help and now it is not eat "S" sound.

about volumes - yes, i have eternal loops for this case. i am not sure about correct inserting it into my code.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #15 on: 25 Dec '19 - 21:57 »
i have eternal loops at another place :( While (BASS_ChannelIsActive(Decoder) = #BASS_ACTIVE_PLAYING)

Code: [Select]

Procedure EncodeCallback(handle.i, channel.a, *buffer, length.i, *user)
 
  Define Rec=#True
 
  CopyMemory(*buffer, *MemStore + EncSampleSize, length)
  EncSampleSize + length
 
  ProcedureReturn Rec
 
EndProcedure
                       ; global value
                       EncSampleSize = 0
                       
                       ;// Create a decoding channel from the source file
                       Decoder = BASS_StreamCreateFile(#True, *SoundData, 0, SampSize, #BASS_STREAM_DECODE)
                       BASS_ChannelSetAttribute(Decoder, #BASS_ATTRIB_SRC, 6);
                       
                       ; Normalization requires an additional pass to get the current level.
                       ; You can use BASS_ChannelGetLevelEx in that.
                       SElevel.f
                       SEpeak.f
                       Repeat
                         BASS_ChannelGetLevelEx(Decoder, @SElevel, 1, #BASS_LEVEL_MONO);
                         If SElevel
                           ; if any value exist
                           If (SEpeak < SElevel) : SEpeak = SElevel : EndIf
                         EndIf
                         Debug SElevel ; will show 0.18115234375
                                       ; then      0.19171142578125
                                       ; then      0 - end of loop
                         
                       Until SElevel = 0 ; repeat until SElevel = 0. end of playing?
                       
                       ;BASS_ChannelSetPosition(Decoder, 0, #BASS_POS_BYTE)
                       
                       ; You can then use the BASS_FX_VOLUME effect To normalize the level
                       ; based on that "peak" reading, like this:
                       SEvolfx = BASS_ChannelSetFX(Decoder, #BASS_FX_VOLUME, 0)
                       SEparam.BASS_FX_VOLUME_PARAM
                       SEparam\fTarget = 1.0 / SEpeak
                       SEparam\fTime = 0;
                       BASS_FXSetParameters(SEvolfx, SEparam);
                       
                       ; Then rewind the decoder (BASS_ChannelSetPosition With pos=0) And do your conversion.
                       BASS_ChannelSetPosition(Decoder, 0, #BASS_POS_BYTE)
                       
                       ;// Create a mixer To change the sample rate To 10.4 kHz
                       Mixer   = BASS_Mixer_StreamCreate(RecOutputFrequency, 1, #BASS_STREAM_DECODE|#BASS_SAMPLE_8BITS)
                       
                       ;// Add the decoder To the mixer  As a channel
                       BASS_Mixer_StreamAddChannel(Mixer, Decoder, #BASS_MIXER_DOWNMIX);
                       
                       ; memory for 10 sec sample
                       *MemStore = AllocateMemory(104000)
                       
                       ;// Set a WAV writer on it |#BASS_ENCODE_NOHEAD
                       BASS_Encode_Start(Mixer, #Null, #BASS_ENCODE_PCM|#BASS_ENCODE_NOHEAD, @EncodeCallback(), #NUL)
                       
                       ; wait, until conver happen:
                       DisableWindow(#WindowIII, 1)
                       SetCursor_(cur2) : Debug "start wait"
                       While (BASS_ChannelIsActive(Decoder) = #BASS_ACTIVE_PLAYING)
                         BASS_ChannelGetData(Mixer, @Buf, SizeOf(Buf));
                         ;Debug "eternal loop" ;: End
                       Wend
                       SetCursor_(cur0) : Debug "done"
                       DisableWindow(#WindowIII, 0)
                       

all that is working before i am add BASS_ChannelSetFX and BASS_FXSetParameters and BASS_ChannelSetPosition
« Last Edit: 27 Dec '19 - 14:25 by SeregaZ »

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #16 on: 27 Dec '19 - 14:27 »
Code: [Select]
                       Repeat
                         BASS_ChannelGetLevelEx(Decoder, @SElevel, 1, #BASS_LEVEL_MONO);
                         If SElevel
                           ; if any value exist
                           If (SEpeak < SElevel) : SEpeak = SElevel : EndIf
                         EndIf
                         Debug SElevel ; will show 0.18115234375
                                       ; then      0.19171142578125
                                       ; then      0 - end of loop
                         
                       Until SElevel = 0 ; repeat until SElevel = 0. end of playing?

You should exit the loop when BASS_ChannelGetLevelEx returns 0 (instead of using the "SElevel" value for that).

Code: [Select]
                       ;// Create a mixer To change the sample rate To 10.4 kHz
                       Mixer   = BASS_Mixer_StreamCreate(RecOutputFrequency, 1, #BASS_STREAM_DECODE|#BASS_SAMPLE_8BITS)

You need to add the BASS_MIXER_END flag to the BASS_Mixer_StreamCreate call to make the mixer end when its source(s) does. That should prevent the eternal BASS_ChannelIsActive loop problem.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #17 on: 27 Dec '19 - 15:02 »
thanks a lot :) now sounds better, that is was before with another programm - no little white noise :) i will make two variants for bass.dll - as is and second one - with normalization.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #18 on: 31 Jul '22 - 09:46 »
dear Ian, i am hope you still here on a forum :) after few years i have a question - can bass.dll make some preset equalizer when will do this normalisation and resampling? we think to make some a little cut for high part of equalizer. need experiments.

FX dll was loaded fine - version shows some data and BASS_FXSetParameters later in a code, where i am do normalization - work fine.

i have 10 channels equalizer. want same as winamp, but i have windows and it says: it can be from 80 to 16000 (winamp starts from 60). ok, let it be 80. but i cant set 16000 at last channel. this last value depends from bandwidth and gain. if bandwidth set to 1 - highest center can be 14700 - if i set higher error shows 20 - 20 BASS_ERROR_ILLPARAM. i set 9 channels now and kick out 10. now last is 14000.

and i didnt see difference when i set -15 for gain. only if i have positive value 1 to 15. why it is not want to decrease equalizer? whole idea to cut some, but system not want to do that :) or i need to cut that equalizer after normalisation?
 

and have bass.dll dithering for resampling? can it be disabled?
« Last Edit: 1 Aug '22 - 07:13 by SeregaZ »

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #19 on: 1 Aug '22 - 13:20 »
i have 10 channels equalizer. want same as winamp, but i have windows and it says: it can be from 80 to 16000 (winamp starts from 60).

You can use the BASS_FX add-on's BASS_FX_BFX_PEAKEQ effect (instead of BASS_FX_DX8_PARAMEQ) to avoid that limit. It also has the advantage of supporting multiple bands, so you can use a single effect instance (one BASS_ChannelSetFX call) for all 10 bands. Note that the BASS_FX add-on needs to be loaded before you can use any effects from it - you can achieve that by calling a function from it, eg. BASS_FX_GetVersion during initialization.

and have bass.dll dithering for resampling? can it be disabled?

No, BASS doesn't do dithering. If you're using BASSenc for file writing, that does have the option (BASS_ENCODE_DITHER), but it isn't enabled by default.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #20 on: 3 Aug '22 - 18:37 »
not very clear for me :(

BASS_DX8_PARAMEQ is better :) only 3 params. volume and frequency - i am understand. only not realy bandwidth... it is some widht of frequency, which will be changed? somekind i set for Center - 100 hz. but set for bandwidth - 6 for example. it means it will be changed not only 100hz, but from 97 to 103 hz? i think need to set 1 as param for this bandwidth.

but this BASS_BFX_BQF have a lot of not understandible params :)
SEpar\fCenter = 100
SEpar\lFilter = 1
SEpar\fGain = -10
SEpar\fBandwidth = 1
SEpar\fS = 0.1
SEpar\fQ = 0.1
SEpar\lChannel = -1

for lFilter i dont know sure which i need. 1 it is BASS_BFX_BQF_HIGHPASS probably...
fGain - understand - volume for this frequency - Center 100 hz.
lChannel = -1 - it set effect for both channel right and left?
same fBandwidth... and fS and fQ... i dont know which exactly params i need :(

so then i need to spam this command:
SEpar\fCenter = 100
SEpar\fGain = -10
BASS_FXSetParameters(SEid, SEpar)

SEpar\fCenter = 200
SEpar\fGain = -5
BASS_FXSetParameters(SEid, SEpar)

SEpar\fCenter = 300
SEpar\fGain = 4
BASS_FXSetParameters(SEid, SEpar)

and etc? for every line of equalizer, what i want? i am no need to trace old frequency value - to remove old fGain. i will use every time default image.


my comrade says:
you need to cut 200-500 hz for -3 or even -6db. important part 500-2500 hz (and 1000 hz can be increased). more than 7-8k you can cut at all.
how to complete his task? our target to make clear and loud voice samples for future using with sega genesis games with 10.4khz quality of PCM 8 bit mono.

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #21 on: 4 Aug '22 - 12:15 »
When switching from BASS_FX_DX8_PARAMEQ to BASS_FX_BFX_PEAKEQ, you would still use the fBandwidth parameter but set it to 1/12 of the original value (octaves vs semitones). There's some example code for a 10 band equalizer with BASS_FX_BFX_PEAKEQ here:

   www.un4seen.com/forum/?topic=18978.msg132890#msg132890

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #22 on: 4 Aug '22 - 13:54 »
it means i am no need other params in that structure? let lFilter, fS and fQ - all three = 0 ?

Ian @ un4seen

  • Administrator
  • Posts: 24589
Re: Normalize output sound?!
« Reply #23 on: 4 Aug '22 - 15:10 »
Please note that I wrote BASS_FX_BFX_PEAKEQ, not BASS_FX_BFX_BQF :)

fQ is the only one of those parameters that it has, and it is ignored when fBandwidth is used. You can leave it at 0.

SeregaZ

  • Posts: 30
Re: Normalize output sound?!
« Reply #24 on: 4 Aug '22 - 16:03 »
yes, i am understand that.
BASS_BFX_BQF - structure, for using with BASS_FXSetParameters() function.
BASS_FX_BFX_PEAKEQ - flag for using as parameter in a function BASS_ChannelSetFX().

thanks, will try.