PianoKeyboard

An iOS piano keyboard view for iPhone or iPad, written in Swift 5.
Has an IBDesignable preview in interface builder with IBInspectable properties for:

  • Number of keys
  • Hide/show note names on white keys
  • Black key height and width
  • Hightlight keys, with individual colour (optional play note)
  • Custom key labels

Other features

  • Latch/Hold key

All images are drawn using Core Graphics.

Installation

CocoaPods

To use via CocoaPods, add the following line to your Podfile:

pod 'PianoKeyboard'

Swift Package Manager

With Xcode 11+ you can add PianoKeyboard to your project using the Swift Package Manager. From the File menu select Swift Packages and then select Add Package Dependency. A dialogue then will request the package repository URL, enter:

https://github.com/garynewby/PianoKeyboard.git

Demo

The Example app demonstrates how to integrate and use PianoKeyboard in your project. It includes a simple AVAudioEngine/AVAudioUnitSampler based sound source.

Delegate Methods

func pianoKeyDown(_ keyNumber: Int) {
  // Called when the key corresponding to midi number keyNumber is pressed
}

func pianoKeyUp(_ keyNumber: Int) {
  // Called when the key corresponding to midi number keyNumber is released
}

Key Labels

A key's label must be assigned a value for it to show:

keyboard.setLabel(for: 60, text: "Do")
keyboard.setLabel(for: 62, text: "Re")
keyboard.setLabel(for: 64, text: "Mi")

for noteNumber in 65...72 {
    keyboard.setLabel(for: noteNumber, text: Note.name(for: noteNumber))
}

Requirements

  • Swift 5

Author

Gary Newby

GitHub