Swifty Chords

banner

这是一个 Swift 库,可以为其数据库中的任何和弦生成 CAShapeLayer。您只需要提供一个 Key (C, C# 等) 和一个后缀 (Major, Minor, sus4 等) 来找到合适的和弦。每个和弦都有几个变体。

这个数据库来自我之前找到的另一个项目,但记不清是哪个了。请不要 100% 依赖这些数据,因为我发现一些和弦是不正确的。如果您发现任何错误,请提交 PR 来更正它们。

这个库目前处于 Beta 阶段。一切正常,绘图速度也很好,但仍有很大的改进空间。

我正在我的音乐学习应用程序 "Mustud" 中使用这个库,没有任何问题。

要求

安装

目前只支持 Swift Package Manager。

用法

设置

import SwiftyChords

搜索

获取所有和弦

Chords.guitar

按 Key 过滤

返回基于 C# 的所有和弦

Chords.guitar.matching(key: .cSharp)

按后缀过滤

返回数据库中所有 Key 的大七和弦。

Chords.guitar.matching(suffix: .majorSeven)

按 Key 和后缀过滤

返回所有 C Major 和弦。这些将按照在指板上的位置排序,从琴枕开始。

Chords.guitar.matching(key: .c).matching(suffix: .major)

按后缀组过滤

返回数据库中所有挂留和弦及其变体,例如 sus2, sus4

Chords.guitar.matching(group: .suspended)

按字符串关键字过滤

返回所有 Dsus4 和弦。这与按 Key 和后缀过滤效果相同。

Chords.guitar.matching(keyword: "Dsus4") // same as Chords.guitar.matching(key: .d).matching(suffix: .sus4)

显示

Swifty Chords 支持许多可在 UI 中使用的替代文本,包括一种便于辅助功能文本转语音的变体。 Key 和 Suffix 属性的显示文本可以组合以完成和弦名称。

let cMajSevenFlatFive = Chords.guitar.matching(key: .c).matching(suffix: .majorSevenFlatFive)
print(cMajSevenFlatFive.suffix.display.accessible) // " major seven flat five"
print(cMajSevenFlatFive.suffix.display.short)      // "Maj7b5"
print(cMajSevenFlatFive.suffix.display.symbolized) // "Maj⁷♭⁵" 
print(cMajSevenFlatFive.suffix.display.altSymbol)  // "M⁷♭⁵"

绘制

有很多方法可以使用 CAShapeLayer。您可以将其直接添加到视图,或将其转换为图像。

要使用它,我们只需要一个和弦!

let chordPosition = Chords.guitar.matching(key: .c).matching(suffix: .major).first!
let frame = CGRect(x: 0, y: 0, width: 100, height: 150) // I find these sizes to be good.
let layer = chordPosition.chordLayer(rect: frame, chordName: .init(show: true, key: .symbol, suffix: .symbolized))
imageView.image = layer.image() // might be expensive. Use Layers when possible while drawing to a view. Images are better if you plan to send them outside the app.

参数

rect: 将在其中绘制和弦的区域。这决定了它的大小。和弦具有设定的宽高比,因此和弦的大小将基于 rect 的最短边。

showFingers: 确定是否应在点上绘制手指数字。默认为 true

showChordName 确定是否应在和弦上方绘制和弦名称。选择此选项会稍微减小和弦图表的大小,以适应文本。可以为 Key 和 Suffix 设置显示模式。默认为 rawValue

forPrint: 如果设置为 true,则图表将着色为黑色,忽略用户设备设置。如果设置为 false,则图表的颜色将与系统标签颜色匹配。浅色模式下为深色文本,深色模式下为浅色文本。默认为 false

mirror: 适用于左撇子用户。这会将和弦沿其 y 轴翻转。默认为 false