filepeak — Returns the peak absolute value of a sound file.
ifilcod -- sound file to be queried
ichnl (optional, default=0) -- channel to be used in calculating the peak value. Default is 0.
ichnl = 0 returns peak value of all channels
ichnl > 0 returns peak value of ichnl
Here is an example of the filepeak opcode. Play filepeak.csd, and Church.wav
Example 298. Example of the filepeak opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o filepeak.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 iscaldb = p4 ;set peak amplitude in dB ipeak filepeak "Church.wav" iscal = ampdb(iscaldb)/ipeak ;calculate amp multiplier printf_i "\nPeak value in file '%s' is %f (%.3f dB).\n\n", 1, "Church.wav", ipeak, dbamp(ipeak) asnd soundin "Church.wav" outs asnd, asnd ; scale & write file to disk asig = asnd*iscal ;scale to p4 fout "Church_norm.wav", 14, asig endin instr 2 ; play scaled file aout soundin "Church_norm.wav" ipknew filepeak "Church_norm.wav" printf_i "\nPeak value in file '%s' is %f (%.3f dB).\n\n", 1, "Church_norm.wav", ipknew, dbamp(ipknew) outs aout, aout endin </CsInstruments> <CsScore> i 1 0 2 -6 ; normalize audio to -6 dB i 2 2 2 e </CsScore> </CsoundSynthesizer>
The filepeak's output should include lines like this:
Peak value in file 'Church.wav' is 0.909363 (-0.825 dB). Peak value in file 'Church_norm.wav' is 0.501190 (-6.000 dB).