Use multiple arity to clean up functions

- Allow things like note-on and note-off to take arguments that were previously hardcoded