TestsTested | ✗ |
LangLanguage | SwiftSwift |
License | MIT |
ReleasedLast Release | Jan 2018 |
SwiftSwift Version | 3.0 |
SPMSupports SPM | ✗ |
Maintained by Cem Olcay, Aurelius Prochazka.
Depends on: | |
AudioKit | >= 0 |
MusicTheorySwift | >= 0 |
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.
pod 'MIDISequencer'
MIDISequencer built top on AudioKit
's AKSequencer
with MusicTheory
library to create sequences just focusing on notes with multiple track support.
MIDISequencer
instance.let sequencer = MIDISequencer(name: "Awesome Sequencer")
MIDISequencerTrack
and add it to sequencer's tracks.let track = MIDISequencerTrack(
name: "Track 1",
midiChannel: 1)
sequencer.tracks.append(track)
sequencer.tempo = Tempo(
timeSignature: TimeSignature(
beats: 4,
noteValue: .quarter),
bpm: 80)
MIDISequencerStep
s to track's steps
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)
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))
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 to true
to mute any MIDISequencerStep
.
Call one of play()
or playAsync()
functions to play sequance.
state = .loading
sequancer.playAsync(completion: {
self.state = .playing
})
stop()
to stop playing.sequencer.stop()
See full documentation
This library used in my app ChordBud, check it out!