C-book p.70(GEN01 도형도)

             instr   201                               ;Reading a soundfile using tablei & GEN 1
iskip      =            int(p5*sr)                  ; starting sample in seconds
ilast       =            int(sr*p3*p6)+iskip     ; ending sample in w / transpose
kenv      linseg     0,  .05,  p4,  p3-,  .05,  p4,  .02,  0
aread    line          iskip,  p3,  ilast         ; a-rate table index
;aread   line          ilast,   p3,   iskip       ; ilast to iskip:backwards!
asnd     tablei       aread,   1                 ;scans ftable 1
asig      =             asnd*kenv                ; imposes envelope
            out          asig
            endin

f   1   0   262144   1   “speech1.aiff”   0   4   0   ;read and nomalizes

1. iskip과 ilast에서 샘플 파일의 시작값과 끝값을 선언한다.(여기서 sr은 orchestra파일의 header값으로 선언되는 값입니다. 지금은 header가 생략되어있군요~)
2. line을 먼저 보면, line에서는 iskip과 ilast의 선언값이 적용된다. line의 기능은, 앞서 설명하였다. 또한 위의 보조 설명에서 보이듯, a-rate table index로 선언된다. p3는 table size이며, 그만큼의 duration값을 의미한다.
3. 두번째로 선언된 line에서는 앞서 선언된 라인의 보조적 역할을 하는듯 하다. (;aread) 즉 되돌려 읽는 역할을 한다. 앞선 line의 거꾸로 선언되어있다.
4. tablei에서 앞에 선언된 line을 scan한다. 1은 0 에서 1까지nomalized한다는 것을 뜻하는 숫자이다.
5. linseg를 보면, lineseg는 지수함수에 사용된다. 기록된 값의 자세한 사항은 잘 모르겠다 -_-;
6. asig에서 tablei에서 스켄된것에 linseg를 적용시킨다.(*)
7. 그 적용된 것을 출력한다.

Figure 2.4의 그림을 보면서 읽어보면,
iskip와 ilast가 LINE에 적용되었고, 그것이 tablei에서 읽혀진다. 그 읽혀진것이 LISEG의 kenv와 적용(*)되어 출력되어진다.

Leave a Comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.