Found this elsewhere on these forums. Courtesy of Drihscol and raynebc, from what I remember.
1 - Normal notes and markers
2 - Ghost notes, and used in marking arpeggio chord shapes
3 - Bent notes
4 - Muted notes
5 - Tapped notes (hopos that don't need the previous note to have been hit)
6 - Harmonics
7 - Pinch Harmonics
14 - High area strum marker - GBE strings
15 - Medium area strum marker - DGB strings
16 - Low area strum marker - EAD strings
108 - Hand position (Velocity = fret)
105 - Strum area (used with channel 14, 15 and 16)
104 - Arpeggio Marker (used with channel 2)
103 - Velocity 107 = Slide up
Velocity 108 - Slide down
15 - Root notes
4 - Root notes
[begin_pg song_trainer_pg_#] Replace # with 1, then 2, etc, Starts a trainer section
[end_pg song_trainer_pg_#] Replace # with 1, then 2, etc, Ends a trainer section
[pg_norm song_trainer_pg_#] Replace # with 1, then 2, etc, Loops a trainer section; to be placed between begin and end events
[begin_pb song_trainer_pb_#] Replace # with 1, then 2, etc, Starts a trainer section
[end_pb song_trainer_pb_#] Replace # with 1, then 2, etc, Ends a trainer section
[pb_norm song_trainer_pb_#] Replace # with 1, then 2, etc, Loops a trainer section; to be placed between begin and end events
[chrd3 ...] Replace ... with chord name; names a chord for expert
[chrd2 ...] Replace ... with chord name; names a chord for hard
[chrd1 ...] Replace ... with chord name; names a chord for medium
[chrd0 ...] Replace ... with chord name; names a chord for easy (maybe, not tested)
MIDI notes 24-29 are used to define notes in the easy difficulty.
MIDI notes 48-53 define notes in the medium difficulty.
MIDI notes 72-77 define notes in the hard difficulty.
MIDI notes 96-101 define notes in the expert difficulty.
The fret number each note uses is encoded in the velocity of the MIDI note, where fret # is defined by using velocity (100 + #).
For instance, a note on 97 with a velocity of 105 would be the in-game equivalent of the A-string, fret 5 (2nd string, 5th fret).
The channel number used (in a number system where channels begin with number 1) for the MIDI note indicates whether the note is "normal" (channel 1), a ghost note (channel 2) or a string muted note (channel 4). Other techniques are defined using MIDI note markers.
Be aware that in the event of chords that have some strings encoded as normal and some encoded as string mutes, the game will display the entire chord as string muted. If you want to author a chord like 3X5, just leave the string muted chord out.
These are defined by using a marker 7 notes higher than lane 1 (ie. 103 for expert difficulty). The velocity of this marker defines the direction of the slide.
A velocity of 108 (indicating fret 8) or higher indicates the slide is downward.
A velocity of 107 (indicating fret 7) or lower indicates the slide is upward.
For unknown reasons, RB3 may show a slide going the opposite direction than is expected. Encoding the slide marker to use channel 12 (in a channel numbering system that begins with 1) signals to the game to reverse the displayed direction for the slide. The use of this reverse mechanism is preferred to authoring the MIDI to have the slide go in the wrong direction just to have it display correctly in-game, because then the intended direction of the slide is reflected in the MIDI.
These are defined by using a marker 8 notes higher than lane 1 (ie. 104 for expert difficulty). The entire chord reflected by the arpeggio is defined at the start position of the marker, but the notes that are not played are authored as "ghost" notes by encoding them in channel 2 (in a number system where channels begin with number 1). Until the end of the arpeggio marker, the fretboard in-game is displayed turquoise to indicate an arpeggio is in effect.
Chords can exist inside arpeggios, but I don't know how a named chord inside an arpeggio would be displayed in-game.
These are used in chord-heavy parts of songs to emphasize the strum pattern the player is recommended to use. This is defined (on a per-chord basis) by using a marker 9 higher than lane 1 (ie. 105 for expert difficulty) and using one of 3 particular MIDI channels for the marker.
The following channel numbers reflect a numbering system that begins with 1:
High area strums use channel 14 and emphasize the G, B and high E strings.
Medium area strums use channel 15 and emphasize the A, D, G and B strings.
Low area strums use channel 16 and emphasize the low E, A and D strings.
My understanding of strum area markers is also that the game ignores scoring for the strings that are not emphasized by the marker (ie. when a high area strum marker is in use, the low E, A and D strings are ignored whether or not the user plays them regardless of whether there are notes defined in the chart that use those strings). I've only seem official RB3 charts to have strum area markers defined in the hard and expert difficulties of songs.
These are text events placed at beat positions.
For the guitar track, the beginning of the trainer uses the format of "[begin_pg song_trainer_pg_#]" and the end uses the format of
"[end_pg song_trainer_pg_#]". Replace # with the appropriate trainer number, ie. "1", "2" and so on.
You can place a "[pg_norm song_trainer_pg_#]" text event somewhere between the begin and end events to cause RB3 to seemlessly loop the trainer (A/B repeat style) instead of doing the stop, rewind, restart method that RB3 does by default.
To use trainers in the bass track, replace the "pg" parts of each of those 3 text events with "pb".
It's important to note that trainer sections are only defined in the 17 fret guitar/bass track and are automatically read by the game
if the player is using a Squier guitar (playing the 22 fret track).
Placing trainer events in the 22 fret tracks causes the game to crash.
Like EOF, Rock Band 3 automatically looks up the name for chords based on what intervals are played. The catch here is that the game doesn't automatically know what scale a chord is in, so the MIDI has to define which one and Magma refers to this as the root note. The root note numbering goes from 4 (scale of E) to 15 (scale of Eb), and each adjacent scale is 1 different (ie. 9 is scale of A). If a chord is to be displayed as a slash chord, a note 16 marker is written IN ADDITION to the root note.
For example, Fm7/E uses root notes 5 and 16.
Am/G uses root notes 9 and 16. If no name is to be displayed for a chord, write note marker 17.
Manual chord names
If you want to manually define a chord name you can use text events to override the game's chord lookup.
"[chrd1 ...]", "[chrd2 ...]" and "[chrd3 ...]" define the name of the chord at that position in the
Medium, Hard and Expert difficulties, respectively. Just replace "..." with the name you want to show up. You can use a whitespace character to cause the chord to display with no name.
I've always assumed "[chrd0 ...]" may work to define a chord name in the Easy difficulty, but I never tried this because to my knowledge Harmonix did not define anything more than single notes in that difficulty for any song.
You can display superscript in a note name by using a <gtr> tag around the superscripted portion of the name.
For example, the third arpeggio in the on-disc song "Foolin" is named "FM7<gtr>#11</gtr>".
Presumably this is only used for the chord name lookup and possibly the chord helper (I think I remember people saying it would show the string's tuning if the helper was close enough to the nut end of the guitar neck).
In RB3, the tuning is defined in the upgrades.dta file used in the upgrade CON file and specifies the number of half steps above or below standard each string is tuned.
For example, to declare that the 17 fret guitar track (and 22 fret guitar track, if present) is in Drop D tuning:
(real_guitar_tuning (-2 0 0 0 0 0))
To declare that the 17 fret bass track (and 22 fret bass track, if present) is in standard tuning:
(real_bass_tuning (0 0 0 0))
Left hand positions
Besides possibly being used for animations, I could never come up with any reason why these would be used by the game except that maybe it defines where on the neck the chord helper is displayed. Conceptually it can be considered roughly the same as the mechanism in Rocksmith defining where the fret hand is placed (ie. which fret the index finger is at).
This is defined by using using MIDI note 108 with a velocity of (100 + #) to define the fret number. If I remember correctly, only positions defined at frets 1 through 19 are valid and Magma will complain if a left hand position isn't defined at or before the first note in a track is reached, and will also complain if a fret value lower than the left hand position in effect is reached.
It had been found that if a left hand position got to be too much lower than a note's/chord's fret value, the game would start displaying fret values as 0. We don't know why it does this.
Just try to keep the positions relatively accurate, ie. probably no more than 3 or 4 frets below any fret value. This does mean it won't work well to try to define different guitar arrangements in different difficulties of the same pro guitar/bass track, but you can try it.
As for requirements, root notes are required. You don't need to match every note with a root note, just make sure a root note is placed at or before each note that's appropriate, which means no more than 4 frets away from that note.
You also need to match overdrive with the regular bass/guitar charts. Haven't yet tried to compile a Pro Guitar chart, so I can't say what's required for a chart with chords.
Hope this helps, at least a bit!
P.S. I recall reading somewhere that songs in the RBN 2.0 format (which we use) can't actually use Trainer sections, though they can be added in custom authored Pro upgrades for official HMX songs. Haven't tested this myself, but will do so soon.