Skip to content

atsinterpread

Allows a user to determine the frequency envelope of any atsbufread.

⚠ Deprecated alias

ATSinterpread is a deprecated alias of atsinterpread in Csound 7. Use atsinterpread in new code. The old name still works for compatibility.

Syntax

kamp = atsinterpread(kfreq)
kamp ATSinterpread kfreq

Initialization

An atsbufread must initialize first in the same instrument, UDO or subinstrument instance. A reader in another instance cannot supply the data. See reader scope and order.

Performance

atsinterpread uses the last atsbufread that ran in its instance. If another local reader runs before it on a later control cycle, it uses that reader's data.

kfreq - a frequency value (given in Hertz) used by atsinterpread as in index into the table produced by an atsbufread.

atsinterpread takes a frequency value (kfreq in Hz). This frequency is used to index the data of an atsbufread. The return value is an amplitude gained from the atsbufread after interpolation. atsinterpread allows a user to determine the frequency envelope of any atsbufread. This data could be useful for an number of reasons, one might be performing cross synthesis of data from an ATS file and non ATS data.

Examples

Here is an example of the atsinterpread opcode. It uses the file atsinterpread-modern.csd.

Example of the atsinterpread opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc for RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o ATSinterpread.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; by Menno Knevel - 2021

res:i = systemi(1, {{ atsa fox.wav fox.ats }}) ; ATSA wants a mono file!

instr 1 
  time:k = line(0, p3, 2.65)
  atsbufread(time, 1, "fox.ats", p4)
  amp:k = atsinterpread(p5)  ; get envelope from partial
  osc:a = poscil3(amp, p5)
  out(osc*8, osc*8)
endin

</CsInstruments>
<CsScore>
;              partial     index         
s
i 1 0 2.65      12          1000
i 1 3 2.65      12          150
i 1 6 2.65      12          10000
s
i 1 0 2.65      72          1000
i 1 3 2.65      72          150
i 1 6 2.65      72          10000
e
</CsScore>
</CsoundSynthesizer>

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

Example of the ATSinterpread opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc for RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o ATSinterpread.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; by Menno Knevel - 2021

ires system_i 1,{{ atsa fox.wav fox.ats }} ; ATSA wants a mono file!

instr 1 

ktime   line    0, p3, 2.65
        ATSbufread ktime, 1, "fox.ats", p4
kamp    ATSinterpread   p5  ; get envelope from partial
aosc    poscil3 kamp, p5
        outs    aosc * 8, aosc * 8

endin

</CsInstruments>
<CsScore>
;              partial     index         
s
i 1 0 2.65      12          1000
i 1 3 2.65      12          150
i 1 6 2.65      12          10000
s
i 1 0 2.65      72          1000
i 1 3 2.65      72          150
i 1 6 2.65      72          10000
e
</CsScore>
</CsoundSynthesizer>

This example shows how to use atsinterpread. Here a frequency is given by the score (p5) and this frequency is given to an atsinterpread (with a corresponding atsbufread). The atsinterpread uses this frequency to output a corresponding amplitude value, based on the atsfile given by the atsbufread (beats.ats in this case). We then use that amplitude to scale a sine-wave that is synthesized with the same frequency (p5). You could extend this to include multiple sine-waves. This way you could synthesize any reasonable frequency (within the low and high frequencies of the indicated ATS file), and maintain the shape (in frequency) of the indicated atsfile (given by the atsbufread).

See also

ATS Spectral Processing

Credits

Author: Alex Norman
Seattle,Washington
2004