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

Constants and Variables

Constants and Variables(Orchestra File에서 쓰이는 Syntax중에서)

-Constants (상수); 소숫점의 숫자. 1, 3.1459, -73.45와 같은것들.
                          이것들은 지속적으로 사용할 수 있고, 값의 변화는 없다.
-Variables(변수); 숫자를 포함한 cell들에 이름이 붙여진것.
                         지속적으로 이용할 수 있으며 4개의 update rate (setup, i-rate, k-rate, a-rate)중에 하나에 update될 수 있다.

1. i,k-rate변수

i,k-rate변수는 scalar(실수로 표시할 수 있는 수량, 질서를 가진 주기)이고, 우선적으로 저장하는데 사용되며, data를 제어하는것을 상기시켜주는데, 여기서 data는 note rate나 (i-rate변수) k-rate의 변화된 data를 말한다. 그러므로 i.k 변수는 note parameter값, pitches, durations, slow-moving frequencies, vibratos등을 저장하기 위해 유용하게 쓰인다.

2. a-rate변수
i,k-rate변수와는 다르게 a-rate변수는 정보의 정렬이나 vector이다. k-rate변수처럼 같은 perf-time control에서 되풀이되어 통과하지만, 지 정렬된 cell들은 sample 주기 내에 control주기에 나눠진 것에 의해 시간의 finer resolution(?)을 나타낸다.(ksmps를 보라)
a-rate변수는 저장하기위해 사용되고, Audio sampling rate에서 변화된 값을 recall하는데 사용된다.( 예를들어 ocillator의 output signal, filters 등.)

-위의 3변수의 구분

1. Local변수
Local변수는 특정한 instrument에 비공식적인 것으로서, 어떤 다른 instrument에 의해 읽혀지거나 쓰여질 수 없다. 그것들의 값은 보호되어지며, 통로에서 통로로 정보를 옮길 것이다.(예를즐어 초기시간에서 실행시간으로) 또한 그것을 하나의 instrument이내에서이다. local변수의 이름은 p, i, k로 시작한다. 같은 local변수의 이름은 2개 이상으로 충돌없는 다른 instrument block으로 나타난다.

2. Global변수
Global변수는 모든 instrument에 의해 이용할 수 있는 cell들이다. 이름은 local변수처럼 g로 시작하거나 특정한 상징기호를 사용한다. Global변수는 instrument간의 communicating을 위해 일반적인 값들을 전달하는데 사용하거나 하나의 instrument에서 다른 instrument로 소리를 전달하기 위해 사용되어진다. (예를들어 renerberation에 앞선 mixing)

다음 표는 Local과 Global변수의 8개의 형태를 구분한다.

     Type                 When Renewable        Local           Global
reserved wymbols       permanent               —               r symbol
score parameter fields     i-time                 p number          —
v-set symbols                i-time                 v number      gv number
init variables                  i-time                 i name          gi name
MIDI controllers             anytime              c number           —
control signals              p-time,k-rate        k name         gk name
audio signals                 p-time,a-rate        a name         gk name
spectral data types        k-rate                 w name             —

r symbol이 특정한 상징기호로 나타내어 진곳에서 (sr, kr과 같은), number는 스코아의 pfield 또는 반복된 수에서 옮겨진 양의 정수이며, name은 문자의 나열(string)이거나 local또는 global에서 의미했던 숫자이다. 명백해 보이는 것은, score parameters는 local i-rate변수인데, 그 변수의 값은 instrument를 통해 초기에 통로(pass)에 앞선 스코아의 statement에 야기된 것으로 부터 복사되어진 값이며, 한편 MIDI controllers는 MIDI장치나 MIDI file로 부터 비 동시적으로 update될 수 있는 변수 이다.

-Manual 2.4

a-Statement

Advance Statement

-이것은 소리 샘플의 생성 없이 어떤 특정된 양(amount)에 의해 앞당겨 지는 score time의 원인이 되는 것이다.

-p field

p1  의미 없이 항상 0
p2 Action time, in beats, Advance를 시작하기 위한 시간.

– a Statement는 sound sample사이의 generating없이 Advance하기 위하여 한 스코아 섹션 내에서 비트를 세는것을 허용한다. 이것은 하나의 스코아 섹션이 불완전하고, 그 사용자가 많은 침묵을 듣거나 generate하기를 원하지 않을때 사용할 수있다.

-p2 Action time 과 p3거리는 t-statement에 의한 분리와 변경에 대하여 i-statement로 취급한다.

-한 a-statement는 Score Extractfeature에 의해 Score에 임시로 삽입될 것인데, 추출된 segment가 Section의 시작보다 나중에 시작할때 그러하다. 이것의 목적은 오리지널 스코아의 beat count와 time count를 보호하기 위해서 이며, 사용자의 콘솔에 기록되는 peak amplitude messages를 위함이다.

-a-statement가 orchestra performing과 마주칠때마다, 그것의 존재와 효과는 사용자의 콘솔에 기록 될 것이다.