ftgen — Generate a score function table from within the orchestra.
gir -- either a requested or automatically assigned table number above 100.
ifn -- requested table number If ifn is zero, the number is assigned automatically and the value placed in gir. Any other value is used as the table number
itime -- is ignored, but otherwise corresponds to p2 in the score f statement.
isize -- table size. Corresponds to p3 of the score f statement.
igen -- function table GEN routine. Corresponds to p4 of the score f statement.
iarga, iargb, ... -- function table arguments. Correspond to p5 through pn of the score f statement.
This is equivalent to table generation in the score with the f statement.
Warning | |
---|---|
Although Csound will not protest if ftgen is used inside instr-endin statements, this is not the intended or supported use, and must be handled with care as it has global effects. (In particular, a different size usually leads to relocation of the table, which may cause a crash or otherwise erratic behaviour. |
Here is an example of the ftgen opcode. It uses the file ftgen.csd.
Example 171. Example of the ftgen 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 ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o ftgen.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Table #1, a sine wave using the GEN10 routine. gitemp ftgen 1, 0, 16384, 10, 1 ; Instrument #1 - a basic oscillator. instr 1 kamp = 10000 kcps = 440 ; Use Table #1. ifn = 1 a1 oscil kamp, kcps, ifn out a1 endin </CsInstruments> <CsScore> ; Play Instrument #1 for 2 seconds. i 1 0 2 e </CsScore> </CsoundSynthesizer>
Here is another example of the ftgen opcode. It uses the file ftgen-2.csd.
Example 172. Example of the ftgen opcode.
This example queries a file for it length to create an f-table of the appropriate size.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o ftgen-2.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 48000 ksmps = 16 nchnls = 2 ;Example by Jonathan Murphy 2007 0dbfs = 1 instr 1 Sfile = "beats.wav" ilen filelen Sfile ; Find length isr filesr Sfile ; Find sample rate isamps = ilen * isr ; Total number of samples isize init 1 loop: isize = isize * 2 ; Loop until isize is greater than number of samples if (isize < isamps) igoto loop itab ftgen 0, 0, isize, 1, Sfile, 0, 0, 0 print isize print isamps turnoff endin </CsInstruments> <CsScore> i1 0 10 e </CsScore> </CsoundSynthesizer>