Sampling: Variable-length wavetable
Use any part of a buffer~ as a wavetable: wave~
투토리얼3에서 Cycle~은buffer~에 들어온 wave의 512샘플을 이용할수 있고 반복해서 읽을수 있다고 배웠습니다. Wave~는 조금 더 확장된 개념으로서 buffer~에 들어온 wave의 어떤 섹션이든 반복적으로 읽을 수 있습니다. Buffer~내에 있는 wave의 시작, 끝값은 그림에서 처럼 중간, 오른쪽 인렛으로 결정됩니다. 왼쪽 인렛에서 phasor는 0에서 1까지 반복적으로 돌아다니며 wave를 읽습니다.
-참고 : wave~에서 시작, 끝값을 선형적으로 이어주기 위하여 interp $1라는 메시지를 왼쪽 인렛에 보내면,
-$1=0이면 연결 안함
-$1=1이면 아주 선형적으로 연결
-$1=2이면 대충(?)선형적으로 연결 (low quality)
일반적으로 기본적인 소리 합성에서는, wavetable이 wave form의 한 주기가 되며(cycle~) frequency는 소리의 기본음때 따라서 결정되어집니다. 그러나 wave~에서는 wavetable은 실질적으로 어떤것이든 포함할 수 있습니다(주기적이지 않은 오디오 파일까지)
wave~는 다른 소리 생성방법에 비해서 예측할수 없는 소리를 만들어 내며 다양한 음색을 만들어 낼 수 있습니다.
Synthesis with a segment of sampled sound
투토리얼에 있는 패치는wave~를 사용하는 3개의방법을 소개합니다.
1. a repeating ramp signal (phasor~),
2. a sinusoid (cycle~),
3. a single ramp (line~).
패치 아랫부분에 wave에 대한 기본적인 것을 보여줍니다. 윗쪽에 wavetable을 읽는 3가지 방법을 보여줍니다. 일단 아래를 보면
-toggle을 클릭하여 오디오를 키세요. Amplitude를 0보다 크게 조절합니다. Wave table의 endtime이 782로 입력 되어있습니다. (시간단위 ms) 이 세팅에서 wave~는 buffer~에 있는 전체의 내용을 다 사용합니다. (isthatyou.aiff)
-팝업메뉴에서“Read forward”를 고릅니다. 이것은 selector~의 첫번째 시그널 인렛을 엽니다. 그리고 wave~가 phasor~에 의해 컨트롤 되도록 설정되어집니다.
-“Range”라고 되어있는 숫자 박스를 1로 설정하면 phasor의 amplitude가 설정됩니다. 따라서 wavetable의 어떤 부분이 사용될지를 결정합니다. “Frequency”가 2로 설정되어있습니다.이 말은phasor가 초당 0에서 1까지 두번 왔다갔다 한다는 뜻입니다.
-phasor~에 다른값들을 넣어보세요. 그럼 buffer~에 있는소리의 속도가 바뀝니다. range값에 따라서 buffer에서 받아들이는 양을 변화시킵니다.
-참고:여기서 phasor~는 종종 인식된 음높이와 관계없어집니다. 왜냐하면 wavetable의 내용이 waveform의 하나의 주시를 나타내는 것이 아니기 때문입니다. 게다가 복잡한 샘플의 임의적으로 선택된 부분을 빠르게 반복하는 경우에 Nyquist rate의 범위에서 frequencies를 생성하는 높을 가능성을 지닙니다. 이것은 예측불가능하게 가청범위에서 wave가 접히게 됩니다. (Nyquist error)
-메시지 박스를 클릭하여 wave~에서buffer~ chords object 로 보냅니다. 그리고 endtime의 최대값을sacre.aiff.의 길이와 같게 합니다. 이것은 부적당한 start와 end time이 들어가는 것을 막기 위한 것입니다.
Using wave~ as a transfer function
buffer~는a lookup table로서 다른 onject들에 의해 다른 여러 방법으로 접근할 수 있도록 해줍니다. Tut. 12에서 lookup~ object는 buffer~의 한 부분을, 코사인 웨이브를 입력으로 받아 transfer function으로 사용하게 해 주었습니다. wave~ object 또한 유사하게 사용될 수 있습니다. 차이점이라면 imput이 반드시 0에서 1사이의 범위여아 한다는 것입니다. (반면 lookup~ 은 `-에서 1사이였지요) wave~ 를 이런 방법으로 이용하려면 입력되는 cosine wave의 위상변화를 0~1로 시켜주어야 합니다.
-wave~의 시작, 끝값이 가까우면 아주 짧은 시간동안 왔다갔다 (앞으로 뒤로)합니다.
-“Range” number box를 아주 작게 해주어 amplitude를 제한시킵니다. 여기에서는 cycle~이 아주 작은 부분의 wavetable을transfer function으로 사용하게 해 줍니다. cycle~ 의 frequency를 220 Hz로 설정하면 풍부한 tone의fundamental frequency 가 220 Hz인 소리를 들을 수 있습니다. “Range” number box 를 변화시키면 음색이 변합니다.
Play the segment as a note
wave~ 가 0~1사이의 어떤것이든 받아들이기 때문에 0에서 1까지 (또는 1에서 0까지) wavetable 를 단 한번 읽습니다. play~ and groove~ 는 이런 부분에 있어서 장점이 있지만 wave~에서도 가능합니다.
– “Read once” 를 팝엉에서 고릅니다. 이것은 selector에서 3번째를 인렛으로 받아들여서 wave가 line~에 의해 컨트롤 되도록 합니다. 시작, 끝값을 주고, “Duration” number box를 1000으로 합니다. 그리고 버튼을 클릭하면 1초동안 wavetable이 선회합니다.
Changing the wavetable dynamically
Patcher window 의 오른쪽 부분에 있는 cycle~ object는 wavetable로 싸인웨이브의 position의 변화를 첨가하기 위하여 사용되었습니다. cosine wave 가 오르락 내리락 하고 wavetable의 시작, 끝값이 오르락 내리락 합니다. 결과 wavetable 은 계속해서 위치를 바뀌게 되는것입니다. 이것은 일정한 vibrato를 생성합니다.
– “Shift amount” 를 0.35로 설정하고 “Shift rate” 를 6으로 둡니다. 시작, 끝값을102 와109로 둡니다. 그리고 “Read forward” 를 팝업에서 고릅니다. phasor~의 frequency를 110과 같은 audio rate으로 정하고 범위를 1로 합니다. 그럼 vibrato와 같은 음색의 변화를 (6Hz의 비율로) 들을 수 있습니다. 다양하게 shift rate와 the shift amount를 변화시켜보세요.