   }
 }
 
+// MARK: - FretLabel
+
+@IBDesignable
+public class FretLabel: FRView {
+  public var textLayer = CenterTextLayer()
+
+  // MARK: Init
+
+  #if os(iOS) || os(tvOS)
+  public override init(frame: CGRect) {
+  super.init(frame: frame)
+  layer.addSublayer(textLayer)
+  }
+  #elseif os(OSX)
+  public override init(frame frameRect: NSRect) {
+    super.init(frame: frameRect)
+    wantsLayer = true
+    textLayer.alignmentMode = kCAAlignmentCenter
+    layer?.addSublayer(textLayer)
+  }
+  #endif
+
+  public required init?(coder aDecoder: NSCoder) {
+    super.init(coder: aDecoder)
+  }
+
+  // MARK: Lifecycle
+
+  #if os(iOS) || os(tvOS)
+  public override func layoutSubviews() {
+    super.layoutSubviews()
+    textLayer.frame = layer.bounds
+  }
+  #elseif os(OSX)
+  public override func layout() {
+    super.layout()
+    guard let layer = layer else { return }
+    textLayer.frame = layer.bounds
+  }
+  #endif
+}
+
 // MARK: - FretView
 
 public enum FretNoteType {

    @IBInspectable public var fretColor: UIColor = .darkGray { didSet { redraw() }}
    @IBInspectable public var noteColor: UIColor = .black { didSet { redraw() }}
    @IBInspectable public var noteTextColor: UIColor = .white { didSet { redraw() }}
  #elseif os(OSX)
    @IBInspectable public var stringColor: NSColor = .black { didSet { redraw() }}
    @IBInspectable public var fretColor: NSColor = .darkGray { didSet { redraw() }}
    @IBInspectable public var noteColor: NSColor = .black { didSet { redraw() }}
    @IBInspectable public var noteTextColor: NSColor = .white { didSet { redraw() }}
  #endif

  private var fretViews: [FretView] = []

  // MARK: Init


  public var fretboard = Fretboard()

  @IBInspectable public var isDrawNoteName: Bool = true { didSet { redraw() }}
  @IBInspectable public var isDrawStringName: Bool = true { didSet { redraw() }}
  @IBInspectable public var isDrawFretNumber: Bool = true { didSet { redraw() }}
  @IBInspectable public var isChordModeOn: Bool = false { didSet { redraw() }}
  @IBInspectable public var fretWidth: CGFloat = 5 { didSet { redraw() }}
