The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
Added More Scales
2 years ago
110 scales in total.
Init Pitch with negative midi numbers
3 years ago
Harmonic Functions
3 years ago
Added harmonic functions support!
Now you can create harmonic functions from a scale and get possible directions for a key according to its harmonic function in the scale.
Added Swift Package Manager Support
4 years ago
Update Swift 5
4 years ago
Add CustomChordType
5 years ago
Represents a custom chord type for the chords that can not be represented by the current data structures.
Can be initialized with the custom intervals.
Data structure changes and new chord functionality
5 years ago
* Generate roman numerics for chords
* Make ScaleType and ChordProgression `struct` instead of `enum`
Added Chord Progressions
5 years ago
You can create chord progressions now. It supports custom ones with `Codable` protocol, that you can store and use later.
``` swift
let progression = ChordProgression.i_ii_vi_iv
let cSharpHarmonicMinorTriadsProgression = progression.chords(
for: cSharpHarmonicMinor,
harmonicField: .triad,
inversion: 0)
```
ExpressibleByStringLiteral Support
5 years ago
You can create `Pitch`es and `Key`s from string now.
``` swift
let p: Pitch = "c#2"
let k: Key = "a#"
```
Breaking Changes
----
- `Note` and `NoteType` structs removed.
- You need to use `Key` instead of `NoteType` with a `KeyType` and `Accidental`.
- You need to use `Pitch` instead of `Note` with a `Key` and octave (Int).
- `Scale` and `Chord` structs `notes(..)` functions renamed `pitches(...)` and they are returning `[Pitch]` instead of `[Note]`.
- `Scale` and `Chord` structs `noteTypes` property renamed `keys` and it returns `[Key]` instead of `[NoteType]`.
- New `Accidental` struct added. You can define accidents like sharp, flat, doubleSharp or more spesific like `.sharps(amount: 3)`.
- `Interval` struct rewritten. Now it is a struct instead of an enum. But all important intervals as in old version added as `static` variables and it probably won't break anything.