Mixing GEN Routines – GEN18, 31, 32

Mixing GEN Routines GEN18, 31, 32
waverform들을 하나로 묶어주는 GEN18, GEN31, GEN32.

—————————————————————————————–
GEN18

Description
이미 존재하는 waveform들로 합성된 waveform들을 구성한다. 각 waveform은 4개의 p-firlds가 필요하며, 서로 overlap할 수 있다.

Syntax
f # time size 18 fna  ampa  starta  finisha  fna  ampa  starta  finisha …

Initialization
size — table 크기. 2의 제곱+1
fna, fnb, etc.   — 이미 존재하며 다시 테이블에 쓰여질 table 번호
ampa, ampb, etc.   — wavefoms의 강도. 합성 waveform이 나중에 rescale될것이기 때문에 상대적인 강도이다. 음수의 값을 지정해주면 180도로 위상이동한다
starta, startb, etc.   — table안으로 fn을 쓰기 시작할 곳.
finisha, finishb, etc. — table안으로 fn을 쓰기 멈출 곳.

Examples
f 1  0  4096  10  1
f 2  0  1025  18  1  1  0  512  1  1  513  1025
        
;f2 는 2개의 f으로 구성되어있으며 0~512와 513~1025에 쓰여진다.

Deprecated Names
GEN18 은 version 4.18에서는 GEN22이었다.  DirectCsound와 혼동을 피하기 위하여 옮겨졌음.

—————————————————————————————–
GEN31

Description
GEN09와 비슷하지만 이미 존재하는 table에서 정의된 어떤 waveform이든 mixing할 수 있다.

Syntax
f # time size  31  src   pna  stra  phsa   pnb  strb  phsb  …

Performance
src  — source table number
pna, pnb, … — partial number, 반드시 양의 정수여야 함
stra, strb, … — amplitude scale
phsa, phsb, … — 시작하는 위상 값(0~1)
GEN31 은 확장된 가드 포인트를 허용하지 않는다. (예. table size = 2의 제곱 + 1). 이런 테이블들이 입/출력에서 작동된다 하지만, 소스 테이블이 읽혀질 때 가드 포인트는 무시된다. 그리고 출력 테이블이 쓰여질 때(writing) 가드 포인트는 단순히 첫 번째 샘플로부터 복사된다. (table index = 0).
이러한 제한의 원인은 GEN31 이 FFT를 사용하기 때문이다. (FFT는 2의 제곱의 table size를 사용함) GEN32 는 resampling할 때와 위상 이동에서 선형적인 내삽값을 사용한다. 그리고 그것은 어떤 table siz를 사용하는 것이든 상관없게 된다. (그러나 FFT로 계산될 partial들은 GEN 32에서도 반드시 이런 제한이 적용됨을 잊지 말 것!).

—————————————————————————————–
GEN32

Description
GEN31와 비슷하지만 각각 partial에 정의된 소스 ftable을 허용한다. 테이블은 FFT나 선형 내삽값 둘중 하나로 resample될 수 있다.

Syntax
f # time size  32  srca  pna  stra  phsa  srcb  pnb  strb  phsb  …

Performance
srca, srcb   — source table number. 음수의 값은 table을 선형 내삽값을 적용시켜 사용할 수 있게 한다.(임의의 값은 소스 waveform을 이동시키고 FFT을 사용하여 위상이동 된다.);이것은 덜 정확하지만 더 빠르며, 음수의 partial number을 허용한다.
pna, pnb, …   — partial number, 만약 소스 테이블 넘버가 정수라면(FFT사용)양의 정수가 와야한다.
stra, strb, … — amplitude scale
phsa, phsb, … — 시작하는 위상 값(0~1)

Examples
itmp    ftgen 1, 0, 16384, 7, 1, 16384, -1      ; sawtooth
itmp    ftgen 2, 0, 8192, 10, 1                 ; sine
; mix tables
itmp    ftgen 5, 0, 4096, -32, -2, 1.5, 1.0, 0.25, 1, 2, 0.5, 0,        
                                1, 3, -0.25, 0.5
; window
itmp    ftgen 6, 0, 16384, 20, 3, 1
; generate band-limited waveforms
inote   =  0
loop0:
icps    =  440 * exp(log(2) * (inote – 69) / 12)        ; one table for
inumh   =  sr / (2 * icps)                              ; each MIDI note number
ift     =  int(inote + 256.5)
itmp    ftgen ift, 0, 4096, -30, 5, 1, inumh
inote   =  inote + 1
        if (inote < 127.5) igoto loop0         instr 1 kcps    expon 20, p3, 16000
kft     =  int(256.5 + 69 + 12 * log(kcps / 440) / log(2))
kft     =  (kft > 383 ? 383 : kft)

a1      phasor kcps
a1      tableikt a1, kft, 1, 0, 1

        out a1 * 10000

        endin
        instr 2

kcps    expon 20, p3, 16000
kft     =  int(256.5 + 69 + 12 * log(kcps / 440) / log(2))
kft     =  (kft > 383 ? 383 : kft)

kgdur   limit 10 / kcps, 0.1, 1
a1      grain2 kcps, 0.02, kgdur, 30, kft, 6, -0.5

        out a1 * 2000

        endin

———-
score:
———-

t 0 60
i 1 0 10
i 2 12 10
e
        

Leave a Comment.