https://github.com/0thernet/MusicKit
A framework for composing and transforming music in Swift
https://github.com/0thernet/MusicKit
Last synced: about 1 month ago
JSON representation
A framework for composing and transforming music in Swift
- Host: GitHub
- URL: https://github.com/0thernet/MusicKit
- Owner: 0thernet
- License: mit
- Created: 2015-01-02T02:13:26.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-03-03T13:22:49.000Z (about 4 years ago)
- Last Synced: 2025-03-01T23:27:47.209Z (about 1 month ago)
- Language: Swift
- Homepage:
- Size: 29.6 MB
- Stars: 617
- Watchers: 25
- Forks: 46
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-swift - MusicKit - A framework for composing and transforming music. (Libs / Audio)
- fucking-awesome-swift - MusicKit - A framework for composing and transforming music. (Libs / Audio)
README
# MusicKit
MusicKit is a framework and DSL for creating, analyzing, and transforming music in Swift.
### Examples
**Functional harmony**
```swift
let C5 = Pitch(midi: 72)
let neapolitan = Major.bII
print(neapolitan(C5)) // [C♯5, E♯5, G♯5]
let G4 = Chroma.G*4
let plagalCadence = [Major.IV, Major.I]
print(plagalCadence * G4) // [[C5, E5, G5], [G4, B4, D5]]
let V7ofV = HarmonicFunction.create(Scale.Major, degree: 5, chord: Major.V7)
print(V7ofV(C5)) // [D6, F♯6, A6, C7]
```**Chord recognition**
```swift
let pitchSet: PitchSet = [Chroma.B*0, Chroma.Cs*2, Chroma.F*3, Chroma.G*4]
print(Chord.name(pitchSet)) // G7♭5/B
let descriptor = Chord.descriptor(pitchSet)
print(descriptor) // root: G, quality: 7♭5, bass: B
```**MIDI I/O**
```swift
let midi = MIDI(name: "WholetoneClusters")
midi.noteHandler = { messages in
if let first = messages.first {
midi.send([first, first.transpose(2), first.transpose(3)])
}
}
```[Framework Overview](/Documentation/FrameworkOverview.md)