Skip to content

Commit

Permalink
Merge pull request #152 from NickCulbertson/main
Browse files Browse the repository at this point in the history
Add midiCallback to DrumSequencer
  • Loading branch information
NickCulbertson committed Feb 28, 2024
2 parents 4d50f01 + f1b0dde commit 7284bc3
Showing 1 changed file with 9 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import SwiftUI
class DrumSequencerConductor: ObservableObject, HasAudioEngine {
let engine = AudioEngine()
let drums = MIDISampler(name: "Drums")
var midiCallback = MIDICallbackInstrument()
let sequencer = AppleSequencer(fromURL: Bundle.module.url(forResource: "MIDI Files/4tracks", withExtension: "mid")!)

@Published var tempo: Float = 120 {
Expand Down Expand Up @@ -37,6 +38,13 @@ class DrumSequencerConductor: ObservableObject, HasAudioEngine {
}

init() {
midiCallback.callback = { status, note, velocity in
if status == 144 { // Note On
self.drums.play(noteNumber: note, velocity: velocity, channel: 0)
} else if status == 128 { // Note Off

}
}
engine.output = drums
do {
let bassDrumURL = Bundle.module.resourceURL?.appendingPathComponent("Samples/bass_drum_C1.wav")
Expand Down Expand Up @@ -70,7 +78,7 @@ class DrumSequencerConductor: ObservableObject, HasAudioEngine {
}
sequencer.clearRange(start: Duration(beats: 0), duration: Duration(beats: 100))
sequencer.debug()
sequencer.setGlobalMIDIOutput(drums.midiIn)
sequencer.setGlobalMIDIOutput(midiCallback.midiIn)
sequencer.enableLooping(Duration(beats: 4))
sequencer.setTempo(150)

Expand Down

0 comments on commit 7284bc3

Please sign in to comment.