MusicTheory

一个音乐理论库,包含 Swift 枚举中的 Key(调), Pitch(音高), Interval(音程), Scale(音阶)和 Chord(和弦)表示。

需求

安装

CocoaPods

pod 'MusicTheorySwift'

Swift Package Manager

let package = Package(
  name: ...
  dependencies: [
    .package(url: "https://github.com/cemolcay/MusicTheory.git")
  ],
  targets: ...
)

使用

MusicTheory 添加了一系列基本的枚举和结构体,你可以用它们来定义几乎所有与音乐相关的数据。最重要的包括 Pitch(音高), Key(调), Scale(音阶)和 Chord(和弦)。

所有数据类型都遵循 Codable, CustomStringConvertable 协议。
Pitch(音高)和 Accident(变音记号)结构体都遵循 RawPresentable 协议,使用 Int 作为原始值,并且遵循 ExpressibleByIntegerLiteral 协议,因此你可以直接使用 Int 来表示它们。

Pitch(音高) 和 Key(调)

let dFlat = Key(type: d, accidental: .flat)
let c4 = Pitch(key: Key(type: .c), octave: 4)
let aSharp: Key = "a#" // Key(type: .a, accidental: .sharp)
let gFlat3: Pitch = "gb3" // or "g♭3" or "Gb3" is Pitch(key: (type: .g, accidental: .flat), octave: 3)

Interval(音程)

ScaleType(音阶类型) 和 Scale(音阶)

let c = Key(type: .c)
let maj: ScaleType = .major
let cMaj = Scale(type: maj, key: c)

ChordType(和弦类型) 和 Chord(和弦)

let m13 = ChordType(
  third: .minor,
  seventh: .dominant,
  extensions: [
    ChordExtensionType(type: .thirteenth)
  ])
let cm13 = Chord(type: m13, key: Key(type: .c))
let progression = ChordProgression.i_ii_vi_iv
let cSharpHarmonicMinorTriadsProgression = progression.chords(
  for: cSharpHarmonicMinor,
  harmonicField: .triad,
  inversion: 0)

Tempo(速度) 和 TimeSignature(拍号)

HarmonicFunctions(和声功能)

Playgrounds(代码示例)

Documentation(文档)

完整的文档在这里

Unit Tests(单元测试)

你可以在 MusicTheoryTests 目标中找到单元测试。
⌘+U 运行测试。

AppStore(应用商店)

这个库在我的 iOS, macOS, watchOS 和 tvOS 应用中经过了实战测试,快来看看吧!
KeyBud (iOS, watchOS, tvOS, macOS)
FretBud (iOS, watchOS, tvOS)
ChordBud (iOS)
ArpBud (iOS)
ScaleBud (iOS, AUv3, M1)
StepBud (iOS, AUv3, M1)
RhythmBud (iOS, AUv3, M1)
ArpBud 2 (iOS, AUv3, M1)
ChordBud 2 (iOS, AUv3, M1)
LoopBud (iOS, AUv3, M1)
Euclid Goes to Party (iOS, AUv3, M1)
SnakeBud (iOS, AUv3, M1)
MelodyBud (iOS, AUv3, M1)
ScaleBud 2 (iOS, AUv3, M1)
ShiftBud (iOS, AUv3, M1)
PolyBud (iOS, AUv3, M1)
PatternBud (iOS, AUv3, M1)
MIDI Motion (iOS, watchOS)
Textquencer (iOS, AUv3, M1)
In Theory (iOS, AUv3, M1)
BrainBud (iOS, AUv3, M1)
Binarhythmic (iOS, AUv3, M1)
Auto Bass (iOS, AUv3, M1)
BounceBud (iOS, AUv3, M1)
MuseBud (iOS, AUv3, M1)
Auto Fills (iOS, AUv3, M1)
Kebarp (iOS, AUv3, M1)
FuncBud (iOS, AUv3, M1)
Note to Be (iOS, AUv3, M1)
Harmonicc (iOS, AUv3, M1)