Slicable Music Format

In my excursion to write a music wiki (which I’m picking up on, because Nguyen, Nathan Stang and I have decided to write a piece together), I’ve decided that I need an intermediate format for music other than MIDI. It would be a big mistake to try to make it a notation format (there are plenty of those), so this format will be largely isometric to MIDI. There are a few differences, though:

  • Mostly human-readable (but not writable, most of the time)
  • Line-based (so that diff and merge like it)
  • Measure-based (times are given in terms of the start of the measure, rather than from the last event)
  • Notes are given in terms of (start,duration) rather than (start, end).
  • Notes are given in the form e.g. c#3, rather than 49.
  • Volume is canonicalized into velocity.

The idea is so that it makes it easy to strip out, say, tempo change events, and so that wikiers don’t have to download and upload to make very simple changes.


2 thoughts on “Slicable Music Format

  1. mmh, nice idea. However velocity is actually something very different from sound volume, so why merge them?

  2. Because some music programs don’t know that. Cakewalk (now Geniesoft) Overture uses controller 7 for dynamics, which is just plain wrong. The whole idea for the format is so that you can edit with your favorite program. On the other hand, we could just have “normalize volume to velocity” as one of the standard slice controls. It would have to be on by default, because users might not have any idea what the difference is. The ones who do know can make the decision that normalizing is the wrong thing to do if they need to.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s