NewReader returns an io.Reader that can be read of by third party
libraries that expect midi as bytes. When the data is read, it
gets the midi as typed midi.Messages from the given midi.Reader
NewWriter allows us to pass our custom midi.Writer and returns an io.Writer
that we can write the bytes to. This is important, if we get the midi bytes
from a third party library as bytes but want to use them as typed midi.Messages