Piano Keyboard for iOS

Piano Keyboard for iOS

Released 5 years ago , Last update 2 years ago

High-performance code for multi-touch piano keyboard for iPhone and iPad. This MIDI enabled keyboard is ready to plug straight in to your App.

The Piano Keyboard for iOS is a professional grade soft keyboard for iPhone and iPad. It supports full multi touch tracking all 10 fingers simultaniously. It has a flexible design which makes it easy to customize the number of keys, the tuning of the keys and the style of the keys. Project comes setup up with a fully configured audio graph - the notes from the keyboard are synthazised using real piano samples.


  • High performance touch tracking for up to 10 simultaneous touches
  • Easy integration, key-down and key-up commands are available in real-time
  • Flexible keyboard size
  • Keyboard scale can be easily changed
  • Easy to read Objective-C code with lots of comments
  • Look and feel of the keyboard can be changed by adding your own images
  • Notes can be assigned a MIDI number
  • The project provide includes an example of how the keyboard can be connected to an AUGraph to produce realistic piano sounds
  • Fully Swift compatible


This keyboard has been used in hundreds of live app. Here what our customers have to say:

"I was quite impressed with the quality of this product. The final piano solution was full featured, very responsive to keystrokes, and sounded absolutely perfect. The code was minimal and introduced me to quite a few new concepts that I haven't encountered yet! 

It's not just that this component saved me money and time, I could have never created a product this well done on my own. I was completely unaware of a few of the technologies used in this product." Phillip Davis


"Excellent component! Must have if you are writing a piano component in your app"

Live apps

Here's an example of the keyboard in a live app designed by one of our many customers:

  • 5 5
  • 4 0
  • 3 0
  • 2 0
  • 1 0
5 Reviews Read Reviews


14 day 14-day money-back guarantee


Application License

  • Perpetual license

  • 1 application

  • Can distribute binary products only

  • Commercial use


Enterprise License

  • Perpetual license

  • 999 projects

  • Can distribute code and binary products

  • Commercial use

Need custom services for this product? Get a quote

Installation Instructions

Add the piano keyboard classes to your project:

  • bKeyType.h
  • BPianoDelegate.h
  • BPianoKey.h
  • BPianoKey.m
  • BPianoView.h
  • BPianoView.m

Choose a view controller where you want to display the keyboard and add the following imports:

#import "BPianoKey.h" 
#import "BPianoView.h"
#import "BPianoDelegate.h"

Register the view controller as a piano delegate:

@interface BViewController : UIViewController<BPianoDelegate>

Add the relevant protocol methods to the implementation:

-(void) noteOn:(Byte)note {

-(void) noteOff:(Byte)note {

These will be called by the PianoView class when a key is pressed or released.

Finally, add the piano to your view. You need to choose the midi note number for the bottom note of the keyboard, the keyboard scale and the number of white notes to be rendered.

BPianoView * pianoView = [[BPianoView alloc] initWithNumberOfNotes:14 withScale: 0.654 withStartingNote:48];
pianoView.delegate = self;

[self.view addSubview:pianoView]; 

This will cause the keyboard to be rendered in the your view controller and all note-down or note-up commands will be sent to the relevant methods in the delegate.

3 licenses, starting from From » $59.99 View Licenses

Get A Quote

What do you need?
  • Custom development
  • Integration
  • Customization / Reskinning
  • Consultation
When do you need it?
  • Soon
  • Next week
  • Next month
  • Anytime

Thanks for getting in touch!

Your quote details have been received and we'll get back to you soon.

or Get a quote

for customization or integration services

Or enter your name and Email
  • G GREGORY License holderApplication License
    Purchased on Mar 16, 2013
    3 years ago
    Hi Ben, Did you get my request for a quote yesterday for an app using this and your MIDI animation kit
    • Ben Smiley Publisher 3 years ago
      Hi Gregory, I've replied to your email. Thanks, Ben
  • PC Peter C. 3 years ago
    Hi Ben ! I was wondering if you also have this available in Swift as a download? Best, Peter
    • Ben Smiley Publisher 3 years ago
      Hi Peter, I'm afraid that there's currently no version available in Swift. Thanks, Ben
    • PC Peter C. 3 years ago
      Ok, thank you. I am currently trying to create a piano app myself in Swift, but am having some trouble with the response of the keys. On the upper left side of this webpage it says you use UIKit as a framework. What framework do you use to create the music part? I'm just wondering if it's worth it for me to download the objective-c version and translate it to Swift myself. The problems I'm having with my piano app (AVFoundation) is that there is a latency/delay issue, non responsive behaviour and not able to do precise multi-touch. When I look at your video of this app, it looks exactly what I'm looking for and I'm considering downloading it. Did you use any other specific framework that's not standard in Xcode? I'm just trying to decide if I should go for it or not. Thank you for your fast response ! Peter
    • Ben Smiley Publisher 3 years ago
      Hi Peter, The audio part of the piano is created using CoreAudio - An AUSampler (with a piano SoundFont) attached to a remote IO unit. I didn't use any custom frameworks - just created some custom views and overrode the touch detection methods. Getting the multi-touch to work is tricky. Personally I'd recommend just leaving the component in Objective C. The piano only requires about 5 lines of code to add it to a project. Thanks, Ben
    • PC Peter C. 3 years ago
      So, just to be clear. Would it be easy for me to add your files (in Objective-C) to my Xcode-project which I wrote in Swift and make it work? I'm new in iOS programming and have only been working with Swift so far. Would I be able to translate the entire file to Swift or should I just do like you said and add the Objective-C files to my app and try to make a bridge? Just want to make sure I understand correctly. Thank you for responding this fast ! And you are saying that if I want to add your piano to my current project it would only need 5 lines of code? Peter
    • Ben Smiley Publisher 3 years ago
      Hi Peter, Here's a guide which explains how to import Objective C to Swift: http://stackoverflow.com/questions/24002369/how-to-call-objective-c-code-from-swift You could try to translate the classes into Swift. But the problem may be that if you make one small mistake, the component wouldn't work properly. To add the component you just need to add the piano view to your view, create a new audio controller instance and set your view as the piano delegate. It is very straightforward. There's an example in the project file. Thanks, Ben
    • AF Albert Frantz 3 years ago
      Hi Ben, Could you perhaps create a bare-bones Swift project that imports the Objective C classes and creates a piano view? It seems there are many of us just getting started with Swift who have the same questions. I understand that this task must be trivial for you but it's still daunting to beginners who don't yet know the syntax. This would be an enormous help! Kind regards, Albert
    • BS Ben Smiley 3 years ago
      Hi Albert, I'll try to create a SWIFT template this week. Thanks, Ben
    • AF Albert Frantz 3 years ago
      Thanks, Ben! Much appreciated.
    • AF Albert Frantz 3 years ago
      Any update on the Swift template? I'm eager to get started with your library (and thus far haven't been able to get it working in Swift). Many thanks in advance.
    • AF Albert Frantz 3 years ago
      Hi Ben, Any news on the Swift template? It's been over a month and I'm eager to get started. Many thanks, Albert
    • Ben Smiley Publisher 2 years ago
      Hi Albert, The Swift package has now been added. Sorry for the delay! Thanks, Ben
    • AF Albert Frantz 2 years ago
      Thanks, Ben, works beautifully! The only small issues is that Xcode (7.3) says setDelegate and AudioSessionSetProperty have been deprecated. The code will likely still run into the next major iOS version or two, but maybe a future version of your code will have a workaround?
  • S Sabine License holderApplication License
    Purchased on Dec 26, 2014
    3 years ago
    is the pianokeyboard class available in swift langage ?