nsamp — Returns the number of samples loaded into a stored function table number.
Returns the number of samples loaded into stored function table number x by GEN01. This is useful when a sample is shorter than the power-of-two function table that holds it. New in Csound version 3.49.
As of Csound version 5.02, nsamp works with deferred-length function tables (see GEN01).
nsamp differs from ftlen in that nsamp gives the number of sample frames loaded, while ftlen gives the total number of samples. For example, with a stereo sound file of 10000 samples, ftlen() would return 19999 (i.e. a total of 20000 mono samples, not including a guard point), but nsamp() returns 10000.
Here is an example of the nsamp opcode. Play nsamp.csd, drumsSlp.wav and fox.wav
Example 664. Example of the nsamp 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 nsamp.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; slightly adapted example from Jonathan Murphy Dec 2006 ; by Menno Knevel 2022 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ifn = p4 ; table number ilen = nsamp(ifn) prints "\nactual numbers of samples = %d\n\n", ilen itrns = 1 ; no transposition ilps = 0 ; loop starts at index 0 ilpe = ilen ; ends at value returned by nsamp above imode = 1 ; loops forward istrt = 0 ; commence playback at index 0 samples ; lphasor provides index into f1 alphs lphasor itrns, ilps, ilpe, imode, istrt atab tablei alphs, ifn outs atab, atab endin </CsInstruments> <CsScore> f 1 0 262144 1 "drumsSlp.wav" 0 4 1 ;stereo file in table, with lots of zeroes f 2 0 262144 1 "fox.wav" 0 4 1 ;mono file in table, with lots of zeroes i1 0 10 1 i1 + 10 2 e </CsScore> </CsoundSynthesizer>
Since the stereo audio file “drumsSlp.wav” has 176400 samples and the mono file “fox.wav” has 121569 samples, its output should include lines like these:
actual numbers of samples = 176400 actual numbers of samples = 121569