Track the active notes, try to gracefully stop
Ensure one-time callbacks are only called once

Also bind the callbacks into the emitter's context.
Fix toString() for string notes
Got the keyboard input sort of playable