ATScross — perform cross synthesis from ATS analysis files.
ATScross uses data from an ATS analysis file and data from an ATSbufread to perform cross synthesis.
ar ATScross ktimepnt, kfmod, iatsfile, ifn, kmylev, kbuflev, ipartials \
[, ipartialoffset, ipartialincr]
iatsfile – integer or character-string denoting a control-file derived from ATS analysis of an audio signal. An integer denotes the suffix of a file ATS.m; a character-string (in double quotes) gives a filename, optionally a full pathname. If not full-path, the file is sought first in the current directory, then in the one given by the environment variable SADIR (if defined).
ifn – table number of a stored function containing a sine wave.
ipartials – number of partials that will be used in the resynthesis
ipartialoffset (optional) – is the first partial used (defaults to 0).
ipartialincr (optional) – sets an increment by which these synthesis opcodes counts up from ipartialoffset for ibins components in the re-synthesis (defaults to 1).
ktimepnt – The time pointer in seconds used to index the ATS file. Used for ATScross exactly the same as for pvoc.
kfmod – an input for performing pitch transposition or frequency modulation on all of the synthesized partials, if no fm or pitch change is desired then use a 1 for this value.
kmylev - scales the ATScross component of the frequency spectrum applied to the partials from the ATS file indicated by the ATScross opcode. The frequency spectrum information comes from the ATScross ATS file. A value of 1 (and 0 for kbuflev) gives the same results as ATSadd.
kbuflev - scales the ATSbufread component of the frequency spectrum applied to the partials from the ATS file indicated by the ATScross opcode. The frequency spectrum information comes from the ATSbufread ATS file. A value of 1 (and 0 for kmylev) results in partials that have frequency information from the ATS file given by the ATScross, but amplitudes imposed by data from the ATS file given by ATSbufread.
ATScross uses data from an ATS analysis file (indicated by iatsfile) and data from an ATSbufread to perform cross synthesis. ATScross uses ktimepnt, kfmod, ipartials, ipartialoffset and ipartialincr just like ATSadd. ATScross synthesizes a sine-wave for each partial selected by the user and uses the frequency of that partial (after scaling in frequency by kfmod) to index the table created by ATSbufread. Interpolation is used to get in-between values. ATScross uses the sum of the amplitude data from its ATS file (scaled by kmylev) and the amplitude data gained from an ATSbufread (scaled by kbuflev) to scale the amplitude of each partial it synthesizes. Setting kmylev to one and kbuflev to zero will make ATScross act exactly like ATSadd. Setting kmylev to zero and kbuflev to one will produce a sound that has all the partials selected by the ATScross ugen, but with amplitudes taken from an ATSbufread. The time pointers of the ATSbufread and ATScross do not need to be the same.
Here is an example of the ATScross opcode. It uses the file ATScross.csd.
Example 75. Example of the ATScross 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 ATScross.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; by Menno Knevel - 2021 ;ATSA wants a mono file! ;it takes a while to analyze these files... ires1 system_i 1,{{ atsa finneganswake1.flac finneganswake.ats }} prints "\n***1st analyzed file is ready***\n\n" ires2 system_i 1,{{ atsa beats.wav beats.ats }} prints "\n***2nd analyzed file is ready***\n\n" instr 1 ipr ATSinfo "finneganswake.ats", 3 ; get number of partials prints "\n***number of partials = %d***\n\n", ipr ktime1 line 0, p3, 12.67 ktime2 line 0, p3, 2 kline line p4, p3, p5 ATSbufread ktime1, 1, "finneganswake.ats", ipr aout ATScross ktime2, 1, "beats.ats", 1, kline, 1, ipr ; cross from p4 to p5 outs aout*1.7, aout*1.7 endin </CsInstruments> <CsScore> ; sine wave. f 1 0 16384 10 1 ; start end i 1 0 12.7 0 1 ; voice --> beats i 1 15 12.7 1 0 ; beats --> voice e </CsScore> </CsoundSynthesizer>
ATSread, ATSreadnz, ATSinfo, ATSsinnoi, ATSbufread, ATSinterpread, ATSpartialtap, ATSadd, ATSaddnz