[SWIFT] AudioKyt IOS AKSamplerMetronome
SWIFTAudioKyt IOS AKSamplerMetronome
해결법
-
1.당신은 AKSequencer 쉽게 충분이 작업을 수행 할 수있다 (I 비슷한 일을했다). I 메트로놈 사운드 및 AKCallbackInstrument 갔다 번째 트랙을 생성 AKMIDISampler 상기 시퀀서 중의 하나의 트랙을 할당. AKCallbackInstrument로 전송되는 트랙에서, 그래서 예를 들어, 첫 번째 비트의 MIDI 데이터를 하나의 MIDINote, 두 번째는, MIDINote 2가 (당신이 속도로이 작업을 수행 할 수 있으며, 임의로 MIDI 데이터의 비트 정보를 인코딩 ). 그런 다음 콜백 함수는 단지 noteOn의 메시지를 모두 볼 것입니다 수 있으며, 그에 따라 전류 MIDI 노트 번호와 비트, 그리고 응답을 얻을. 그것은 약간의 간접하지만 그것을 작동합니다.
당신은 AKSequencer 쉽게 충분이 작업을 수행 할 수있다 (I 비슷한 일을했다). I 메트로놈 사운드 및 AKCallbackInstrument 갔다 번째 트랙을 생성 AKMIDISampler 상기 시퀀서 중의 하나의 트랙을 할당. AKCallbackInstrument로 전송되는 트랙에서, 그래서 예를 들어, 첫 번째 비트의 MIDI 데이터를 하나의 MIDINote, 두 번째는, MIDINote 2가 (당신이 속도로이 작업을 수행 할 수 있으며, 임의로 MIDI 데이터의 비트 정보를 인코딩 ). 그런 다음 콜백 함수는 단지 noteOn의 메시지를 모두 볼 것입니다 수 있으며, 그에 따라 전류 MIDI 노트 번호와 비트, 그리고 응답을 얻을. 그것은 약간의 간접하지만 그것을 작동합니다.
// create the sequencer before hand (e.g., at init); calling play() immediately after creating it causes some odd behaviour let sequencer = AKSequencer() // set up the sampler and callbackInst let sampler = AKSynthSnare() // or for your own sample: // let sampler = AKMIDISampler() // sampler.loadWav("myMetronomeSound) let callbackInst = AKCallbackInstrument() AudioKit.output = sampler AudioKit.start() // create two tracks for the sequencer let metronomeTrack = sequencer.newTrack() metronomeTrack?.setMIDIOutput(sampler.midiIn) let callbackTrack = sequencer.newTrack() callbackTrack?.setMIDIOutput(callbackInst.midiIn) // create the MIDI data for i in 0 ..< 4 { // this will trigger the sampler on the four down beats metronomeTrack?.add(noteNumber: 60, velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 0.5)) // set the midiNote number to the current beat number callbackTrack?.add(noteNumber: MIDINoteNumber(i), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 0.5)) } // set the callback callbackInst.callback = {status, noteNumber, velocity in guard status == .noteOn else { return } print("beat number: \(noteNumber + 1)") // e.g., resondToBeat(beatNum: noteNumber) } // get the sequencer ready sequencer.enableLooping(AKDuration(beats: 4)) sequencer.setTempo(60) sequencer.play()
from https://stackoverflow.com/questions/47629637/audiokit-ios-aksamplermetronome by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] 스위프트 정규 표현식 형식? (0) | 2020.11.07 |
---|---|
[SWIFT] 스위프트 배에서 막 대형 차트에 줄 위에 트랙볼 및 액세스 라벨을 달성하는 방법 (0) | 2020.11.07 |
[SWIFT] 스위프트 동적 캐스트 실패 - 오류 단위 테스트를 실행하려고 할 때 (0) | 2020.11.07 |
[SWIFT] 스위프트의 AVPlayerViewController에 유튜브에서 비디오를 재생 [중복] (0) | 2020.11.07 |
[SWIFT] 스위프트 2 버튼 사용자 정의 모양의 프레임을 만들려면 (0) | 2020.11.07 |