Basic sampler features
이번 챕터에서는 MIDI keyboard 에서부터 미리 녹음된 소리를 재생하는 것을 해 볼 것 입니다. 여기에 있는 디자인은 기본적인 샘플러 키보드의 주요 특징을 대체해 줍니다. : 키보드의 영역에 샘플을 할당하고
각 샘플에 키 로케이션을 지정해주고
키가 연주되는 곳에 따라 다른 적당한 변화들과 함께 샘플을 플레이하고.
다성음 만들기 입니다.
이 패치는 단순화를 위하여서 pitchbend wheel 과 mod wheel로부터의 control은 배제해 둘 것입니다. 그 사용법은 이전 두 챕터에서 보여진 것과 많이 다를 것입니다.
이 패치에서 우리는 groove~ 를 사용하여 반복되는 샘플을 사용함으로서 다양한 스피드로 샘플을 재생할 것입니다. Tutorial 19에 명시했듯이 ,만약 우리가 다성적인 악기를 원한다면 우리가 동시에 분리된 많은 음표들을 원하는 것만큼이나 많은 sound-generating objects가 요구되어집니다. 이 투토리얼 패치에서 우리는 4개의 subpatch samplervoice~ 의 반복적인 사용으로 4개의 voice polyphony을 만들 것입니다. Tutorial 19에서와 같이 우리는 poly를 사용하여 voice number를 각각의 MIDI note로 보내고, route를 사용하여 note information를 적절한 samplervoice~ subpatch로 보낼 것입니다.
samplervoice~를 실험해 보기 이전에 어떤information이 샘플을 정확하게 재생하는데 필요한지 보겠습니다.
1. 그 sound samples 은 memory로 읽혀져야 합니다.( buffer~ 에서),그리고 그 메모리 할당의 list(buffer~ 이름들) 가 남아있어야 합니다.
2. 각각의sample은 키보드 영역에 할당되어야 하며 키 할당의 list도 남아있어야 합니다,
3. 각 영역의 기본 키들의 list도 (샘플이 재생될, 이조되지 않은 키) 남아있어야 합니다.
4. 각 샘플의 loop point의 list (그리고 looping 이 켜질지 말지)에 대한 부분도
5. 어떤 MIDI note message 가 받아질 때에, 그리고 samplervoice~ 에 할당될 때에, 그 서브패치에 있는 groove~ object는 우선적으로 어떤 buffer~ 에서 (키의 영역에 따라) 읽혀질지 결정해야 하며, 얼마나 빠르게 연주할지(연주될 frequency와 그 영역의 기본key frequency 에 따라), 어떤 loop points가 사용될지, looping 이 켜질지 꺼질지, 어떤 amplitude scaling factor가 velocity로 사용될지 결정해야 합니다.
이 패치에서 samples들은 patch가 열릴 때 메모리로 읽혀질 것입니다. is first loaded.
• p samplebuffers subpatch를 더블클릭하여 그것의Patcher window를 열어봅니다. 그 때 six samples이 buffer~ objects인 sample1, sample2, etc로 읽혀집니다. 만약에 연주상황에서는 RAM에 더 많은 샘플을 할당해야 하는데, 그때 read messages를 사용하여filename 을arguments 로 지정해주고 새로운 samples을 buffer~로 할당합니다.
• subpatch window를 닫고 message box “keyboard sample assignments”를 클릭합니다. funbuff object안에서 숫자로 된 키 영역의 set을 저장합니다. (이 information 은 funbuff 에 patch와 함께 저장되어있는 것을 우리가 message box로 보내는것이기 때문에 그 내용을 볼수 있는것입니다.) MIDI key numbers 0 에서 40가 key region 1이며, 41 에서47키는 key region 2, 등등으로 지정됩니다. a note-on message 가 받아지면 그 key number 는 funbuff로 가서 funbuff 이 key region number를 전달합니다. 그 key region number은 coll에 있는 다른 중요한 정보들을 살펴보는데에 사용됩니다.
• coll object를 더블클릭하여 내용을 봅니다.
1, 24 sample1 0 0 0;
2, 33 sample2 0 0 0;
3, 50 sample3 0.136054 373.106537 1;
4, 67 sample4 60.204079 70.476189 1;
5, 84 sample5 0 0 0;
6, 108 sample6 0 0 0;
coll contains sample information for each key region
그 key region number 는 coll안의 정보를 읽는데에 사용됩니다. 예를들어 키 48~52가 눌러질때마다, funbuff 는 숫자 3을 보냅니다. 그리고 키 영역3에 있는 정보가 불려지며 적당한 samplervoice~ 로 보내집니다.
각 키 영역에서의 data는: base key, buffer~ name, loop start time, loop end time, loop on/off flag.입니다.
Poly로 부터의 voice number 는 gate로부터 적절하게 출력되어 coll로부터의 정보가 적절한 서브패치로 가게 합니다.
Playing a sample: the samplervoice~ subpatch
• coll window를 닫고, samplervoice~ subpatch 의 하나를 더블클릭합니다.
coll로부터의 정보가 subpatch에서 unpack되고 적절한 곳으로 보내져서 groove~가 연주할 준비를 하게끔 해줍니다. 이것은 groove~ 에게 어떤 buffer~가 읽혀질지, 어떤 times이 사용될지, 그리고 looping 이 켜져야 할지에 대해서 말해줍니다. note information이left inlet으로 오게되면 그velocity는 amplitude value로(*~object) 사용되며 note-on key number가 groove~의 playback speed로 사용되어 time0에서부터 playback을 계산하게 해 줍니다. (오른쪽 inlet으로부터 받아진base key number와 함께)
MSP sample rate vs. audio file sample rate
• subpatch window를 닫습니다.
지금 이제 샘플을 제생할 준비가 되었지만 한가지 더 숙지해야 할것이 있는데요, 그것은 저장될 공간을 위해서 samples은mono AIFF files 들이어야 하며sample rate 는22,050 Hz 이어야 합니다. 그것들이 적절하게 연주되는 것을 들으려면 반드시 이렇게 설정해야 합니다.
• dac~ object 를 더블클릭하여 DSP Status window를 열어서 Sampling Rate 를22.050 kHz로 지정해줍니다.
Note: sampling rate를 다시 설정하는 것은 불가능합니다. (hardware에 따라서 다름)
오디오 파일의 sample rate과 MSP에서 사용되는 sample rate의 차이는 샘플 플레이에서는 아주 중요한 문제중 하나입니다. 그 차이점의 해결은 여기에서는 간단하게 해결이 되는데요, 그것은 오디오 ㅏ일이 전부 같은 sample rate을 가지고있기 때문이기도 하며, MSP에서 플레이할 소리가 그 sample들로만 지정되어있기 때문입니다. 그러나 다른 상황에서 다른 sampling rates를 사용하게 될때에 최적의 sampling rate의 조건을 만족시켜주어야 합니다. 그런 상황에서 당신은 오디오와 MSP의 sample rate을 groove~에서의 적절한playback speed를 결정하는데에서 부가적인 요소로 적용시킬수 있습니다. 예를들어서 audio file의 sample rate이 MSP에서 사용되는 sample rate의 절반이라면 그때 groove~ 는 샘플의 절반 빠르기로 연주되어야 합니다. info~ 와 dspstate~ 를 사용하여 sample과 MSP의 sampling rate 를 다음의 예에서 처럼 찾을수 있습니다.
note-on key number 는 연주될 sample의 정보를 불러냅니다. buffer~의 이름이 groove~와 info~로 보내집니다. 그다음 bang 이 dspstate~ 와 info~로 보내집니다. Bang을 받은 dspstate~ 는 MSP의 sampling rate을 기록하며 info~ 는 buffer~에 기록된 AIFF file의 sampling rate을 기록합니다. 왼쪽 아랫부분을 보면 samplingrate information 이 어떻게 groove~의playback speed 로 적절하게 사용되는지를 알 수 있습니다.
Playing samples with MIDI
• audio on을 하여 “Output Level” number box 로 레벨 설정을 합니다. 다른 sample들을 듣기 위해서 미디 키보드의 스케일을 플레이 해봅니다.
전체 키보드에 적절한 하나의 악기소리를 주기 위해서 각각의 키 영역이 샘플 소스로부터 한음표의 한샘플이 포함되어야 합니다ㅣ. 이 경우에서는 그러나 drums, bass, keyboard로 구성된 “band”에 유용하게 만들어지는 방법으로 맞추어 져 있습니다. 오른손, 왼손에 따라 다른 다중적인 음색을 가진 키보드 구성이 사용되게 할 수 있습니다. (미디채널, 시퀀서 사용)
• 다중음색 레이어가 어떻게 시퀀서에 사용되는지 봅니다. “Play Sequence”라고 된 토글을 클릭합니다. Sequence를 중지하려면 다시한번 눌러서 씁니다, audio 를 끄고 p sequence object를 더블클릭합니다.
seq sampleseq.midi object는 이미 저장된MIDI file입니다. midiparse object는 미디 키 넘버와 velocity를 main patch에 있는poly로 보냅니다. 각각 sequence의 시간에 따라 연주는 끝나게 되고 bang 이 seq의 오른쪽 outlet으로 보내집니다.; 그 bang은seq 를 즉시 다시 시작하게 해 줍니다.(계속 loop을 원할경우). 그 sequence 가 사용자에 의해 멈추어지면 bang 이 midiflush로 보내져서 현재 재생되는 어떤 음표든 멈추게 해 줍니다.
• 이 패치를 멈출때에는 DSP에서 Sampling Rate를 원래로 되돌려 놓으세요.