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. It uses the file 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).