Playing from memory vs. playing from disk
우리는 지금까지buffer~안에 어떻게 사운드를 저장하는지에 대해서 배웠습니다. 일단 소리가 메모리에 저장되면 다양한 방법으로 다시 읽어들일수 있었지요. (cycle~, lookup~, index~, play~, groove~, wave~) buffer~의 단점이라고 한다면 RAM의 사용량에 대한 한계가 있다는 것입니다. 만약 우리가 아주 큰 소리를 녹음하고 재생하기 위하여 너무 많은 하드의 용량이 요구된다는 것입니다. 그러므로 MSP가 하드 디스크로부터 소리를 재생할 때 여전히 메모리에서 소리를 미리 불러낼 작은 버퍼를 만들어 줄 필요가 있습니다. 이렇게 해야 MSP는 하드로부터 더 많은 소리를 불러 들일 수가 있게 됩니다. 그리고 이것은 디스크에서 소리를 불러올 때 소요되는 작은 시간차와 같은 문제들을 없애주게 되는것이죠.
Record audio files: sfrecord~
MSP는 직접 녹음하고 재생할수 있는 오브잭트 sfrecord~ 와 sfplay~를 재송합니다. 오디오 파일에 녹음하는 것은 특히 쉬우며, 단시 파일을 열어 녹음을 시작하고 끝내면 됩니다. sfrecord~ 투토리얼 패치안에 오른쪽 윗부분에 있는 patcher를 열면 레코딩을 하는 패치가 다음과 같이 보입니다.
sfrecord~ 는 인렛으로 시그널이 들어오면 녹음합니다. 시그널은 직접 adc~ 나 ezadc~ 으로 올수 있습니다.
• “Create an AIFF file”.라고 되어있는 메시지 박스를 클릭하여 봅니다. 파일 이름을 명명해줄수 있게 됩니다. Toggle을 클릭하고 레코딩을 시작합니다. 다시 클릭하면 끝나게 되겠지요.
Play audio files: sfplay~
왼쪽 부분에보면 오디오파일을 재생하기 위한 장치가 있습니다. sfplay~ 는 몇 개의 오브잭트를 더 필요로 하게 되는데요, 그것은 아래의 그림과 같습니다. 파일을 재생하기 위해서 단지 파일을 열고 sfplay~를 시작합니다. sfplay~은 직접 dac~ 나 ezdac~로 보내어 소리를 재생시킵니다.
• open 을 클릭하여 미리 녹음된 파일을 엽니다. toggle 을 클릭하여 재생해봅니다.
Play excerpts on cue
sfplay~ 은 오디오 파일 전체를 불러들일 필요가 없기 때문에 같은 sfplay~ 에 많은 파일을 열수 있습니다. 그리고sfplay~ 는 그들중에 어떤것이든 플래이할수 있습니다. sfplay~는 가장 최근에 열린 파일을 ‘현재’의 파일로 인식합니다. 그리고 1의 메시지를 받으면 그 파일을 플레이 합니다.
• 오픈 메시지를 열어 다른 오디오 파일을 열어보고 “Define cues, 2 to 9”라고 되어있는 메시지를 클릭해봅니다. sfplay~ 가 Cue에 숫자를 받으면 그에 해당하는 파일을 연주합니다. 예를들어2, 3, 4에 cue를 주면 전체의 파일을 연주하며 cue 5 는sacre.aiff의 처음270 milliseconds을 연주합니다.
Cue 1 은 언제나 현재 파일을 연주하게 되어있으며 0을 멈추는데 사용된다는 것을 잊지마세요.
sfplay~ 가 cue를 받을 때 마다 현재 연주하고 있다면 멈추어지게 되며 즉시 새로운 cue를 연주합니다. 각 preload message 는 사실 cue의 시작에 쓰일 오디오 데이터를 포함하고 있는 작은 버퍼를 만들어냅니다. 따라서, 재생시 즉각적으로 연주할 수 있게 해 주는것입니다. 현재 0~9의 cue가 정의되어있으며 각 다른 오디오를 재생 시킬 수 있습니다. 다음은 키보드의 아스키모드를 사용한 재생장치입니다.
• “Keyplay On/Off”라고 되어있는 토글을 클릭하며 숫자키를 사용하여 다른 큐를 주어봅니다.
Try different file excerpts
cue를 지정하기 전에 , seek 메시지를 통해서 현재 파일의 어떤 부분이든 들을 수 있다.
• 다시 오디오 파일을 열고 패치의 오른쪽 부분에seek message 에 갈 end time을 입력하세요.
seek 메시지에 의한 명령은 delay를 유발시킬 수 있으므로, 더 정확하게 불러들여야 하는 경우에는 cue에 미리 불러들이는 설정이 더 나은 방법입니다.
Trigger an event at the end of a file
패치에서 오른쪽 아랫 부분에sfplay~.의 오른쪽 아웃렛에 대한 사용이 나옵니다. Cue에 의해서 한번 플레이 된 경우 sfplay~ 는 뱅을 오른쪽 아웃렛으로 보냅니다. 이 패치에서는 bang이 다음 cue를 유발시키는, 응용된 모습을 보여줍니다.
이 패치에서 gate를보면 이 장치가 없으면 sfplay~ 가 멈추지 않게 됩니다. 왜냐하면, 0 cue가 또다른 0이 아닌 cue에 의해 유발될것이기 때문입니다. gate 는 반드시 0이 sfplay~로 보내지기 이전에 닫혀야 합니다.
• “Play random excerpts”라고 되어있는 메시지 박스를 클릭하여 cue를 preload합니다. 그리고toggle을 클릭하여 진행을 시작합니다.