foutk

foutk — Outputs k-rate signals of an arbitrary number of channels to a specified file, in raw (headerless) format.

Description

foutk outputs N k-rate signals to a specified file of N channels.

Syntax

foutk ifilename, iformat, kout1 [, kout2, kout3,....,koutN]

Initialization

ifilename -- the output file's name (in double-quotes).

iformat -- a flag to choose output file format (note: Csound versions older than 5.0 may only support formats 0 and 1):

  • 0 - 32-bit floating point samples without header (binary PCM multichannel file)

  • 1 - 16-bit integers without header (binary PCM multichannel file)

  • 2 - 16-bit integers without header (binary PCM multichannel file)

  • 3 - u-law samples without header

  • 4 - 16-bit integers without header

  • 5 - 32-bit integers without header

  • 6 - 32-bit floats without header

  • 7 - 8-bit unsigned integers without header

  • 8 - 24-bit integers without header

  • 9 - 64-bit floats without header

Performance

kout1,...koutN -- control-rate signals to be written to the file. The expected range of the signals is determined by the selected sample format.

foutk operates in the same way as fout, but with k-rate signals. iformat can be set only in the range 0 to 9, or 0 to 1 with an old version of Csound.

Notice that fout and foutk can use either a string containing a file pathname, or a handle-number generated by fiopen. Whereas, with fouti and foutir, the target file can be only specified by means of a handle-number.

Examples

Here is an example of the foutk opcode. It uses the file foutk.csd.

Example 377. Example of the foutk 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 real audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o foutk.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Stefano Cucchi - 2020

; Sing in your microphone for 10''
; Estimated pitch & amplitude are written on 2 files "amp" 6 "pitch"
; After 10'' a sawtooth is played with these values


sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1


instr 1	;use pitch

iupdte = 0.001
ilo = 6
ihi = 10
idbthresh = 10
ifrqs = 24
iconf = 10
istrt = 8

asig1, asig2 inch 1, 2
koct, kamp pitch asig1, iupdte, ilo, ihi, idbthresh, ifrqs, iconf, istrt ; pitch & amplitude tracking

kcps = cpsoct(koct)
kamp = kamp*0.00002
foutk "amp", 6, kamp ; write amplitude values on a file - 32-bit floats without header
foutk "pitch", 6, kcps ;  write pitch values on a file - 32-bit floats without header

endin

instr 2

kamp readk "amp", 6, p4 ; read amplitude values fro the file
kcps readk "pitch", 6, p4 ; read pitchvalues fro the file

kcps portk kcps, 0.008
asig oscili kamp, kcps*p5, 1 ; use amplitude & pitch to play a sawtooth
kdeclick linseg 0, 0.2, 1, p3 -0.4, 1, 0.2, 0

outs asig*kdeclick, asig*kdeclick

endin

</CsInstruments>
<CsScore>

f1 0 16384 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111   ;sawtooth

i 1 0 10 
i 2 10 10 0.001 1 ;
e
</CsScore>
</CsoundSynthesizer>


To avoid zipper noise, by discontinuities produced from complex envelope tracking, a lowpass filter could be used, to smooth the estimated envelope.

See also

File Input and Output

Credits

Author: Gabriel Maldonado
Italy
1999

New in Csound version 3.56