fbpx
Skip to main content

MIDI Forum

Notifications
Clear all

Chords in SMF?

4 Posts
4 Users
0 Reactions
10.8 K Views
K Richard Pixley
Posts: 1
New Member
Topic starter
 

I'm looking for a way to represent chords in a MIDI file.

Note that I'm not looking to represent chord voicings. That can be trivially done with multiple note-on messages. But if I do that, then I have to do some sort of note-on to chord analysis every time I read the MIDI file back in, and that's a major nuisance, especially since I already know the chord structures when I write the file.

Rather, I'm looking for something more akin to guitar tablature or fake books. That is, I want to record "C" or "Cm" or "I" or "I" or “iii7" at a particular point in time. Think of something akin to a karaoke machine so you can play along with your guitar. So vaguely like MIDI lyric/display events, but with chords.

So my questions...

Is there a standard way to do this? (I'm not finding one, but I don't know the current spec thoroughly.)

Is there a non-standard way of doing this? (Surely I'm not the first person to want to or ask about it.)

I'm considering using the "tag" facility of the lyric/display meta event. It appears as though I can invent {@chord=Cm} and that should be transparent to any reader, past, present, or future, who doesn't understand this usage. Am I reading the standard right? Would this be a reasonable, essentially private, non-standard extension?

 
Posted : 22/08/2016 5:41 pm
Clemens Ladisch
Posts: 324
 

There is no standard way to do this.

You can put whatever you like into such a text event, but no other software will be able to handle it.

 
Posted : 23/08/2016 12:47 am
MMA
 MMA
Posts: 25
Admin Registered
 

There is no MIDI Standard for how to store chord names in an SMF, but some products (Band in a Box, for example) do it, so if you are interested in compatibility you might want to check them out first.

Other companies (Yamaha, for example, with their XF MIDI format) have created proprietary versions of SMF which they identify by other names, that allow them to handle features such as chords. (I believe Yamaha uses the SMF "Sequencer Specific Meta-event" for chord names.)

>> It appears as though I can invent {@chord=Cm}

You could, but there's no way to know if all devices that read Lyric/Display tags will also ignore any unknown tags, so you might find it is safer to place your chord names in text events, as Clemens suggested.

Forum Admin
MIDI Mfrs Assoc

 
Posted : 24/08/2016 9:48 am
Jan
 Jan
Posts: 6
Active Member
 

I'm considering using the "tag" facility of the lyric/display meta event. It appears as though I can invent {@chord=Cm}

If you consider inventing a new tag, I would suggest {#chord=Cm} rather than {@chord=Cm}.
According to RP-026, {@...} is used for charakter sets.

 
Posted : 04/03/2019 1:38 am
Share: