Added onValueChangeEnd to Piano to detect mouseup/touchend. Refactored Piano to inherit from Widget for speed.
Piano: added octave to onvaluechange(). Added sharpsOnly simpler label option