Skip to content

atspartialtap

Returns a frequency, amplitude pair from an atsbufread opcode.

📝 Note

Up to Csound 6, this opcode was called ATSpartialtap.

Syntax

kfrq, kamp = atspartialtap(ipartialnum)
kfrq, kamp ATSpartialtap ipartialnum

Initialization

ipartialnum - selects a partial from the current atsbufread buffer, starting at 1. It must not exceed that reader's ipartials. This is a position within the selected buffer, not the original file's partial number.

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

Performance

kfrq - returns the frequency value for the requested partial.

kamp - returns the amplitude value for the requested partial.

During performance, atspartialtap uses the last atsbufread that ran in its instance. If that reader has fewer partials than ipartialnum, the opcode reports a performance error. A reader in another instance cannot supply the data.

atspartialtap takes a partial number and returns a frequency, amplitude pair. The frequency and amplitude data comes from an atsbufread opcode. This is more restricted version of atsread, since each atsread opcode has its own independent time pointer, and atspartialtap is restricted to the data given by an atsbufread. Its simplicity is its attractive feature.

Examples

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

Example of the atspartialtap 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 ATSpartialtap.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; by Menno Knevel - 2023

; default settings
res1:i = systemi(1, {{ atsa drumsMlp.wav drumsMlp1.ats }})
 ; longer hopsize & more cycles
res2:i = systemi(1, {{ atsa -h.8 -c8 drumsMlp.wav drumsMlp2.ats }})

instr 1 
  time:k = line(0, p3, 2)
  atsbufread(time, 1, p4 , 54)
  freq1:k, amp1:k = atspartialtap(5)
  freq2:k, amp2:k = atspartialtap(20)
  freq3:k, amp3:k = atspartialtap(30)

  out1:a = poscil(amp1, freq1, 1)
  out2:a = poscil(amp2, freq2, 1)
  out3:a = poscil(amp3, freq3, 1)
  Out:a = (out1 + out2 + out3)*10  ; amplify some more
  out(Out*p5, Out*p5)
endin

</CsInstruments>
<CsScore>
f 1 0 16384 10 1 0 .5 0 .33 ; square-ish wave
; stretch the drums...
i 1 0 2 "drumsMlp1.ats"    2.5 ; defaults settings for ATSA
i 1 3 10 "drumsMlp2.ats"   1   ; different settings
e
</CsScore>
</CsoundSynthesizer>

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

Example of the ATSpartialtap 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 ATSpartialtap.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; by Menno Knevel - 2023

ires1 system_i 1,{{ atsa drumsMlp.wav drumsMlp1.ats }} ; default settings
ires2 system_i 1,{{ atsa -h.8 -c8 drumsMlp.wav drumsMlp2.ats }} ; longer hopsize & more cycles

instr 1 

ktime   line    0, p3, 2
        ATSbufread ktime, 1, p4 , 54
kfreq1, kam1    ATSpartialtap  5
kfreq2, kam2    ATSpartialtap  20
kfreq3, kam3    ATSpartialtap  30

aout1   oscil   kam1, kfreq1, 1
aout2   oscil   kam2, kfreq2, 1
aout3   oscil   kam3, kfreq3, 1
aout    =       (aout1+aout2+aout3)*10  ; amplify some more
        outs    aout * p5, aout * p5
endin

</CsInstruments>
<CsScore>
f 1 0 16384 10 1 0 .5 0 .33 ; square-ish wave
; stretch the drums...
i 1 0 2 "drumsMlp1.ats"    2.5 ; defaults settings for ATSA
i 1 3 10 "drumsMlp2.ats"   1   ; different settings
e
</CsScore>
</CsoundSynthesizer>

This example here uses an atspartialtap, and an atsbufread to read partials 5, 20 and 30 from 'beats.ats'. These amplitudes and frequencies could be used to re-synthesize those partials, or something all together different.

See also

ATS Spectral Processing

Credits

Author: Alex Norman
Seattle,Washington
2004