2014-03-29 5 views
1

AUSamplerGraph를 사용하여 soundfont 사운드를 성공적으로 재생하는 앱을 사용했습니다.iphone에서 soundfont MusicDeviceMIDIEvent를 완료하는 방법

주요 사운드는 기타입니다.

같은 문자열에 '하위'음표가 연주되면 이전 음표가 연주되지 않습니다. 기본 동작은 문자열을 빼내는 것과 같으며 꺼질 때까지 계속 울립니다.

메모 끄기 이벤트를 보내는 중 소리가 여전히 가파립니다.
0의 음량으로 음표를 보내면 사운드는 여전히 가파립니다.

UInt32 onVelocity = loudness; 
UInt32 noteCommand = kMIDIMessage_NoteOn << 4 | 0; 

OSStatus osStatus; 

osStatus = MusicDeviceMIDIEvent(self.samplerUnitGuitar, noteCommand, noteNbr, onVelocity, 0); 


꽤 몇 가지를 시도했다. 모드 방식이 효과가없는 것 같습니다. AUSampler가 그 컨트롤을 구현하는 것처럼 보이지 않습니다.

AudioUnitReset // 트릭을 수행했습니다.

+0

일부 파기가 발생 했습니까? 나타나는 [모드 4 - 옴니 끄기/모노] (http://www.philrees.co.uk/articles/midimode.htm)가 방법입니다. 다음 단계는 그것을 시도하는 것입니다. – robuch

답변

1

메모를 지운 후에 메모의 부식을 중단 하시겠습니까?

이 작업을 수행하는 유일한 방법은 All Sound Off과 함께 제어/모드 변경 메시지를 보내는 것입니다. 불행히도, 이것은 현재 해당 채널에서 연주중인 모든 음을 제거합니다. (그리고 MusicDevice AudioUnits는 하나의 채널에만 반응합니다.)하지만 작동합니다.

UInt8 kMIDIMessage_ControlModeChange = 0xB0; 
UInt8 kMIDIMessage_ControlTypeAllSoundOff = 0x78; 

MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0); 
관련 문제