MIDI Sequencer that sends MIDI events to other apps.
Built top on AKSequencer
of AudioKit for iOS and macOS.
Create smart MIDI sequencer instruments with just focus on notes.
- Swift 5.0+
- iOS 9.0+
- macOS 10.11+
pod 'MIDISequencer'
MIDISequencer built top on AudioKit
's AKSequencer
with MusicTheory
library to create sequences just focusing on notes with multiple track support.
- Create a
MIDISequencer
instance.
let sequencer = MIDISequencer(name: "Awesome Sequencer")
- Create a
MIDISequencerTrack
and add it to sequencer's tracks.
let track = MIDISequencerTrack(
name: "Track 1",
midiChannel: 1)
sequencer.tracks.append(track)
- Set tempo and time signature
sequencer.tempo = Tempo(
timeSignature: TimeSignature(
beats: 4,
noteValue: .quarter),
bpm: 80)
- Add some
MIDISequencerStep
s to track'ssteps
track.steps = [
MIDISequencerStep(
note: Note(type: .c, octave: 4),
noteValue: NoteValue(type: .quarter),
velocity: .standard(100)),
MIDISequencerStep(
note: Note(type: .d, octave: 4),
noteValue: NoteValue(type: .quarter),
velocity: .standard(100)),
MIDISequencerStep(
note: Note(type: .e, octave: 4),
noteValue: NoteValue(type: .quarter),
velocity: .standard(100)),
MIDISequencerStep(
note: Note(type: .f, octave: 4),
noteValue: NoteValue(type: .quarter),
velocity: .standard(100)),
]
sequencer.addTrack(track: track1)
- You can even add chords or multiple notes or even both to any step.
MIDISequencerStep(
chord: Chord(type: .maj, key: .c),
octave: 4,
noteValue: NoteValue(type: .quarter),
velocity: .standard(60))
MIDISequencerStep(
notes: [Note(type: .c, octave: 4), Note(type: .d, octave: 4)],
octave: 4,
noteValue: NoteValue(type: .quarter),
velocity: .standard(60))
MIDISequencerStep(
notes: Chord(type: .maj, key: .c).notes(octave: 4) + [Note(type: .c, octave: 4), Note(type: .d, octave: 4)],
noteValue: NoteValue(type: .quarter),
velocity: .standard(60))
- Create arpeggiated steps with any notes from chords, scales in any octave range with
MIDISequencerArpeggiator
.
let arpeggiator = MIDISequencerArpeggiator(
scale: Scale(type: .blues, key: .a),
arpeggio: .random,
octaves: [4, 5])
let melody = MIDISequencerTrack(
name: "Melody",
midiChannel: 3,
steps: arpeggiator.steps(noteValue: NoteValue(type: .quarter), velocity: .random(min: 80, max: 120)))
sequencer.addTrack(track: melody)
-
Set
isMuted
property totrue
to mute anyMIDISequencerStep
. -
Call one of
play()
orplayAsync()
functions to play sequance.
state = .loading
sequancer.playAsync(completion: {
self.state = .playing
})
- Call
stop()
to stop playing.
sequencer.stop()
See full documentation
This library used in my app ChordBud, check it out!