ftchnls — Returns the number of channels in a stored function table.
Returns the number of channels of a GEN01 table, determined from the header of the original file. If the original file has no header or the table was not created by these GEN01, ftchnls returns -1.
Here is an example of the ftchnls opcode. It uses the files ftchnls.csd, mary.wav, and kickroll.wav.
Example 328. Example of the ftchnls 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 ftchnls.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ichnls = ftchnls(p4) print ichnls if (ichnls == 1) then asigL loscil3 .8, 4, p4 asigR = asigL elseif (ichnls == 2) then asigL, asigR loscil3 .8, 4, p4 ;safety precaution if not mono or stereo else asigL = 0 asigR = 0 endif outs asigL, asigR endin </CsInstruments> <CsScore> f 1 0 0 1 "mary.wav" 0 0 0 f 2 0 0 1 "kickroll.wav" 0 0 0 i 1 0 3 1 ;mono file i 1 + 2 2 ;stereo file e </CsScore> </CsoundSynthesizer>
The audio file “mary.wav” is monophonic, the audio file “kickroll.wav” is stereophonic, so its output should include lines like these:
instr 1: ichnls = 1.000 instr 1: ichnls = 2.000