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와 적용(*)되어 출력되어진다.