1
1
mirror of https://github.com/wader/fq.git synced 2024-10-03 23:17:50 +03:00

midi: cleaned up event decoding logic

This commit is contained in:
twystd 2024-08-26 00:50:52 -07:00
parent 36b776ef5d
commit 899549623d
10 changed files with 315 additions and 471 deletions

View File

@ -31,24 +31,24 @@ const (
)
var metaevents = scalar.UintMapSymStr{
0xff00: "sequence umber",
0xff01: "text",
0xff02: "copyright",
0xff03: "track name",
0xff04: "instrument name",
0xff05: "lyric",
0xff06: "marker",
0xff07: "cue point",
0xff08: "program name",
0xff09: "device name",
0xff20: "midi channel prefix",
0xff21: "midi port",
0xff51: "tempo",
0xff54: "smpte offset",
0xff58: "time signature",
0xff59: "key signature",
0xff2f: "end of track",
0xff7f: "sequencer specific event",
0xff00: "Sequence Number",
0xff01: "Text",
0xff02: "Copyright",
0xff03: "Track Name",
0xff04: "Instrument Name",
0xff05: "Lyric",
0xff06: "Marker",
0xff07: "Cue Point",
0xff08: "Program Name",
0xff09: "Device Name",
0xff20: "Midi Channel Prefix",
0xff21: "Midi Port",
0xff51: "Tempo",
0xff54: "Smpte Offset",
0xff58: "Time Signature",
0xff59: "Key Signature",
0xff2f: "End Of Track",
0xff7f: "Sequencer Specific Event",
}
var framerates = scalar.UintMapSymUint{
@ -69,132 +69,68 @@ func decodeMetaEvent(d *decode.D, event uint8, ctx *context) {
ctx.tick += dt
}
metaevent := func(name string, f func(d *decode.D)) {
d.FieldStruct(name, func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
f(d)
})
}
switch MetaEventType(event) {
case TypeSequenceNumber:
d.FieldStruct("SequenceNumber", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeSequenceNumber(d)
})
metaevent("SequenceNumber", decodeSequenceNumber)
case TypeText:
d.FieldStruct("Text", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeText(d)
})
metaevent("Text", decodeText)
case TypeCopyright:
d.FieldStruct("Copyright", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeCopyright(d)
})
metaevent("Copyright", decodeCopyright)
case TypeTrackName:
d.FieldStruct("TrackName", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeTrackName(d)
})
metaevent("TrackName", decodeTrackName)
case TypeInstrumentName:
d.FieldStruct("InstrumentName", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeInstrumentName(d)
})
metaevent("InstrumentName", decodeInstrumentName)
case TypeLyric:
d.FieldStruct("Lyric", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeLyric(d)
})
metaevent("Lyric", decodeLyric)
case TypeMarker:
d.FieldStruct("Marker", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeMarker(d)
})
metaevent("Marker", decodeMarker)
case TypeCuePoint:
d.FieldStruct("CuePoint", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeCuePoint(d)
})
metaevent("CuePoint", decodeCuePoint)
case TypeProgramName:
d.FieldStruct("ProgramName", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeProgramName(d)
})
metaevent("ProgramName", decodeProgramName)
case TypeDeviceName:
d.FieldStruct("DeviceName", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeDeviceName(d)
})
metaevent("DeviceName", decodeDeviceName)
case TypeMIDIChannelPrefix:
d.FieldStruct("TypeMIDIChannelPrefix", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeMIDIChannelPrefix(d)
})
metaevent("MIDIChannelPrefix", decodeMIDIChannelPrefix)
case TypeMIDIPort:
d.FieldStruct("TypeMIDIPort", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeMIDIPort(d)
})
metaevent("MIDIPort", decodeMIDIPort)
case TypeTempo:
d.FieldStruct("Tempo", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeTempo(d)
})
metaevent("Tempo", decodeTempo)
case TypeSMPTEOffset:
d.FieldStruct("SMPTEOffset", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeSMPTEOffset(d)
})
metaevent("SMPTEOffset", decodeSMPTEOffset)
case TypeTimeSignature:
d.FieldStruct("TimeSignature", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeTimeSignature(d)
})
metaevent("TimeSignature", decodeTimeSignature)
case TypeKeySignature:
d.FieldStruct("KeySignature", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeKeySignature(d)
})
metaevent("KeySignature", decodeKeySignature)
case TypeEndOfTrack:
d.FieldStruct("EndOfTrack", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeEndOfTrack(d)
})
metaevent("EndOfTrack", decodeEndOfTrack)
case TypeSequencerSpecificEvent:
d.FieldStruct("SequencerSpecific", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldU16("event", metaevents)
decodeSequencerSpecificEvent(d)
})
metaevent("SequencerSpecific", decodeSequencerSpecificEvent)
default:
flush(d, "unknown meta event (%02x)", event)
@ -223,111 +159,39 @@ func decodeSequenceNumber(d *decode.D) {
}
func decodeText(d *decode.D) {
d.FieldStrFn("text", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("text", vlstring)
}
func decodeCopyright(d *decode.D) {
d.FieldStrFn("copyright", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("copyright", vlstring)
}
func decodeTrackName(d *decode.D) {
d.FieldStrFn("name", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("name", vlstring)
}
func decodeInstrumentName(d *decode.D) {
d.FieldStrFn("instrument", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("instrument", vlstring)
}
func decodeLyric(d *decode.D) {
d.FieldStrFn("lyric", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("lyric", vlstring)
}
func decodeMarker(d *decode.D) {
d.FieldStrFn("marker", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("marker", vlstring)
}
func decodeCuePoint(d *decode.D) {
d.FieldStrFn("cue", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("cue", vlstring)
}
func decodeProgramName(d *decode.D) {
d.FieldStrFn("program", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("program", vlstring)
}
func decodeDeviceName(d *decode.D) {
d.FieldStrFn("device", func(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
})
d.FieldStrFn("device", vlstring)
}
func decodeMIDIChannelPrefix(d *decode.D) {
@ -349,18 +213,18 @@ func decodeMIDIChannelPrefix(d *decode.D) {
func decodeMIDIPort(d *decode.D) {
d.FieldUintFn("port", func(d *decode.D) uint64 {
channel := uint64(0)
port := uint64(0)
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
for _, b := range data {
channel <<= 8
channel |= uint64(b & 0x00ff)
port <<= 8
port |= uint64(b & 0x00ff)
}
}
return channel
return port
})
}

View File

@ -203,6 +203,16 @@ func vlf(d *decode.D) ([]uint8, error) {
}
}
func vlstring(d *decode.D) string {
if data, err := vlf(d); err != nil {
d.Errorf("%v", err)
} else {
return string(data)
}
return ""
}
func flush(d *decode.D, format string, args ...any) {
d.Errorf(format, args...)

View File

@ -18,13 +18,13 @@ const (
)
var midievents = scalar.UintMapSymStr{
0x80: "note off",
0x90: "note on",
0xa0: "polyphonic pressure",
0xb0: "controller",
0xc0: "program change",
0xd0: "channel pressure",
0xe0: "pitch bend",
0x80: "Note Off",
0x90: "Note On",
0xa0: "Polyphonic Pressure",
0xb0: "Controller",
0xc0: "Program Change",
0xd0: "Channel Pressure",
0xe0: "Pitch Bend",
}
func decodeMIDIEvent(d *decode.D, status uint8, ctx *context) {
@ -42,6 +42,8 @@ func decodeMIDIEvent(d *decode.D, status uint8, ctx *context) {
ctx.tick += dt
}
event := uint64(status & 0xf0)
channel := func(d *decode.D) uint64 {
b := d.PeekBytes(1)
if b[0] >= 0x80 {
@ -51,71 +53,37 @@ func decodeMIDIEvent(d *decode.D, status uint8, ctx *context) {
return uint64(status & 0x0f)
}
event := uint64(status & 0xf0)
midievent := func(name string, f func(d *decode.D)) {
d.FieldStruct(name, func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
f(d)
})
}
switch MidiEventType(event) {
case TypeNoteOff:
d.FieldStruct("NoteOff", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodeNoteOff(d)
})
midievent("NoteOff", decodeNoteOff)
case TypeNoteOn:
d.FieldStruct("NoteOn", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodeNoteOn(d)
})
midievent("NoteOn", decodeNoteOn)
case TypePolyphonicPressure:
d.FieldStruct("PolyphonicPressure", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodePolyphonicPressure(d)
})
midievent("PolyphonicPressure", decodePolyphonicPressure)
case TypeController:
d.FieldStruct("Controller", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodeController(d)
})
midievent("Controller", decodeController)
case TypeProgramChange:
d.FieldStruct("ProgramChange", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodeProgramChange(d)
})
midievent("ProgramChange", decodeProgramChange)
case TypeChannelPressure:
d.FieldStruct("ChannelPressure", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodeChannelPressure(d)
})
midievent("ChannelPressure", decodeChannelPressure)
case TypePitchBend:
d.FieldStruct("PitchBend", func(d *decode.D) {
d.FieldStruct("time", delta)
d.FieldValueUint("event", event, midievents)
d.FieldUintFn("channel", channel)
decodePitchBend(d)
})
midievent("PitchBend", decodePitchBend)
default:
flush(d, "unknown MIDI event (%02x)", status&0xf0)

View File

@ -8,9 +8,9 @@ import (
)
var sysex = scalar.UintMapSymStr{
0x00f0: "sysex message",
0x80f7: "sysex continuation",
0x00f7: "sysex escape",
0x00f0: "Sysex Message",
0x80f7: "Sysex Continuation",
0x00f7: "Sysex Escape",
}
func decodeSysExEvent(d *decode.D, status uint8, ctx *context) {

View File

@ -17,92 +17,92 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0x16-0x17 (1)
0x010| 00 | . | delta: 0 0x16-0x17 (1)
| | | tick: 0
0x010| ff 00 | .. | event: "sequence umber" (65280) 0x17-0x19 (2)
0x010| ff 00 | .. | event: "Sequence Number" (65280) 0x17-0x19 (2)
0x010| 02 00 17 | ... | sequenceNumber: 23 0x19-0x1c (3)
| | | [1]{}: Text 0x1c-0x2d (17)
| | | time{}: 0x1c-0x1d (1)
0x010| 00 | . | delta: 0 0x1c-0x1d (1)
| | | tick: 0
0x010| ff 01 | .. | event: "text" (65281) 0x1d-0x1f (2)
0x010| ff 01 | .. | event: "Text" (65281) 0x1d-0x1f (2)
0x010| 0d| .| text: "This and That" 0x1f-0x2d (14)
0x020|54 68 69 73 20 61 6e 64 20 54 68 61 74 |This and That |
| | | [2]{}: Copyright 0x2d-0x35 (8)
| | | time{}: 0x2d-0x2e (1)
0x020| 00 | . | delta: 0 0x2d-0x2e (1)
| | | tick: 0
0x020| ff 02| ..| event: "copyright" (65282) 0x2e-0x30 (2)
0x020| ff 02| ..| event: "Copyright" (65282) 0x2e-0x30 (2)
0x030|04 54 68 65 6d |.Them | copyright: "Them" 0x30-0x35 (5)
| | | [3]{}: TrackName 0x35-0x41 (12)
| | | time{}: 0x35-0x36 (1)
0x030| 00 | . | delta: 0 0x35-0x36 (1)
| | | tick: 0
0x030| ff 03 | .. | event: "track name" (65283) 0x36-0x38 (2)
0x030| ff 03 | .. | event: "Track Name" (65283) 0x36-0x38 (2)
0x030| 08 46 6f 72 6d 61 74 20| .Format | name: "Format 0" 0x38-0x41 (9)
0x040|30 |0 |
| | | [4]{}: InstrumentName 0x41-0x4f (14)
| | | time{}: 0x41-0x42 (1)
0x040| 00 | . | delta: 0 0x41-0x42 (1)
| | | tick: 0
0x040| ff 04 | .. | event: "instrument name" (65284) 0x42-0x44 (2)
0x040| ff 04 | .. | event: "Instrument Name" (65284) 0x42-0x44 (2)
0x040| 0a 44 69 64 67 65 72 69 64 6f 6f | .Didgeridoo | instrument: "Didgeridoo" 0x44-0x4f (11)
| | | [5]{}: Lyric 0x4f-0x5b (12)
| | | time{}: 0x4f-0x50 (1)
0x040| 00| .| delta: 0 0x4f-0x50 (1)
| | | tick: 0
0x050|ff 05 |.. | event: "lyric" (65285) 0x50-0x52 (2)
0x050|ff 05 |.. | event: "Lyric" (65285) 0x50-0x52 (2)
0x050| 08 4c 61 2d 6c 61 2d 6c 61 | .La-la-la | lyric: "La-la-la" 0x52-0x5b (9)
| | | [6]{}: Marker 0x5b-0x6e (19)
| | | time{}: 0x5b-0x5c (1)
0x050| 00 | . | delta: 0 0x5b-0x5c (1)
| | | tick: 0
0x050| ff 06 | .. | event: "marker" (65286) 0x5c-0x5e (2)
0x050| ff 06 | .. | event: "Marker" (65286) 0x5c-0x5e (2)
0x050| 0f 48| .H| marker: "Here Be Dragons" 0x5e-0x6e (16)
0x060|65 72 65 20 42 65 20 44 72 61 67 6f 6e 73 |ere Be Dragons |
| | | [7]{}: CuePoint 0x6e-0x7e (16)
| | | time{}: 0x6e-0x6f (1)
0x060| 00 | . | delta: 0 0x6e-0x6f (1)
| | | tick: 0
0x060| ff| .| event: "cue point" (65287) 0x6f-0x71 (2)
0x060| ff| .| event: "Cue Point" (65287) 0x6f-0x71 (2)
0x070|07 |. |
0x070| 0c 4d 6f 72 65 20 63 6f 77 62 65 6c 6c | .More cowbell | cue: "More cowbell" 0x71-0x7e (13)
| | | [8]{}: ProgramName 0x7e-0x88 (10)
| | | time{}: 0x7e-0x7f (1)
0x070| 00 | . | delta: 0 0x7e-0x7f (1)
| | | tick: 0
0x070| ff| .| event: "program name" (65288) 0x7f-0x81 (2)
0x070| ff| .| event: "Program Name" (65288) 0x7f-0x81 (2)
0x080|08 |. |
0x080| 06 45 73 63 61 70 65 | .Escape | program: "Escape" 0x81-0x88 (7)
| | | [9]{}: DeviceName 0x88-0x94 (12)
| | | time{}: 0x88-0x89 (1)
0x080| 00 | . | delta: 0 0x88-0x89 (1)
| | | tick: 0
0x080| ff 09 | .. | event: "device name" (65289) 0x89-0x8b (2)
0x080| ff 09 | .. | event: "Device Name" (65289) 0x89-0x8b (2)
0x080| 08 54 68 65 54| .TheT| device: "TheThing" 0x8b-0x94 (9)
0x090|68 69 6e 67 |hing |
| | | [10]{}: TypeMIDIChannelPrefix 0x94-0x99 (5)
| | | [10]{}: MIDIChannelPrefix 0x94-0x99 (5)
| | | time{}: 0x94-0x95 (1)
0x090| 00 | . | delta: 0 0x94-0x95 (1)
| | | tick: 0
0x090| ff 20 | . | event: "midi channel prefix" (65312) 0x95-0x97 (2)
0x090| ff 20 | . | event: "Midi Channel Prefix" (65312) 0x95-0x97 (2)
0x090| 01 0d | .. | channel: 13 0x97-0x99 (2)
| | | [11]{}: TypeMIDIPort 0x99-0x9e (5)
| | | [11]{}: MIDIPort 0x99-0x9e (5)
| | | time{}: 0x99-0x9a (1)
0x090| 00 | . | delta: 0 0x99-0x9a (1)
| | | tick: 0
0x090| ff 21 | .! | event: "midi port" (65313) 0x9a-0x9c (2)
0x090| ff 21 | .! | event: "Midi Port" (65313) 0x9a-0x9c (2)
0x090| 01 70 | .p | port: 112 0x9c-0x9e (2)
| | | [12]{}: Tempo 0x9e-0xa5 (7)
| | | time{}: 0x9e-0x9f (1)
0x090| 00 | . | delta: 0 0x9e-0x9f (1)
| | | tick: 0
0x090| ff| .| event: "tempo" (65361) 0x9f-0xa1 (2)
0x090| ff| .| event: "Tempo" (65361) 0x9f-0xa1 (2)
0x0a0|51 |Q |
0x0a0| 03 07 a1 20 | ... | tempo: 500000 0xa1-0xa5 (4)
| | | [13]{}: SMPTEOffset 0xa5-0xae (9)
| | | time{}: 0xa5-0xa6 (1)
0x0a0| 00 | . | delta: 0 0xa5-0xa6 (1)
| | | tick: 0
0x0a0| ff 54 | .T | event: "smpte offset" (65364) 0xa6-0xa8 (2)
0x0a0| ff 54 | .T | event: "Smpte Offset" (65364) 0xa6-0xa8 (2)
| | | offset{}: 0xa8-0xae (6)
0x0a0| 05 4d 2d 3b 07 27 | .M-;.' | bytes: "[77 45 59 7 39]" 0xa8-0xae (6)
| | | framerate: 25 (1) 0xae-0xae (0)
@ -115,7 +115,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xae-0xaf (1)
0x0a0| 00 | . | delta: 0 0xae-0xaf (1)
| | | tick: 0
0x0a0| ff| .| event: "time signature" (65368) 0xaf-0xb1 (2)
0x0a0| ff| .| event: "Time Signature" (65368) 0xaf-0xb1 (2)
0x0b0|58 |X |
| | | signature{}: 0xb1-0xb6 (5)
0x0b0| 04 04 02 18 08 | ..... | bytes: "[4 2 24 8]" 0xb1-0xb6 (5)
@ -127,13 +127,13 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xb6-0xb7 (1)
0x0b0| 00 | . | delta: 0 0xb6-0xb7 (1)
| | | tick: 0
0x0b0| ff 59 | .Y | event: "key signature" (65369) 0xb7-0xb9 (2)
0x0b0| ff 59 | .Y | event: "Key Signature" (65369) 0xb7-0xb9 (2)
0x0b0| 02 00 01 | ... | key: "A minor" (1) 0xb9-0xbc (3)
| | | [16]{}: SequencerSpecific 0xbc-0xc6 (10)
| | | time{}: 0xbc-0xbd (1)
0x0b0| 00 | . | delta: 0 0xbc-0xbd (1)
| | | tick: 0
0x0b0| ff 7f | .. | event: "sequencer specific event" (65407) 0xbd-0xbf (2)
0x0b0| ff 7f | .. | event: "Sequencer Specific Event" (65407) 0xbd-0xbf (2)
| | | info{}: 0xbf-0xc6 (7)
0x0b0| 06| .| bytes: "[0 0 59 58 76 94]" 0xbf-0xc6 (7)
0x0c0|00 00 3b 3a 4c 5e |..;:L^ |
@ -143,7 +143,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xc6-0xc8 (2)
0x0c0| 83 60 | .` | delta: 480 0xc6-0xc8 (2)
| | | tick: 0
| | | event: "note off" (128)
| | | event: "Note Off" (128)
0x0c0| 80 | . | channel: 0 0xc8-0xc9 (1)
0x0c0| 30 | 0 | note: "C3" (48) 0xc9-0xca (1)
0x0c0| 40 | @ | velocity: 64 0xca-0xcb (1)
@ -151,7 +151,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xcb-0xcc (1)
0x0c0| 00 | . | delta: 0 0xcb-0xcc (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0c0| 90 | . | channel: 0 0xcc-0xcd (1)
0x0c0| 30 | 0 | note: "C3" (48) 0xcd-0xce (1)
0x0c0| 48 | H | velocity: 72 0xce-0xcf (1)
@ -159,7 +159,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xcf-0xd0 (1)
0x0c0| 00| .| delta: 0 0xcf-0xd0 (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0d0|92 |. | channel: 2 0xd0-0xd1 (1)
0x0d0| 31 | 1 | note: "C♯3/D♭3" (49) 0xd1-0xd2 (1)
0x0d0| 48 | H | velocity: 72 0xd2-0xd3 (1)
@ -167,7 +167,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xd3-0xd4 (1)
0x0d0| 00 | . | delta: 0 0xd3-0xd4 (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
| | | channel: 2 0xd4-0xd4 (0)
0x0d0| 30 | 0 | note: "C3" (48) 0xd4-0xd5 (1)
0x0d0| 64 | d | velocity: 100 0xd5-0xd6 (1)
@ -175,14 +175,14 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xd6-0xd7 (1)
0x0d0| 00 | . | delta: 0 0xd6-0xd7 (1)
| | | tick: 480
| | | event: "polyphonic pressure" (160)
| | | event: "Polyphonic Pressure" (160)
0x0d0| a0 | . | channel: 0 0xd7-0xd8 (1)
0x0d0| 64 | d | pressure: 100 0xd8-0xd9 (1)
| | | [22]{}: Controller 0xd9-0xdd (4)
| | | time{}: 0xd9-0xda (1)
0x0d0| 00 | . | delta: 0 0xd9-0xda (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0d0| b0 | . | channel: 0 0xda-0xdb (1)
0x0d0| 00 | . | controller: "Bank Select (MSB)" (0) 0xdb-0xdc (1)
0x0d0| 05 | . | value: 5 0xdc-0xdd (1)
@ -190,7 +190,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xdd-0xde (1)
0x0d0| 00 | . | delta: 0 0xdd-0xde (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0d0| b0 | . | channel: 0 0xde-0xdf (1)
0x0d0| 20| | controller: "Bank Select (LSB)" (32) 0xdf-0xe0 (1)
0x0e0|21 |! | value: 33 0xe0-0xe1 (1)
@ -198,7 +198,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xe1-0xe2 (1)
0x0e0| 00 | . | delta: 0 0xe1-0xe2 (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0e0| b0 | . | channel: 0 0xe2-0xe3 (1)
0x0e0| 65 | e | controller: "Registered Parameter Number (MSB)" (101) 0xe3-0xe4 (1)
0x0e0| 00 | . | value: 0 0xe4-0xe5 (1)
@ -206,28 +206,28 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xe5-0xe6 (1)
0x0e0| 00 | . | delta: 0 0xe5-0xe6 (1)
| | | tick: 480
| | | event: "program change" (192)
| | | event: "Program Change" (192)
0x0e0| c0 | . | channel: 0 0xe6-0xe7 (1)
0x0e0| 19 | . | program: 25 0xe7-0xe8 (1)
| | | [26]{}: ChannelPressure 0xe8-0xeb (3)
| | | time{}: 0xe8-0xe9 (1)
0x0e0| 00 | . | delta: 0 0xe8-0xe9 (1)
| | | tick: 480
| | | event: "channel pressure" (208)
| | | event: "Channel Pressure" (208)
0x0e0| d0 | . | channel: 0 0xe9-0xea (1)
0x0e0| 07 | . | pressure: 7 0xea-0xeb (1)
| | | [27]{}: PitchBend 0xeb-0xf0 (5)
| | | time{}: 0xeb-0xed (2)
0x0e0| 81 70 | .p | delta: 240 0xeb-0xed (2)
| | | tick: 480
| | | event: "pitch bend" (224)
| | | event: "Pitch Bend" (224)
0x0e0| e0 | . | channel: 0 0xed-0xee (1)
0x0e0| 00 08| ..| bend: 8 0xee-0xf0 (2)
| | | [28]{}: SysExMessage 0xf0-0xf8 (8)
| | | time{}: 0xf0-0xf1 (1)
0x0f0|00 |. | delta: 0 0xf0-0xf1 (1)
| | | tick: 720
0x0f0| f0 | . | event: "sysex message" (240) 0xf1-0xf2 (1)
0x0f0| f0 | . | event: "Sysex Message" (240) 0xf1-0xf2 (1)
0x0f0| 05 7e 00 09 01 f7 | .~.... | bytes: "[126 0 9 1 247]" 0xf2-0xf8 (6)
| | | manufacturer: "Non-RealTime Extensions" ("7E")
| | | data: "[0 9 1]"
@ -235,7 +235,7 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xf8-0xf9 (1)
0x0f0| 00 | . | delta: 0 0xf8-0xf9 (1)
| | | tick: 720
0x0f0| f0 | . | event: "sysex message" (240) 0xf9-0xfa (1)
0x0f0| f0 | . | event: "Sysex Message" (240) 0xf9-0xfa (1)
0x0f0| 03 43 12 00 | .C.. | bytes: "[67 18 0]" 0xfa-0xfe (4)
| | | manufacturer: "Yamaha" ("43")
| | | data: "[18 0]"
@ -244,26 +244,26 @@ $ fq -d midi dv format-0.mid
| | | time{}: 0xfe-0x100 (2)
0x0f0| 81 48| .H| delta: 200 0xfe-0x100 (2)
| | | tick: 720
0x100|f7 |. | event: "sysex continuation" (33015) 0x100-0x101 (1)
0x100|f7 |. | event: "Sysex Continuation" (33015) 0x100-0x101 (1)
0x100| 06 43 12 00 43 12 00 | .C..C.. | bytes: "[67 18 0 67 18 0]" 0x101-0x108 (7)
0x100| 06 43 12 00 43 12 00 | .C..C.. | data: "[67 18 0 67 18 0]" 0x101-0x108 (7)
| | | [31]{}: SysExContinuation 0x108-0x10f (7)
| | | time{}: 0x108-0x109 (1)
0x100| 64 | d | delta: 100 0x108-0x109 (1)
| | | tick: 920
0x100| f7 | . | event: "sysex continuation" (33015) 0x109-0x10a (1)
0x100| f7 | . | event: "Sysex Continuation" (33015) 0x109-0x10a (1)
0x100| 04 43 12 00 f7 | .C... | bytes: "[67 18 0 247]" 0x10a-0x10f (5)
0x100| 04 43 12 00 f7 | .C... | data: "[67 18 0]" 0x10a-0x10f (5)
| | | [32]{}: SysExEscape 0x10f-0x114 (5)
| | | time{}: 0x10f-0x110 (1)
0x100| 00| .| delta: 0 0x10f-0x110 (1)
| | | tick: 1020
0x110|f7 |. | event: "sysex escape" (247) 0x110-0x111 (1)
0x110|f7 |. | event: "Sysex Escape" (247) 0x110-0x111 (1)
0x110| 02 f3 01 | ... | bytes: "[243 1]" 0x111-0x114 (3)
0x110| 02 f3 01 | ... | data: "[243 1]" 0x111-0x114 (3)
| | | [33]{}: EndOfTrack 0x114-0x118 (4)
| | | time{}: 0x114-0x115 (1)
0x110| 00 | . | delta: 0 0x114-0x115 (1)
| | | tick: 1020
0x110| ff 2f | ./ | event: "end of track" (65327) 0x115-0x117 (2)
0x110| ff 2f | ./ | event: "End Of Track" (65327) 0x115-0x117 (2)
0x110| 00| | .| | length: 0 0x117-0x118 (1)

View File

@ -17,20 +17,20 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x16-0x17 (1)
0x010| 00 | . | delta: 0 0x16-0x17 (1)
| | | tick: 0
0x010| ff 03 | .. | event: "track name" (65283) 0x17-0x19 (2)
0x010| ff 03 | .. | event: "Track Name" (65283) 0x17-0x19 (2)
0x010| 08 46 6f 72 6d 61 74| .Format| name: "Format 1" 0x19-0x22 (9)
0x020|20 31 | 1 |
| | | [1]{}: Tempo 0x22-0x29 (7)
| | | time{}: 0x22-0x23 (1)
0x020| 00 | . | delta: 0 0x22-0x23 (1)
| | | tick: 0
0x020| ff 51 | .Q | event: "tempo" (65361) 0x23-0x25 (2)
0x020| ff 51 | .Q | event: "Tempo" (65361) 0x23-0x25 (2)
0x020| 03 07 a1 20 | ... | tempo: 500000 0x25-0x29 (4)
| | | [2]{}: TimeSignature 0x29-0x31 (8)
| | | time{}: 0x29-0x2a (1)
0x020| 00 | . | delta: 0 0x29-0x2a (1)
| | | tick: 0
0x020| ff 58 | .X | event: "time signature" (65368) 0x2a-0x2c (2)
0x020| ff 58 | .X | event: "Time Signature" (65368) 0x2a-0x2c (2)
| | | signature{}: 0x2c-0x31 (5)
0x020| 04 04 02 18| ....| bytes: "[4 2 24 8]" 0x2c-0x31 (5)
0x030|08 |. |
@ -42,7 +42,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x31-0x32 (1)
0x030| 00 | . | delta: 0 0x31-0x32 (1)
| | | tick: 0
0x030| ff 2f | ./ | event: "end of track" (65327) 0x32-0x34 (2)
0x030| ff 2f | ./ | event: "End Of Track" (65327) 0x32-0x34 (2)
0x030| 00 | . | length: 0 0x34-0x35 (1)
| | | [1]{}: track 0x35-0x137 (258)
0x030| 4d 54 72 6b | MTrk | tag: "MTrk" 0x35-0x39 (4)
@ -52,85 +52,85 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x3d-0x3e (1)
0x030| 00 | . | delta: 0 0x3d-0x3e (1)
| | | tick: 0
0x030| ff 00| ..| event: "sequence umber" (65280) 0x3e-0x40 (2)
0x030| ff 00| ..| event: "Sequence Number" (65280) 0x3e-0x40 (2)
0x040|02 00 17 |... | sequenceNumber: 23 0x40-0x43 (3)
| | | [1]{}: Text 0x43-0x54 (17)
| | | time{}: 0x43-0x44 (1)
0x040| 00 | . | delta: 0 0x43-0x44 (1)
| | | tick: 0
0x040| ff 01 | .. | event: "text" (65281) 0x44-0x46 (2)
0x040| ff 01 | .. | event: "Text" (65281) 0x44-0x46 (2)
0x040| 0d 54 68 69 73 20 61 6e 64 20| .This and | text: "This and That" 0x46-0x54 (14)
0x050|54 68 61 74 |That |
| | | [2]{}: Copyright 0x54-0x5c (8)
| | | time{}: 0x54-0x55 (1)
0x050| 00 | . | delta: 0 0x54-0x55 (1)
| | | tick: 0
0x050| ff 02 | .. | event: "copyright" (65282) 0x55-0x57 (2)
0x050| ff 02 | .. | event: "Copyright" (65282) 0x55-0x57 (2)
0x050| 04 54 68 65 6d | .Them | copyright: "Them" 0x57-0x5c (5)
| | | [3]{}: TrackName 0x5c-0x6f (19)
| | | time{}: 0x5c-0x5d (1)
0x050| 00 | . | delta: 0 0x5c-0x5d (1)
| | | tick: 0
0x050| ff 03 | .. | event: "track name" (65283) 0x5d-0x5f (2)
0x050| ff 03 | .. | event: "Track Name" (65283) 0x5d-0x5f (2)
0x050| 0f| .| name: "Acoustic Guitar" 0x5f-0x6f (16)
0x060|41 63 6f 75 73 74 69 63 20 47 75 69 74 61 72 |Acoustic Guitar |
| | | [4]{}: InstrumentName 0x6f-0x7d (14)
| | | time{}: 0x6f-0x70 (1)
0x060| 00| .| delta: 0 0x6f-0x70 (1)
| | | tick: 0
0x070|ff 04 |.. | event: "instrument name" (65284) 0x70-0x72 (2)
0x070|ff 04 |.. | event: "Instrument Name" (65284) 0x70-0x72 (2)
0x070| 0a 44 69 64 67 65 72 69 64 6f 6f | .Didgeridoo | instrument: "Didgeridoo" 0x72-0x7d (11)
| | | [5]{}: Lyric 0x7d-0x89 (12)
| | | time{}: 0x7d-0x7e (1)
0x070| 00 | . | delta: 0 0x7d-0x7e (1)
| | | tick: 0
0x070| ff 05| ..| event: "lyric" (65285) 0x7e-0x80 (2)
0x070| ff 05| ..| event: "Lyric" (65285) 0x7e-0x80 (2)
0x080|08 4c 61 2d 6c 61 2d 6c 61 |.La-la-la | lyric: "La-la-la" 0x80-0x89 (9)
| | | [6]{}: Marker 0x89-0x9c (19)
| | | time{}: 0x89-0x8a (1)
0x080| 00 | . | delta: 0 0x89-0x8a (1)
| | | tick: 0
0x080| ff 06 | .. | event: "marker" (65286) 0x8a-0x8c (2)
0x080| ff 06 | .. | event: "Marker" (65286) 0x8a-0x8c (2)
0x080| 0f 48 65 72| .Her| marker: "Here Be Dragons" 0x8c-0x9c (16)
0x090|65 20 42 65 20 44 72 61 67 6f 6e 73 |e Be Dragons |
| | | [7]{}: CuePoint 0x9c-0xac (16)
| | | time{}: 0x9c-0x9d (1)
0x090| 00 | . | delta: 0 0x9c-0x9d (1)
| | | tick: 0
0x090| ff 07 | .. | event: "cue point" (65287) 0x9d-0x9f (2)
0x090| ff 07 | .. | event: "Cue Point" (65287) 0x9d-0x9f (2)
0x090| 0c| .| cue: "More cowbell" 0x9f-0xac (13)
0x0a0|4d 6f 72 65 20 63 6f 77 62 65 6c 6c |More cowbell |
| | | [8]{}: ProgramName 0xac-0xb6 (10)
| | | time{}: 0xac-0xad (1)
0x0a0| 00 | . | delta: 0 0xac-0xad (1)
| | | tick: 0
0x0a0| ff 08 | .. | event: "program name" (65288) 0xad-0xaf (2)
0x0a0| ff 08 | .. | event: "Program Name" (65288) 0xad-0xaf (2)
0x0a0| 06| .| program: "Escape" 0xaf-0xb6 (7)
0x0b0|45 73 63 61 70 65 |Escape |
| | | [9]{}: DeviceName 0xb6-0xc2 (12)
| | | time{}: 0xb6-0xb7 (1)
0x0b0| 00 | . | delta: 0 0xb6-0xb7 (1)
| | | tick: 0
0x0b0| ff 09 | .. | event: "device name" (65289) 0xb7-0xb9 (2)
0x0b0| ff 09 | .. | event: "Device Name" (65289) 0xb7-0xb9 (2)
0x0b0| 08 54 68 65 54 68 69| .TheThi| device: "TheThing" 0xb9-0xc2 (9)
0x0c0|6e 67 |ng |
| | | [10]{}: TypeMIDIChannelPrefix 0xc2-0xc7 (5)
| | | [10]{}: MIDIChannelPrefix 0xc2-0xc7 (5)
| | | time{}: 0xc2-0xc3 (1)
0x0c0| 00 | . | delta: 0 0xc2-0xc3 (1)
| | | tick: 0
0x0c0| ff 20 | . | event: "midi channel prefix" (65312) 0xc3-0xc5 (2)
0x0c0| ff 20 | . | event: "Midi Channel Prefix" (65312) 0xc3-0xc5 (2)
0x0c0| 01 0d | .. | channel: 13 0xc5-0xc7 (2)
| | | [11]{}: TypeMIDIPort 0xc7-0xcc (5)
| | | [11]{}: MIDIPort 0xc7-0xcc (5)
| | | time{}: 0xc7-0xc8 (1)
0x0c0| 00 | . | delta: 0 0xc7-0xc8 (1)
| | | tick: 0
0x0c0| ff 21 | .! | event: "midi port" (65313) 0xc8-0xca (2)
0x0c0| ff 21 | .! | event: "Midi Port" (65313) 0xc8-0xca (2)
0x0c0| 01 70 | .p | port: 112 0xca-0xcc (2)
| | | [12]{}: SMPTEOffset 0xcc-0xd5 (9)
| | | time{}: 0xcc-0xcd (1)
0x0c0| 00 | . | delta: 0 0xcc-0xcd (1)
| | | tick: 0
0x0c0| ff 54 | .T | event: "smpte offset" (65364) 0xcd-0xcf (2)
0x0c0| ff 54 | .T | event: "Smpte Offset" (65364) 0xcd-0xcf (2)
| | | offset{}: 0xcf-0xd5 (6)
0x0c0| 05| .| bytes: "[77 45 59 7 39]" 0xcf-0xd5 (6)
0x0d0|4d 2d 3b 07 27 |M-;.' |
@ -144,13 +144,13 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xd5-0xd6 (1)
0x0d0| 00 | . | delta: 0 0xd5-0xd6 (1)
| | | tick: 0
0x0d0| ff 59 | .Y | event: "key signature" (65369) 0xd6-0xd8 (2)
0x0d0| ff 59 | .Y | event: "Key Signature" (65369) 0xd6-0xd8 (2)
0x0d0| 02 00 01 | ... | key: "A minor" (1) 0xd8-0xdb (3)
| | | [14]{}: SequencerSpecific 0xdb-0xe5 (10)
| | | time{}: 0xdb-0xdc (1)
0x0d0| 00 | . | delta: 0 0xdb-0xdc (1)
| | | tick: 0
0x0d0| ff 7f | .. | event: "sequencer specific event" (65407) 0xdc-0xde (2)
0x0d0| ff 7f | .. | event: "Sequencer Specific Event" (65407) 0xdc-0xde (2)
| | | info{}: 0xde-0xe5 (7)
0x0d0| 06 00| ..| bytes: "[0 0 59 58 76 94]" 0xde-0xe5 (7)
0x0e0|00 3b 3a 4c 5e |.;:L^ |
@ -160,7 +160,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xe5-0xe7 (2)
0x0e0| 83 60 | .` | delta: 480 0xe5-0xe7 (2)
| | | tick: 0
| | | event: "note off" (128)
| | | event: "Note Off" (128)
0x0e0| 80 | . | channel: 0 0xe7-0xe8 (1)
0x0e0| 30 | 0 | note: "C3" (48) 0xe8-0xe9 (1)
0x0e0| 40 | @ | velocity: 64 0xe9-0xea (1)
@ -168,7 +168,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xea-0xeb (1)
0x0e0| 00 | . | delta: 0 0xea-0xeb (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0e0| 90 | . | channel: 0 0xeb-0xec (1)
0x0e0| 30 | 0 | note: "C3" (48) 0xec-0xed (1)
0x0e0| 48 | H | velocity: 72 0xed-0xee (1)
@ -176,7 +176,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xee-0xef (1)
0x0e0| 00 | . | delta: 0 0xee-0xef (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0e0| 92| .| channel: 2 0xef-0xf0 (1)
0x0f0|31 |1 | note: "C♯3/D♭3" (49) 0xf0-0xf1 (1)
0x0f0| 48 | H | velocity: 72 0xf1-0xf2 (1)
@ -184,7 +184,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xf2-0xf3 (1)
0x0f0| 00 | . | delta: 0 0xf2-0xf3 (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
| | | channel: 2 0xf3-0xf3 (0)
0x0f0| 30 | 0 | note: "C3" (48) 0xf3-0xf4 (1)
0x0f0| 64 | d | velocity: 100 0xf4-0xf5 (1)
@ -192,14 +192,14 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xf5-0xf6 (1)
0x0f0| 00 | . | delta: 0 0xf5-0xf6 (1)
| | | tick: 480
| | | event: "polyphonic pressure" (160)
| | | event: "Polyphonic Pressure" (160)
0x0f0| a0 | . | channel: 0 0xf6-0xf7 (1)
0x0f0| 64 | d | pressure: 100 0xf7-0xf8 (1)
| | | [20]{}: Controller 0xf8-0xfc (4)
| | | time{}: 0xf8-0xf9 (1)
0x0f0| 00 | . | delta: 0 0xf8-0xf9 (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0f0| b0 | . | channel: 0 0xf9-0xfa (1)
0x0f0| 00 | . | controller: "Bank Select (MSB)" (0) 0xfa-0xfb (1)
0x0f0| 05 | . | value: 5 0xfb-0xfc (1)
@ -207,7 +207,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0xfc-0xfd (1)
0x0f0| 00 | . | delta: 0 0xfc-0xfd (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0f0| b0 | . | channel: 0 0xfd-0xfe (1)
0x0f0| 20 | | controller: "Bank Select (LSB)" (32) 0xfe-0xff (1)
0x0f0| 21| !| value: 33 0xff-0x100 (1)
@ -215,7 +215,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x100-0x101 (1)
0x100|00 |. | delta: 0 0x100-0x101 (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x100| b0 | . | channel: 0 0x101-0x102 (1)
0x100| 65 | e | controller: "Registered Parameter Number (MSB)" (101) 0x102-0x103 (1)
0x100| 00 | . | value: 0 0x103-0x104 (1)
@ -223,28 +223,28 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x104-0x105 (1)
0x100| 00 | . | delta: 0 0x104-0x105 (1)
| | | tick: 480
| | | event: "program change" (192)
| | | event: "Program Change" (192)
0x100| c0 | . | channel: 0 0x105-0x106 (1)
0x100| 19 | . | program: 25 0x106-0x107 (1)
| | | [24]{}: ChannelPressure 0x107-0x10a (3)
| | | time{}: 0x107-0x108 (1)
0x100| 00 | . | delta: 0 0x107-0x108 (1)
| | | tick: 480
| | | event: "channel pressure" (208)
| | | event: "Channel Pressure" (208)
0x100| d0 | . | channel: 0 0x108-0x109 (1)
0x100| 07 | . | pressure: 7 0x109-0x10a (1)
| | | [25]{}: PitchBend 0x10a-0x10f (5)
| | | time{}: 0x10a-0x10c (2)
0x100| 81 70 | .p | delta: 240 0x10a-0x10c (2)
| | | tick: 480
| | | event: "pitch bend" (224)
| | | event: "Pitch Bend" (224)
0x100| e0 | . | channel: 0 0x10c-0x10d (1)
0x100| 00 08 | .. | bend: 8 0x10d-0x10f (2)
| | | [26]{}: SysExMessage 0x10f-0x117 (8)
| | | time{}: 0x10f-0x110 (1)
0x100| 00| .| delta: 0 0x10f-0x110 (1)
| | | tick: 720
0x110|f0 |. | event: "sysex message" (240) 0x110-0x111 (1)
0x110|f0 |. | event: "Sysex Message" (240) 0x110-0x111 (1)
0x110| 05 7e 00 09 01 f7 | .~.... | bytes: "[126 0 9 1 247]" 0x111-0x117 (6)
| | | manufacturer: "Non-RealTime Extensions" ("7E")
| | | data: "[0 9 1]"
@ -252,7 +252,7 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x117-0x118 (1)
0x110| 00 | . | delta: 0 0x117-0x118 (1)
| | | tick: 720
0x110| f0 | . | event: "sysex message" (240) 0x118-0x119 (1)
0x110| f0 | . | event: "Sysex Message" (240) 0x118-0x119 (1)
0x110| 03 43 12 00 | .C.. | bytes: "[67 18 0]" 0x119-0x11d (4)
| | | manufacturer: "Yamaha" ("43")
| | | data: "[18 0]"
@ -261,26 +261,26 @@ $ fq -d midi dv format-1.mid
| | | time{}: 0x11d-0x11f (2)
0x110| 81 48 | .H | delta: 200 0x11d-0x11f (2)
| | | tick: 720
0x110| f7| .| event: "sysex continuation" (33015) 0x11f-0x120 (1)
0x110| f7| .| event: "Sysex Continuation" (33015) 0x11f-0x120 (1)
0x120|06 43 12 00 43 12 00 |.C..C.. | bytes: "[67 18 0 67 18 0]" 0x120-0x127 (7)
0x120|06 43 12 00 43 12 00 |.C..C.. | data: "[67 18 0 67 18 0]" 0x120-0x127 (7)
| | | [29]{}: SysExContinuation 0x127-0x12e (7)
| | | time{}: 0x127-0x128 (1)
0x120| 64 | d | delta: 100 0x127-0x128 (1)
| | | tick: 920
0x120| f7 | . | event: "sysex continuation" (33015) 0x128-0x129 (1)
0x120| f7 | . | event: "Sysex Continuation" (33015) 0x128-0x129 (1)
0x120| 04 43 12 00 f7 | .C... | bytes: "[67 18 0 247]" 0x129-0x12e (5)
0x120| 04 43 12 00 f7 | .C... | data: "[67 18 0]" 0x129-0x12e (5)
| | | [30]{}: SysExEscape 0x12e-0x133 (5)
| | | time{}: 0x12e-0x12f (1)
0x120| 00 | . | delta: 0 0x12e-0x12f (1)
| | | tick: 1020
0x120| f7| .| event: "sysex escape" (247) 0x12f-0x130 (1)
0x120| f7| .| event: "Sysex Escape" (247) 0x12f-0x130 (1)
0x130|02 f3 01 |... | bytes: "[243 1]" 0x130-0x133 (3)
0x130|02 f3 01 |... | data: "[243 1]" 0x130-0x133 (3)
| | | [31]{}: EndOfTrack 0x133-0x137 (4)
| | | time{}: 0x133-0x134 (1)
0x130| 00 | . | delta: 0 0x133-0x134 (1)
| | | tick: 1020
0x130| ff 2f | ./ | event: "end of track" (65327) 0x134-0x136 (2)
0x130| ff 2f | ./ | event: "End Of Track" (65327) 0x134-0x136 (2)
0x130| 00| | .| | length: 0 0x136-0x137 (1)

View File

@ -17,89 +17,89 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x16-0x17 (1)
0x010| 00 | . | delta: 0 0x16-0x17 (1)
| | | tick: 0
0x010| ff 00 | .. | event: "sequence umber" (65280) 0x17-0x19 (2)
0x010| ff 00 | .. | event: "Sequence Number" (65280) 0x17-0x19 (2)
0x010| 02 00 17 | ... | sequenceNumber: 23 0x19-0x1c (3)
| | | [1]{}: Text 0x1c-0x2d (17)
| | | time{}: 0x1c-0x1d (1)
0x010| 00 | . | delta: 0 0x1c-0x1d (1)
| | | tick: 0
0x010| ff 01 | .. | event: "text" (65281) 0x1d-0x1f (2)
0x010| ff 01 | .. | event: "Text" (65281) 0x1d-0x1f (2)
0x010| 0d| .| text: "This and That" 0x1f-0x2d (14)
0x020|54 68 69 73 20 61 6e 64 20 54 68 61 74 |This and That |
| | | [2]{}: Copyright 0x2d-0x35 (8)
| | | time{}: 0x2d-0x2e (1)
0x020| 00 | . | delta: 0 0x2d-0x2e (1)
| | | tick: 0
0x020| ff 02| ..| event: "copyright" (65282) 0x2e-0x30 (2)
0x020| ff 02| ..| event: "Copyright" (65282) 0x2e-0x30 (2)
0x030|04 54 68 65 6d |.Them | copyright: "Them" 0x30-0x35 (5)
| | | [3]{}: TrackName 0x35-0x43 (14)
| | | time{}: 0x35-0x36 (1)
0x030| 00 | . | delta: 0 0x35-0x36 (1)
| | | tick: 0
0x030| ff 03 | .. | event: "track name" (65283) 0x36-0x38 (2)
0x030| ff 03 | .. | event: "Track Name" (65283) 0x36-0x38 (2)
0x030| 0a 4c 65 66 74 20 54 72| .Left Tr| name: "Left Track" 0x38-0x43 (11)
0x040|61 63 6b |ack |
| | | [4]{}: InstrumentName 0x43-0x51 (14)
| | | time{}: 0x43-0x44 (1)
0x040| 00 | . | delta: 0 0x43-0x44 (1)
| | | tick: 0
0x040| ff 04 | .. | event: "instrument name" (65284) 0x44-0x46 (2)
0x040| ff 04 | .. | event: "Instrument Name" (65284) 0x44-0x46 (2)
0x040| 0a 44 69 64 67 65 72 69 64 6f| .Didgerido| instrument: "Didgeridoo" 0x46-0x51 (11)
0x050|6f |o |
| | | [5]{}: Lyric 0x51-0x5d (12)
| | | time{}: 0x51-0x52 (1)
0x050| 00 | . | delta: 0 0x51-0x52 (1)
| | | tick: 0
0x050| ff 05 | .. | event: "lyric" (65285) 0x52-0x54 (2)
0x050| ff 05 | .. | event: "Lyric" (65285) 0x52-0x54 (2)
0x050| 08 4c 61 2d 6c 61 2d 6c 61 | .La-la-la | lyric: "La-la-la" 0x54-0x5d (9)
| | | [6]{}: Marker 0x5d-0x70 (19)
| | | time{}: 0x5d-0x5e (1)
0x050| 00 | . | delta: 0 0x5d-0x5e (1)
| | | tick: 0
0x050| ff 06| ..| event: "marker" (65286) 0x5e-0x60 (2)
0x050| ff 06| ..| event: "Marker" (65286) 0x5e-0x60 (2)
0x060|0f 48 65 72 65 20 42 65 20 44 72 61 67 6f 6e 73|.Here Be Dragons| marker: "Here Be Dragons" 0x60-0x70 (16)
| | | [7]{}: CuePoint 0x70-0x80 (16)
| | | time{}: 0x70-0x71 (1)
0x070|00 |. | delta: 0 0x70-0x71 (1)
| | | tick: 0
0x070| ff 07 | .. | event: "cue point" (65287) 0x71-0x73 (2)
0x070| ff 07 | .. | event: "Cue Point" (65287) 0x71-0x73 (2)
0x070| 0c 4d 6f 72 65 20 63 6f 77 62 65 6c 6c| .More cowbell| cue: "More cowbell" 0x73-0x80 (13)
| | | [8]{}: ProgramName 0x80-0x8a (10)
| | | time{}: 0x80-0x81 (1)
0x080|00 |. | delta: 0 0x80-0x81 (1)
| | | tick: 0
0x080| ff 08 | .. | event: "program name" (65288) 0x81-0x83 (2)
0x080| ff 08 | .. | event: "Program Name" (65288) 0x81-0x83 (2)
0x080| 06 45 73 63 61 70 65 | .Escape | program: "Escape" 0x83-0x8a (7)
| | | [9]{}: DeviceName 0x8a-0x96 (12)
| | | time{}: 0x8a-0x8b (1)
0x080| 00 | . | delta: 0 0x8a-0x8b (1)
| | | tick: 0
0x080| ff 09 | .. | event: "device name" (65289) 0x8b-0x8d (2)
0x080| ff 09 | .. | event: "Device Name" (65289) 0x8b-0x8d (2)
0x080| 08 54 68| .Th| device: "TheThing" 0x8d-0x96 (9)
0x090|65 54 68 69 6e 67 |eThing |
| | | [10]{}: TypeMIDIChannelPrefix 0x96-0x9b (5)
| | | [10]{}: MIDIChannelPrefix 0x96-0x9b (5)
| | | time{}: 0x96-0x97 (1)
0x090| 00 | . | delta: 0 0x96-0x97 (1)
| | | tick: 0
0x090| ff 20 | . | event: "midi channel prefix" (65312) 0x97-0x99 (2)
0x090| ff 20 | . | event: "Midi Channel Prefix" (65312) 0x97-0x99 (2)
0x090| 01 0d | .. | channel: 13 0x99-0x9b (2)
| | | [11]{}: TypeMIDIPort 0x9b-0xa0 (5)
| | | [11]{}: MIDIPort 0x9b-0xa0 (5)
| | | time{}: 0x9b-0x9c (1)
0x090| 00 | . | delta: 0 0x9b-0x9c (1)
| | | tick: 0
0x090| ff 21 | .! | event: "midi port" (65313) 0x9c-0x9e (2)
0x090| ff 21 | .! | event: "Midi Port" (65313) 0x9c-0x9e (2)
0x090| 01 70| .p| port: 112 0x9e-0xa0 (2)
| | | [12]{}: Tempo 0xa0-0xa7 (7)
| | | time{}: 0xa0-0xa1 (1)
0x0a0|00 |. | delta: 0 0xa0-0xa1 (1)
| | | tick: 0
0x0a0| ff 51 | .Q | event: "tempo" (65361) 0xa1-0xa3 (2)
0x0a0| ff 51 | .Q | event: "Tempo" (65361) 0xa1-0xa3 (2)
0x0a0| 03 07 a1 20 | ... | tempo: 500000 0xa3-0xa7 (4)
| | | [13]{}: SMPTEOffset 0xa7-0xb0 (9)
| | | time{}: 0xa7-0xa8 (1)
0x0a0| 00 | . | delta: 0 0xa7-0xa8 (1)
| | | tick: 0
0x0a0| ff 54 | .T | event: "smpte offset" (65364) 0xa8-0xaa (2)
0x0a0| ff 54 | .T | event: "Smpte Offset" (65364) 0xa8-0xaa (2)
| | | offset{}: 0xaa-0xb0 (6)
0x0a0| 05 4d 2d 3b 07 27| .M-;.'| bytes: "[77 45 59 7 39]" 0xaa-0xb0 (6)
| | | framerate: 25 (1) 0xb0-0xb0 (0)
@ -112,7 +112,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xb0-0xb1 (1)
0x0b0|00 |. | delta: 0 0xb0-0xb1 (1)
| | | tick: 0
0x0b0| ff 58 | .X | event: "time signature" (65368) 0xb1-0xb3 (2)
0x0b0| ff 58 | .X | event: "Time Signature" (65368) 0xb1-0xb3 (2)
| | | signature{}: 0xb3-0xb8 (5)
0x0b0| 04 04 02 18 08 | ..... | bytes: "[4 2 24 8]" 0xb3-0xb8 (5)
| | | numerator: 4
@ -123,13 +123,13 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xb8-0xb9 (1)
0x0b0| 00 | . | delta: 0 0xb8-0xb9 (1)
| | | tick: 0
0x0b0| ff 59 | .Y | event: "key signature" (65369) 0xb9-0xbb (2)
0x0b0| ff 59 | .Y | event: "Key Signature" (65369) 0xb9-0xbb (2)
0x0b0| 02 00 01 | ... | key: "A minor" (1) 0xbb-0xbe (3)
| | | [16]{}: SequencerSpecific 0xbe-0xc8 (10)
| | | time{}: 0xbe-0xbf (1)
0x0b0| 00 | . | delta: 0 0xbe-0xbf (1)
| | | tick: 0
0x0b0| ff| .| event: "sequencer specific event" (65407) 0xbf-0xc1 (2)
0x0b0| ff| .| event: "Sequencer Specific Event" (65407) 0xbf-0xc1 (2)
0x0c0|7f |. |
| | | info{}: 0xc1-0xc8 (7)
0x0c0| 06 00 00 3b 3a 4c 5e | ...;:L^ | bytes: "[0 0 59 58 76 94]" 0xc1-0xc8 (7)
@ -139,7 +139,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xc8-0xca (2)
0x0c0| 83 60 | .` | delta: 480 0xc8-0xca (2)
| | | tick: 0
| | | event: "note off" (128)
| | | event: "Note Off" (128)
0x0c0| 80 | . | channel: 0 0xca-0xcb (1)
0x0c0| 30 | 0 | note: "C3" (48) 0xcb-0xcc (1)
0x0c0| 40 | @ | velocity: 64 0xcc-0xcd (1)
@ -147,7 +147,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xcd-0xce (1)
0x0c0| 00 | . | delta: 0 0xcd-0xce (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0c0| 90 | . | channel: 0 0xce-0xcf (1)
0x0c0| 30| 0| note: "C3" (48) 0xcf-0xd0 (1)
0x0d0|48 |H | velocity: 72 0xd0-0xd1 (1)
@ -155,7 +155,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xd1-0xd2 (1)
0x0d0| 00 | . | delta: 0 0xd1-0xd2 (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0d0| 92 | . | channel: 2 0xd2-0xd3 (1)
0x0d0| 31 | 1 | note: "C♯3/D♭3" (49) 0xd3-0xd4 (1)
0x0d0| 48 | H | velocity: 72 0xd4-0xd5 (1)
@ -163,7 +163,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xd5-0xd6 (1)
0x0d0| 00 | . | delta: 0 0xd5-0xd6 (1)
| | | tick: 480
| | | event: "note on" (144)
| | | event: "Note On" (144)
| | | channel: 2 0xd6-0xd6 (0)
0x0d0| 30 | 0 | note: "C3" (48) 0xd6-0xd7 (1)
0x0d0| 64 | d | velocity: 100 0xd7-0xd8 (1)
@ -171,14 +171,14 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xd8-0xd9 (1)
0x0d0| 00 | . | delta: 0 0xd8-0xd9 (1)
| | | tick: 480
| | | event: "polyphonic pressure" (160)
| | | event: "Polyphonic Pressure" (160)
0x0d0| a0 | . | channel: 0 0xd9-0xda (1)
0x0d0| 64 | d | pressure: 100 0xda-0xdb (1)
| | | [22]{}: Controller 0xdb-0xdf (4)
| | | time{}: 0xdb-0xdc (1)
0x0d0| 00 | . | delta: 0 0xdb-0xdc (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0d0| b0 | . | channel: 0 0xdc-0xdd (1)
0x0d0| 00 | . | controller: "Bank Select (MSB)" (0) 0xdd-0xde (1)
0x0d0| 05 | . | value: 5 0xde-0xdf (1)
@ -186,7 +186,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xdf-0xe0 (1)
0x0d0| 00| .| delta: 0 0xdf-0xe0 (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0e0|b0 |. | channel: 0 0xe0-0xe1 (1)
0x0e0| 20 | | controller: "Bank Select (LSB)" (32) 0xe1-0xe2 (1)
0x0e0| 21 | ! | value: 33 0xe2-0xe3 (1)
@ -194,7 +194,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xe3-0xe4 (1)
0x0e0| 00 | . | delta: 0 0xe3-0xe4 (1)
| | | tick: 480
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0e0| b0 | . | channel: 0 0xe4-0xe5 (1)
0x0e0| 65 | e | controller: "Registered Parameter Number (MSB)" (101) 0xe5-0xe6 (1)
0x0e0| 00 | . | value: 0 0xe6-0xe7 (1)
@ -202,28 +202,28 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xe7-0xe8 (1)
0x0e0| 00 | . | delta: 0 0xe7-0xe8 (1)
| | | tick: 480
| | | event: "program change" (192)
| | | event: "Program Change" (192)
0x0e0| c0 | . | channel: 0 0xe8-0xe9 (1)
0x0e0| 19 | . | program: 25 0xe9-0xea (1)
| | | [26]{}: ChannelPressure 0xea-0xed (3)
| | | time{}: 0xea-0xeb (1)
0x0e0| 00 | . | delta: 0 0xea-0xeb (1)
| | | tick: 480
| | | event: "channel pressure" (208)
| | | event: "Channel Pressure" (208)
0x0e0| d0 | . | channel: 0 0xeb-0xec (1)
0x0e0| 07 | . | pressure: 7 0xec-0xed (1)
| | | [27]{}: PitchBend 0xed-0xf2 (5)
| | | time{}: 0xed-0xef (2)
0x0e0| 81 70 | .p | delta: 240 0xed-0xef (2)
| | | tick: 480
| | | event: "pitch bend" (224)
| | | event: "Pitch Bend" (224)
0x0e0| e0| .| channel: 0 0xef-0xf0 (1)
0x0f0|00 08 |.. | bend: 8 0xf0-0xf2 (2)
| | | [28]{}: SysExMessage 0xf2-0xfa (8)
| | | time{}: 0xf2-0xf3 (1)
0x0f0| 00 | . | delta: 0 0xf2-0xf3 (1)
| | | tick: 720
0x0f0| f0 | . | event: "sysex message" (240) 0xf3-0xf4 (1)
0x0f0| f0 | . | event: "Sysex Message" (240) 0xf3-0xf4 (1)
0x0f0| 05 7e 00 09 01 f7 | .~.... | bytes: "[126 0 9 1 247]" 0xf4-0xfa (6)
| | | manufacturer: "Non-RealTime Extensions" ("7E")
| | | data: "[0 9 1]"
@ -231,7 +231,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0xfa-0xfb (1)
0x0f0| 00 | . | delta: 0 0xfa-0xfb (1)
| | | tick: 720
0x0f0| f0 | . | event: "sysex message" (240) 0xfb-0xfc (1)
0x0f0| f0 | . | event: "Sysex Message" (240) 0xfb-0xfc (1)
0x0f0| 03 43 12 00| .C..| bytes: "[67 18 0]" 0xfc-0x100 (4)
| | | manufacturer: "Yamaha" ("43")
| | | data: "[18 0]"
@ -240,14 +240,14 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x100-0x102 (2)
0x100|81 48 |.H | delta: 200 0x100-0x102 (2)
| | | tick: 720
0x100| f7 | . | event: "sysex continuation" (33015) 0x102-0x103 (1)
0x100| f7 | . | event: "Sysex Continuation" (33015) 0x102-0x103 (1)
0x100| 06 43 12 00 43 12 00 | .C..C.. | bytes: "[67 18 0 67 18 0]" 0x103-0x10a (7)
0x100| 06 43 12 00 43 12 00 | .C..C.. | data: "[67 18 0 67 18 0]" 0x103-0x10a (7)
| | | [31]{}: SysExContinuation 0x10a-0x111 (7)
| | | time{}: 0x10a-0x10b (1)
0x100| 64 | d | delta: 100 0x10a-0x10b (1)
| | | tick: 920
0x100| f7 | . | event: "sysex continuation" (33015) 0x10b-0x10c (1)
0x100| f7 | . | event: "Sysex Continuation" (33015) 0x10b-0x10c (1)
0x100| 04 43 12 00| .C..| bytes: "[67 18 0 247]" 0x10c-0x111 (5)
0x110|f7 |. |
0x100| 04 43 12 00| .C..| data: "[67 18 0]" 0x10c-0x111 (5)
@ -256,14 +256,14 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x111-0x112 (1)
0x110| 00 | . | delta: 0 0x111-0x112 (1)
| | | tick: 1020
0x110| f7 | . | event: "sysex escape" (247) 0x112-0x113 (1)
0x110| f7 | . | event: "Sysex Escape" (247) 0x112-0x113 (1)
0x110| 02 f3 01 | ... | bytes: "[243 1]" 0x113-0x116 (3)
0x110| 02 f3 01 | ... | data: "[243 1]" 0x113-0x116 (3)
| | | [33]{}: EndOfTrack 0x116-0x11a (4)
| | | time{}: 0x116-0x117 (1)
0x110| 00 | . | delta: 0 0x116-0x117 (1)
| | | tick: 1020
0x110| ff 2f | ./ | event: "end of track" (65327) 0x117-0x119 (2)
0x110| ff 2f | ./ | event: "End Of Track" (65327) 0x117-0x119 (2)
0x110| 00 | . | length: 0 0x119-0x11a (1)
| | | [1]{}: track 0x11a-0x227 (269)
0x110| 4d 54 72 6b | MTrk | tag: "MTrk" 0x11a-0x11e (4)
@ -274,7 +274,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x122-0x123 (1)
0x120| 00 | . | delta: 0 0x122-0x123 (1)
| | | tick: 0
0x120| f0 | . | event: "sysex message" (240) 0x123-0x124 (1)
0x120| f0 | . | event: "Sysex Message" (240) 0x123-0x124 (1)
0x120| 05 7e 00 09 01 f7 | .~.... | bytes: "[126 0 9 1 247]" 0x124-0x12a (6)
| | | manufacturer: "Non-RealTime Extensions" ("7E")
| | | data: "[0 9 1]"
@ -282,7 +282,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x12a-0x12b (1)
0x120| 00 | . | delta: 0 0x12a-0x12b (1)
| | | tick: 0
0x120| f0 | . | event: "sysex message" (240) 0x12b-0x12c (1)
0x120| f0 | . | event: "Sysex Message" (240) 0x12b-0x12c (1)
0x120| 03 43 12 00| .C..| bytes: "[67 18 0]" 0x12c-0x130 (4)
| | | manufacturer: "Yamaha" ("43")
| | | data: "[18 0]"
@ -291,14 +291,14 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x130-0x132 (2)
0x130|81 48 |.H | delta: 200 0x130-0x132 (2)
| | | tick: 0
0x130| f7 | . | event: "sysex continuation" (33015) 0x132-0x133 (1)
0x130| f7 | . | event: "Sysex Continuation" (33015) 0x132-0x133 (1)
0x130| 06 43 12 00 43 12 00 | .C..C.. | bytes: "[67 18 0 67 18 0]" 0x133-0x13a (7)
0x130| 06 43 12 00 43 12 00 | .C..C.. | data: "[67 18 0 67 18 0]" 0x133-0x13a (7)
| | | [3]{}: SysExContinuation 0x13a-0x141 (7)
| | | time{}: 0x13a-0x13b (1)
0x130| 64 | d | delta: 100 0x13a-0x13b (1)
| | | tick: 200
0x130| f7 | . | event: "sysex continuation" (33015) 0x13b-0x13c (1)
0x130| f7 | . | event: "Sysex Continuation" (33015) 0x13b-0x13c (1)
0x130| 04 43 12 00| .C..| bytes: "[67 18 0 247]" 0x13c-0x141 (5)
0x140|f7 |. |
0x130| 04 43 12 00| .C..| data: "[67 18 0]" 0x13c-0x141 (5)
@ -307,35 +307,35 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x141-0x142 (1)
0x140| 00 | . | delta: 0 0x141-0x142 (1)
| | | tick: 300
0x140| f7 | . | event: "sysex escape" (247) 0x142-0x143 (1)
0x140| f7 | . | event: "Sysex Escape" (247) 0x142-0x143 (1)
0x140| 02 f3 01 | ... | bytes: "[243 1]" 0x143-0x146 (3)
0x140| 02 f3 01 | ... | data: "[243 1]" 0x143-0x146 (3)
| | | [5]{}: PitchBend 0x146-0x14b (5)
| | | time{}: 0x146-0x148 (2)
0x140| 81 70 | .p | delta: 240 0x146-0x148 (2)
| | | tick: 300
| | | event: "pitch bend" (224)
| | | event: "Pitch Bend" (224)
0x140| e0 | . | channel: 0 0x148-0x149 (1)
0x140| 00 08 | .. | bend: 8 0x149-0x14b (2)
| | | [6]{}: ChannelPressure 0x14b-0x14e (3)
| | | time{}: 0x14b-0x14c (1)
0x140| 00 | . | delta: 0 0x14b-0x14c (1)
| | | tick: 540
| | | event: "channel pressure" (208)
| | | event: "Channel Pressure" (208)
0x140| d0 | . | channel: 0 0x14c-0x14d (1)
0x140| 07 | . | pressure: 7 0x14d-0x14e (1)
| | | [7]{}: ProgramChange 0x14e-0x151 (3)
| | | time{}: 0x14e-0x14f (1)
0x140| 00 | . | delta: 0 0x14e-0x14f (1)
| | | tick: 540
| | | event: "program change" (192)
| | | event: "Program Change" (192)
0x140| c0| .| channel: 0 0x14f-0x150 (1)
0x150|19 |. | program: 25 0x150-0x151 (1)
| | | [8]{}: Controller 0x151-0x155 (4)
| | | time{}: 0x151-0x152 (1)
0x150| 00 | . | delta: 0 0x151-0x152 (1)
| | | tick: 540
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x150| b0 | . | channel: 0 0x152-0x153 (1)
0x150| 65 | e | controller: "Registered Parameter Number (MSB)" (101) 0x153-0x154 (1)
0x150| 00 | . | value: 0 0x154-0x155 (1)
@ -343,7 +343,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x155-0x156 (1)
0x150| 00 | . | delta: 0 0x155-0x156 (1)
| | | tick: 540
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x150| b0 | . | channel: 0 0x156-0x157 (1)
0x150| 20 | | controller: "Bank Select (LSB)" (32) 0x157-0x158 (1)
0x150| 21 | ! | value: 33 0x158-0x159 (1)
@ -351,7 +351,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x159-0x15a (1)
0x150| 00 | . | delta: 0 0x159-0x15a (1)
| | | tick: 540
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x150| b0 | . | channel: 0 0x15a-0x15b (1)
0x150| 00 | . | controller: "Bank Select (MSB)" (0) 0x15b-0x15c (1)
0x150| 05 | . | value: 5 0x15c-0x15d (1)
@ -359,14 +359,14 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x15d-0x15e (1)
0x150| 00 | . | delta: 0 0x15d-0x15e (1)
| | | tick: 540
| | | event: "polyphonic pressure" (160)
| | | event: "Polyphonic Pressure" (160)
0x150| a0 | . | channel: 0 0x15e-0x15f (1)
0x150| 64| d| pressure: 100 0x15f-0x160 (1)
| | | [12]{}: NoteOn 0x160-0x164 (4)
| | | time{}: 0x160-0x161 (1)
0x160|00 |. | delta: 0 0x160-0x161 (1)
| | | tick: 540
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x160| 90 | . | channel: 0 0x161-0x162 (1)
0x160| 30 | 0 | note: "C3" (48) 0x162-0x163 (1)
0x160| 48 | H | velocity: 72 0x163-0x164 (1)
@ -374,7 +374,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x164-0x165 (1)
0x160| 00 | . | delta: 0 0x164-0x165 (1)
| | | tick: 540
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x160| 92 | . | channel: 2 0x165-0x166 (1)
0x160| 31 | 1 | note: "C♯3/D♭3" (49) 0x166-0x167 (1)
0x160| 48 | H | velocity: 72 0x167-0x168 (1)
@ -382,7 +382,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x168-0x169 (1)
0x160| 00 | . | delta: 0 0x168-0x169 (1)
| | | tick: 540
| | | event: "note on" (144)
| | | event: "Note On" (144)
| | | channel: 2 0x169-0x169 (0)
0x160| 30 | 0 | note: "C3" (48) 0x169-0x16a (1)
0x160| 64 | d | velocity: 100 0x16a-0x16b (1)
@ -390,7 +390,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x16b-0x16d (2)
0x160| 83 60 | .` | delta: 480 0x16b-0x16d (2)
| | | tick: 540
| | | event: "note off" (128)
| | | event: "Note Off" (128)
0x160| 80 | . | channel: 0 0x16d-0x16e (1)
0x160| 30 | 0 | note: "C3" (48) 0x16e-0x16f (1)
0x160| 40| @| velocity: 64 0x16f-0x170 (1)
@ -398,7 +398,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x170-0x171 (1)
0x170|00 |. | delta: 0 0x170-0x171 (1)
| | | tick: 1020
0x170| ff 7f | .. | event: "sequencer specific event" (65407) 0x171-0x173 (2)
0x170| ff 7f | .. | event: "Sequencer Specific Event" (65407) 0x171-0x173 (2)
| | | info{}: 0x173-0x17a (7)
0x170| 06 00 00 3b 3a 4c 5e | ...;:L^ | bytes: "[0 0 59 58 76 94]" 0x173-0x17a (7)
| | | manufacturer: "Mark Of The Unicorn (MOTU)" ("003B")
@ -407,13 +407,13 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x17a-0x17b (1)
0x170| 00 | . | delta: 0 0x17a-0x17b (1)
| | | tick: 1020
0x170| ff 59 | .Y | event: "key signature" (65369) 0x17b-0x17d (2)
0x170| ff 59 | .Y | event: "Key Signature" (65369) 0x17b-0x17d (2)
0x170| 02 00 01| ...| key: "A minor" (1) 0x17d-0x180 (3)
| | | [18]{}: TimeSignature 0x180-0x188 (8)
| | | time{}: 0x180-0x181 (1)
0x180|00 |. | delta: 0 0x180-0x181 (1)
| | | tick: 1020
0x180| ff 58 | .X | event: "time signature" (65368) 0x181-0x183 (2)
0x180| ff 58 | .X | event: "Time Signature" (65368) 0x181-0x183 (2)
| | | signature{}: 0x183-0x188 (5)
0x180| 04 04 02 18 08 | ..... | bytes: "[4 2 24 8]" 0x183-0x188 (5)
| | | numerator: 4
@ -424,7 +424,7 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x188-0x189 (1)
0x180| 00 | . | delta: 0 0x188-0x189 (1)
| | | tick: 1020
0x180| ff 54 | .T | event: "smpte offset" (65364) 0x189-0x18b (2)
0x180| ff 54 | .T | event: "Smpte Offset" (65364) 0x189-0x18b (2)
| | | offset{}: 0x18b-0x191 (6)
0x180| 05 4d 2d 3b 07| .M-;.| bytes: "[77 45 59 7 39]" 0x18b-0x191 (6)
0x190|27 |' |
@ -438,90 +438,90 @@ $ fq -d midi dv format-2.mid
| | | time{}: 0x191-0x192 (1)
0x190| 00 | . | delta: 0 0x191-0x192 (1)
| | | tick: 1020
0x190| ff 51 | .Q | event: "tempo" (65361) 0x192-0x194 (2)
0x190| ff 51 | .Q | event: "Tempo" (65361) 0x192-0x194 (2)
0x190| 03 07 a1 20 | ... | tempo: 500000 0x194-0x198 (4)
| | | [21]{}: TypeMIDIPort 0x198-0x19d (5)
| | | [21]{}: MIDIPort 0x198-0x19d (5)
| | | time{}: 0x198-0x199 (1)
0x190| 00 | . | delta: 0 0x198-0x199 (1)
| | | tick: 1020
0x190| ff 21 | .! | event: "midi port" (65313) 0x199-0x19b (2)
0x190| ff 21 | .! | event: "Midi Port" (65313) 0x199-0x19b (2)
0x190| 01 70 | .p | port: 112 0x19b-0x19d (2)
| | | [22]{}: TypeMIDIChannelPrefix 0x19d-0x1a2 (5)
| | | [22]{}: MIDIChannelPrefix 0x19d-0x1a2 (5)
| | | time{}: 0x19d-0x19e (1)
0x190| 00 | . | delta: 0 0x19d-0x19e (1)
| | | tick: 1020
0x190| ff 20| . | event: "midi channel prefix" (65312) 0x19e-0x1a0 (2)
0x190| ff 20| . | event: "Midi Channel Prefix" (65312) 0x19e-0x1a0 (2)
0x1a0|01 0d |.. | channel: 13 0x1a0-0x1a2 (2)
| | | [23]{}: DeviceName 0x1a2-0x1ae (12)
| | | time{}: 0x1a2-0x1a3 (1)
0x1a0| 00 | . | delta: 0 0x1a2-0x1a3 (1)
| | | tick: 1020
0x1a0| ff 09 | .. | event: "device name" (65289) 0x1a3-0x1a5 (2)
0x1a0| ff 09 | .. | event: "Device Name" (65289) 0x1a3-0x1a5 (2)
0x1a0| 08 54 68 65 54 68 69 6e 67 | .TheThing | device: "TheThing" 0x1a5-0x1ae (9)
| | | [24]{}: ProgramName 0x1ae-0x1b8 (10)
| | | time{}: 0x1ae-0x1af (1)
0x1a0| 00 | . | delta: 0 0x1ae-0x1af (1)
| | | tick: 1020
0x1a0| ff| .| event: "program name" (65288) 0x1af-0x1b1 (2)
0x1a0| ff| .| event: "Program Name" (65288) 0x1af-0x1b1 (2)
0x1b0|08 |. |
0x1b0| 06 45 73 63 61 70 65 | .Escape | program: "Escape" 0x1b1-0x1b8 (7)
| | | [25]{}: CuePoint 0x1b8-0x1c8 (16)
| | | time{}: 0x1b8-0x1b9 (1)
0x1b0| 00 | . | delta: 0 0x1b8-0x1b9 (1)
| | | tick: 1020
0x1b0| ff 07 | .. | event: "cue point" (65287) 0x1b9-0x1bb (2)
0x1b0| ff 07 | .. | event: "Cue Point" (65287) 0x1b9-0x1bb (2)
0x1b0| 0c 4d 6f 72 65| .More| cue: "More cowbell" 0x1bb-0x1c8 (13)
0x1c0|20 63 6f 77 62 65 6c 6c | cowbell |
| | | [26]{}: Marker 0x1c8-0x1db (19)
| | | time{}: 0x1c8-0x1c9 (1)
0x1c0| 00 | . | delta: 0 0x1c8-0x1c9 (1)
| | | tick: 1020
0x1c0| ff 06 | .. | event: "marker" (65286) 0x1c9-0x1cb (2)
0x1c0| ff 06 | .. | event: "Marker" (65286) 0x1c9-0x1cb (2)
0x1c0| 0f 48 65 72 65| .Here| marker: "Here Be Dragons" 0x1cb-0x1db (16)
0x1d0|20 42 65 20 44 72 61 67 6f 6e 73 | Be Dragons |
| | | [27]{}: Lyric 0x1db-0x1e7 (12)
| | | time{}: 0x1db-0x1dc (1)
0x1d0| 00 | . | delta: 0 0x1db-0x1dc (1)
| | | tick: 1020
0x1d0| ff 05 | .. | event: "lyric" (65285) 0x1dc-0x1de (2)
0x1d0| ff 05 | .. | event: "Lyric" (65285) 0x1dc-0x1de (2)
0x1d0| 08 4c| .L| lyric: "La-la-la" 0x1de-0x1e7 (9)
0x1e0|61 2d 6c 61 2d 6c 61 |a-la-la |
| | | [28]{}: InstrumentName 0x1e7-0x1f5 (14)
| | | time{}: 0x1e7-0x1e8 (1)
0x1e0| 00 | . | delta: 0 0x1e7-0x1e8 (1)
| | | tick: 1020
0x1e0| ff 04 | .. | event: "instrument name" (65284) 0x1e8-0x1ea (2)
0x1e0| ff 04 | .. | event: "Instrument Name" (65284) 0x1e8-0x1ea (2)
0x1e0| 0a 44 69 64 67 65| .Didge| instrument: "Didgeridoo" 0x1ea-0x1f5 (11)
0x1f0|72 69 64 6f 6f |ridoo |
| | | [29]{}: TrackName 0x1f5-0x204 (15)
| | | time{}: 0x1f5-0x1f6 (1)
0x1f0| 00 | . | delta: 0 0x1f5-0x1f6 (1)
| | | tick: 1020
0x1f0| ff 03 | .. | event: "track name" (65283) 0x1f6-0x1f8 (2)
0x1f0| ff 03 | .. | event: "Track Name" (65283) 0x1f6-0x1f8 (2)
0x1f0| 0b 52 69 67 68 74 20 54| .Right T| name: "Right Track" 0x1f8-0x204 (12)
0x200|72 61 63 6b |rack |
| | | [30]{}: Copyright 0x204-0x20c (8)
| | | time{}: 0x204-0x205 (1)
0x200| 00 | . | delta: 0 0x204-0x205 (1)
| | | tick: 1020
0x200| ff 02 | .. | event: "copyright" (65282) 0x205-0x207 (2)
0x200| ff 02 | .. | event: "Copyright" (65282) 0x205-0x207 (2)
0x200| 04 54 68 65 6d | .Them | copyright: "Them" 0x207-0x20c (5)
| | | [31]{}: Text 0x20c-0x21d (17)
| | | time{}: 0x20c-0x20d (1)
0x200| 00 | . | delta: 0 0x20c-0x20d (1)
| | | tick: 1020
0x200| ff 01 | .. | event: "text" (65281) 0x20d-0x20f (2)
0x200| ff 01 | .. | event: "Text" (65281) 0x20d-0x20f (2)
0x200| 0d| .| text: "This and That" 0x20f-0x21d (14)
0x210|54 68 69 73 20 61 6e 64 20 54 68 61 74 |This and That |
| | | [32]{}: SequenceNumber 0x21d-0x223 (6)
| | | time{}: 0x21d-0x21e (1)
0x210| 00 | . | delta: 0 0x21d-0x21e (1)
| | | tick: 1020
0x210| ff 00| ..| event: "sequence umber" (65280) 0x21e-0x220 (2)
0x210| ff 00| ..| event: "Sequence Number" (65280) 0x21e-0x220 (2)
0x220|02 00 17 |... | sequenceNumber: 23 0x220-0x223 (3)
| | | [33]{}: EndOfTrack 0x223-0x227 (4)
| | | time{}: 0x223-0x224 (1)
0x220| 00 | . | delta: 0 0x223-0x224 (1)
| | | tick: 1020
0x220| ff 2f | ./ | event: "end of track" (65327) 0x224-0x226 (2)
0x220| ff 2f | ./ | event: "End Of Track" (65327) 0x224-0x226 (2)
0x220| 00| | .| | length: 0 0x226-0x227 (1)

View File

@ -17,212 +17,212 @@ $ ./fq -d midi d key-signatures.mid
| | | time{}:
0x010| 00 | . | delta: 0
| | | tick: 0
0x010| ff 03 | .. | event: "track name" (65283)
0x010| ff 03 | .. | event: "Track Name" (65283)
0x010| 0e 4b 65 79 20 53 69| .Key Si| name: "Key Signatures"
0x020|67 6e 61 74 75 72 65 73 |gnatures |
| | | [1]{}: KeySignature
| | | time{}:
0x020| 00 | . | delta: 0
| | | tick: 0
0x020| ff 59 | .Y | event: "key signature" (65369)
0x020| ff 59 | .Y | event: "Key Signature" (65369)
0x020| 02 00 00 | ... | key: "C major" (0)
| | | [2]{}: KeySignature
| | | time{}:
0x020| 8f 00| ..| delta: 1920
| | | tick: 0
0x030|ff 59 |.Y | event: "key signature" (65369)
0x030|ff 59 |.Y | event: "Key Signature" (65369)
0x030| 02 01 00 | ... | key: "G major" (256)
| | | [3]{}: KeySignature
| | | time{}:
0x030| 8f 00 | .. | delta: 1920
| | | tick: 1920
0x030| ff 59 | .Y | event: "key signature" (65369)
0x030| ff 59 | .Y | event: "Key Signature" (65369)
0x030| 02 02 00 | ... | key: "D major" (512)
| | | [4]{}: KeySignature
| | | time{}:
0x030| 8f 00 | .. | delta: 1920
| | | tick: 3840
0x030| ff 59| .Y| event: "key signature" (65369)
0x030| ff 59| .Y| event: "Key Signature" (65369)
0x040|02 03 00 |... | key: "A major" (768)
| | | [5]{}: KeySignature
| | | time{}:
0x040| 8f 00 | .. | delta: 1920
| | | tick: 5760
0x040| ff 59 | .Y | event: "key signature" (65369)
0x040| ff 59 | .Y | event: "Key Signature" (65369)
0x040| 02 04 00 | ... | key: "E major" (1024)
| | | [6]{}: KeySignature
| | | time{}:
0x040| 8f 00 | .. | delta: 1920
| | | tick: 7680
0x040| ff 59 | .Y | event: "key signature" (65369)
0x040| ff 59 | .Y | event: "Key Signature" (65369)
0x040| 02 05| ..| key: "B major" (1280)
0x050|00 |. |
| | | [7]{}: KeySignature
| | | time{}:
0x050| 8f 00 | .. | delta: 1920
| | | tick: 9600
0x050| ff 59 | .Y | event: "key signature" (65369)
0x050| ff 59 | .Y | event: "Key Signature" (65369)
0x050| 02 06 00 | ... | key: "F♯ major" (1536)
| | | [8]{}: KeySignature
| | | time{}:
0x050| 8f 00 | .. | delta: 1920
| | | tick: 11520
0x050| ff 59 | .Y | event: "key signature" (65369)
0x050| ff 59 | .Y | event: "Key Signature" (65369)
0x050| 02 07 00 | ... | key: "C♯ major" (1792)
| | | [9]{}: KeySignature
| | | time{}:
0x050| 8f| .| delta: 1920
0x060|00 |. |
| | | tick: 13440
0x060| ff 59 | .Y | event: "key signature" (65369)
0x060| ff 59 | .Y | event: "Key Signature" (65369)
0x060| 02 00 00 | ... | key: "C major" (0)
| | | [10]{}: KeySignature
| | | time{}:
0x060| 8f 00 | .. | delta: 1920
| | | tick: 15360
0x060| ff 59 | .Y | event: "key signature" (65369)
0x060| ff 59 | .Y | event: "Key Signature" (65369)
0x060| 02 ff 00 | ... | key: "F major" (65280)
| | | [11]{}: KeySignature
| | | time{}:
0x060| 8f 00 | .. | delta: 1920
| | | tick: 17280
0x060| ff| .| event: "key signature" (65369)
0x060| ff| .| event: "Key Signature" (65369)
0x070|59 |Y |
0x070| 02 fe 00 | ... | key: "B♭ major" (65024)
| | | [12]{}: KeySignature
| | | time{}:
0x070| 8f 00 | .. | delta: 1920
| | | tick: 19200
0x070| ff 59 | .Y | event: "key signature" (65369)
0x070| ff 59 | .Y | event: "Key Signature" (65369)
0x070| 02 fd 00 | ... | key: "E♭ major" (64768)
| | | [13]{}: KeySignature
| | | time{}:
0x070| 8f 00 | .. | delta: 1920
| | | tick: 21120
0x070| ff 59 | .Y | event: "key signature" (65369)
0x070| ff 59 | .Y | event: "Key Signature" (65369)
0x070| 02| .| key: "A♭ major" (64512)
0x080|fc 00 |.. |
| | | [14]{}: KeySignature
| | | time{}:
0x080| 8f 00 | .. | delta: 1920
| | | tick: 23040
0x080| ff 59 | .Y | event: "key signature" (65369)
0x080| ff 59 | .Y | event: "Key Signature" (65369)
0x080| 02 fb 00 | ... | key: "D♭ major" (64256)
| | | [15]{}: KeySignature
| | | time{}:
0x080| 8f 00 | .. | delta: 1920
| | | tick: 24960
0x080| ff 59 | .Y | event: "key signature" (65369)
0x080| ff 59 | .Y | event: "Key Signature" (65369)
0x080| 02 fa 00| ...| key: "G♭ major" (64000)
| | | [16]{}: KeySignature
| | | time{}:
0x090|8f 00 |.. | delta: 1920
| | | tick: 26880
0x090| ff 59 | .Y | event: "key signature" (65369)
0x090| ff 59 | .Y | event: "Key Signature" (65369)
0x090| 02 f9 00 | ... | key: "C♭ major" (63744)
| | | [17]{}: KeySignature
| | | time{}:
0x090| 8f 00 | .. | delta: 1920
| | | tick: 28800
0x090| ff 59 | .Y | event: "key signature" (65369)
0x090| ff 59 | .Y | event: "Key Signature" (65369)
0x090| 02 00 01 | ... | key: "A minor" (1)
| | | [18]{}: KeySignature
| | | time{}:
0x090| 8f 00| ..| delta: 1920
| | | tick: 30720
0x0a0|ff 59 |.Y | event: "key signature" (65369)
0x0a0|ff 59 |.Y | event: "Key Signature" (65369)
0x0a0| 02 01 01 | ... | key: "E minor" (257)
| | | [19]{}: KeySignature
| | | time{}:
0x0a0| 8f 00 | .. | delta: 1920
| | | tick: 32640
0x0a0| ff 59 | .Y | event: "key signature" (65369)
0x0a0| ff 59 | .Y | event: "Key Signature" (65369)
0x0a0| 02 02 01 | ... | key: "B minor" (513)
| | | [20]{}: KeySignature
| | | time{}:
0x0a0| 8f 00 | .. | delta: 1920
| | | tick: 34560
0x0a0| ff 59| .Y| event: "key signature" (65369)
0x0a0| ff 59| .Y| event: "Key Signature" (65369)
0x0b0|02 03 01 |... | key: "F♯ minor" (769)
| | | [21]{}: KeySignature
| | | time{}:
0x0b0| 8f 00 | .. | delta: 1920
| | | tick: 36480
0x0b0| ff 59 | .Y | event: "key signature" (65369)
0x0b0| ff 59 | .Y | event: "Key Signature" (65369)
0x0b0| 02 04 01 | ... | key: "C♯ minor" (1025)
| | | [22]{}: KeySignature
| | | time{}:
0x0b0| 8f 00 | .. | delta: 1920
| | | tick: 38400
0x0b0| ff 59 | .Y | event: "key signature" (65369)
0x0b0| ff 59 | .Y | event: "Key Signature" (65369)
0x0b0| 02 05| ..| key: "G♯ minor" (1281)
0x0c0|01 |. |
| | | [23]{}: KeySignature
| | | time{}:
0x0c0| 8f 00 | .. | delta: 1920
| | | tick: 40320
0x0c0| ff 59 | .Y | event: "key signature" (65369)
0x0c0| ff 59 | .Y | event: "Key Signature" (65369)
0x0c0| 02 06 01 | ... | key: "D♯ minor" (1537)
| | | [24]{}: KeySignature
| | | time{}:
0x0c0| 8f 00 | .. | delta: 1920
| | | tick: 42240
0x0c0| ff 59 | .Y | event: "key signature" (65369)
0x0c0| ff 59 | .Y | event: "Key Signature" (65369)
0x0c0| 02 07 01 | ... | key: "A♯ minor" (1793)
| | | [25]{}: KeySignature
| | | time{}:
0x0c0| 8f| .| delta: 1920
0x0d0|00 |. |
| | | tick: 44160
0x0d0| ff 59 | .Y | event: "key signature" (65369)
0x0d0| ff 59 | .Y | event: "Key Signature" (65369)
0x0d0| 02 00 01 | ... | key: "A minor" (1)
| | | [26]{}: KeySignature
| | | time{}:
0x0d0| 8f 00 | .. | delta: 1920
| | | tick: 46080
0x0d0| ff 59 | .Y | event: "key signature" (65369)
0x0d0| ff 59 | .Y | event: "Key Signature" (65369)
0x0d0| 02 ff 01 | ... | key: "D minor" (65281)
| | | [27]{}: KeySignature
| | | time{}:
0x0d0| 9e 00 | .. | delta: 3840
| | | tick: 48000
0x0d0| ff| .| event: "key signature" (65369)
0x0d0| ff| .| event: "Key Signature" (65369)
0x0e0|59 |Y |
0x0e0| 02 fe 01 | ... | key: "G minor" (65025)
| | | [28]{}: KeySignature
| | | time{}:
0x0e0| 8f 00 | .. | delta: 1920
| | | tick: 51840
0x0e0| ff 59 | .Y | event: "key signature" (65369)
0x0e0| ff 59 | .Y | event: "Key Signature" (65369)
0x0e0| 02 fd 01 | ... | key: "C minor" (64769)
| | | [29]{}: KeySignature
| | | time{}:
0x0e0| 8f 00 | .. | delta: 1920
| | | tick: 53760
0x0e0| ff 59 | .Y | event: "key signature" (65369)
0x0e0| ff 59 | .Y | event: "Key Signature" (65369)
0x0e0| 02| .| key: "F minor" (64513)
0x0f0|fc 01 |.. |
| | | [30]{}: KeySignature
| | | time{}:
0x0f0| 8f 00 | .. | delta: 1920
| | | tick: 55680
0x0f0| ff 59 | .Y | event: "key signature" (65369)
0x0f0| ff 59 | .Y | event: "Key Signature" (65369)
0x0f0| 02 fb 01 | ... | key: "B♭ minor" (64257)
| | | [31]{}: KeySignature
| | | time{}:
0x0f0| 8f 00 | .. | delta: 1920
| | | tick: 57600
0x0f0| ff 59 | .Y | event: "key signature" (65369)
0x0f0| ff 59 | .Y | event: "Key Signature" (65369)
0x0f0| 02 fa 01| ...| key: "E♭ minor" (64001)
| | | [32]{}: KeySignature
| | | time{}:
0x100|8f 00 |.. | delta: 1920
| | | tick: 59520
0x100| ff 59 | .Y | event: "key signature" (65369)
0x100| ff 59 | .Y | event: "Key Signature" (65369)
0x100| 02 f9 01 | ... | key: "A♭ minor" (63745)
| | | [33]{}: EndOfTrack
| | | time{}:
0x100| 00 | . | delta: 0
| | | tick: 61440
0x100| ff 2f | ./ | event: "end of track" (65327)
0x100| ff 2f | ./ | event: "End Of Track" (65327)
0x100| 00| | .| | length: 0

View File

@ -1 +1,3 @@
$ fq -d midi '.. | select(.event=="Tempo")?.tempo' test.mid
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
0x20| 03 07 a1 20 | ... |.tracks[0].events[1].tempo: 500000

View File

@ -17,20 +17,20 @@ $ fq -d midi dv test.mid
| | | time{}: 0x16-0x17 (1)
0x010| 00 | . | delta: 0 0x16-0x17 (1)
| | | tick: 0
0x010| ff 03 | .. | event: "track name" (65283) 0x17-0x19 (2)
0x010| ff 03 | .. | event: "Track Name" (65283) 0x17-0x19 (2)
0x010| 0b 52 65 66 65 72 65| .Refere| name: "Reference-1" 0x19-0x25 (12)
0x020|6e 63 65 2d 31 |nce-1 |
| | | [1]{}: Tempo 0x25-0x2c (7)
| | | time{}: 0x25-0x26 (1)
0x020| 00 | . | delta: 0 0x25-0x26 (1)
| | | tick: 0
0x020| ff 51 | .Q | event: "tempo" (65361) 0x26-0x28 (2)
0x020| ff 51 | .Q | event: "Tempo" (65361) 0x26-0x28 (2)
0x020| 03 07 a1 20 | ... | tempo: 500000 0x28-0x2c (4)
| | | [2]{}: TimeSignature 0x2c-0x34 (8)
| | | time{}: 0x2c-0x2d (1)
0x020| 00 | . | delta: 0 0x2c-0x2d (1)
| | | tick: 0
0x020| ff 58 | .X | event: "time signature" (65368) 0x2d-0x2f (2)
0x020| ff 58 | .X | event: "Time Signature" (65368) 0x2d-0x2f (2)
| | | signature{}: 0x2f-0x34 (5)
0x020| 04| .| bytes: "[4 2 24 8]" 0x2f-0x34 (5)
0x030|04 02 18 08 |.... |
@ -42,7 +42,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x34-0x35 (1)
0x030| 00 | . | delta: 0 0x34-0x35 (1)
| | | tick: 0
0x030| ff 54 | .T | event: "smpte offset" (65364) 0x35-0x37 (2)
0x030| ff 54 | .T | event: "Smpte Offset" (65364) 0x35-0x37 (2)
| | | offset{}: 0x37-0x3d (6)
0x030| 05 4d 2d 3b 07 27 | .M-;.' | bytes: "[77 45 59 7 39]" 0x37-0x3d (6)
| | | framerate: 25 (1) 0x3d-0x3d (0)
@ -55,7 +55,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x3d-0x3e (1)
0x030| 00 | . | delta: 0 0x3d-0x3e (1)
| | | tick: 0
0x030| ff 2f| ./| event: "end of track" (65327) 0x3e-0x40 (2)
0x030| ff 2f| ./| event: "End Of Track" (65327) 0x3e-0x40 (2)
0x040|00 |. | length: 0 0x40-0x41 (1)
| | | [1]{}: track 0x41-0x13a (249)
0x040| 4d 54 72 6b | MTrk | tag: "MTrk" 0x41-0x45 (4)
@ -65,92 +65,92 @@ $ fq -d midi dv test.mid
| | | time{}: 0x49-0x4a (1)
0x040| 00 | . | delta: 0 0x49-0x4a (1)
| | | tick: 0
0x040| ff 00 | .. | event: "sequence umber" (65280) 0x4a-0x4c (2)
0x040| ff 00 | .. | event: "Sequence Number" (65280) 0x4a-0x4c (2)
0x040| 02 00 17 | ... | sequenceNumber: 23 0x4c-0x4f (3)
| | | [1]{}: Text 0x4f-0x60 (17)
| | | time{}: 0x4f-0x50 (1)
0x040| 00| .| delta: 0 0x4f-0x50 (1)
| | | tick: 0
0x050|ff 01 |.. | event: "text" (65281) 0x50-0x52 (2)
0x050|ff 01 |.. | event: "Text" (65281) 0x50-0x52 (2)
0x050| 0d 54 68 69 73 20 61 6e 64 20 54 68 61 74| .This and That| text: "This and That" 0x52-0x60 (14)
| | | [2]{}: Copyright 0x60-0x68 (8)
| | | time{}: 0x60-0x61 (1)
0x060|00 |. | delta: 0 0x60-0x61 (1)
| | | tick: 0
0x060| ff 02 | .. | event: "copyright" (65282) 0x61-0x63 (2)
0x060| ff 02 | .. | event: "Copyright" (65282) 0x61-0x63 (2)
0x060| 04 54 68 65 6d | .Them | copyright: "Them" 0x63-0x68 (5)
| | | [3]{}: TrackName 0x68-0x7b (19)
| | | time{}: 0x68-0x69 (1)
0x060| 00 | . | delta: 0 0x68-0x69 (1)
| | | tick: 0
0x060| ff 03 | .. | event: "track name" (65283) 0x69-0x6b (2)
0x060| ff 03 | .. | event: "Track Name" (65283) 0x69-0x6b (2)
0x060| 0f 41 63 6f 75| .Acou| name: "Acoustic Guitar" 0x6b-0x7b (16)
0x070|73 74 69 63 20 47 75 69 74 61 72 |stic Guitar |
| | | [4]{}: InstrumentName 0x7b-0x89 (14)
| | | time{}: 0x7b-0x7c (1)
0x070| 00 | . | delta: 0 0x7b-0x7c (1)
| | | tick: 0
0x070| ff 04 | .. | event: "instrument name" (65284) 0x7c-0x7e (2)
0x070| ff 04 | .. | event: "Instrument Name" (65284) 0x7c-0x7e (2)
0x070| 0a 44| .D| instrument: "Didgeridoo" 0x7e-0x89 (11)
0x080|69 64 67 65 72 69 64 6f 6f |idgeridoo |
| | | [5]{}: Lyric 0x89-0x95 (12)
| | | time{}: 0x89-0x8a (1)
0x080| 00 | . | delta: 0 0x89-0x8a (1)
| | | tick: 0
0x080| ff 05 | .. | event: "lyric" (65285) 0x8a-0x8c (2)
0x080| ff 05 | .. | event: "Lyric" (65285) 0x8a-0x8c (2)
0x080| 08 4c 61 2d| .La-| lyric: "La-la-la" 0x8c-0x95 (9)
0x090|6c 61 2d 6c 61 |la-la |
| | | [6]{}: Marker 0x95-0xa8 (19)
| | | time{}: 0x95-0x96 (1)
0x090| 00 | . | delta: 0 0x95-0x96 (1)
| | | tick: 0
0x090| ff 06 | .. | event: "marker" (65286) 0x96-0x98 (2)
0x090| ff 06 | .. | event: "Marker" (65286) 0x96-0x98 (2)
0x090| 0f 48 65 72 65 20 42 65| .Here Be| marker: "Here Be Dragons" 0x98-0xa8 (16)
0x0a0|20 44 72 61 67 6f 6e 73 | Dragons |
| | | [7]{}: CuePoint 0xa8-0xb8 (16)
| | | time{}: 0xa8-0xa9 (1)
0x0a0| 00 | . | delta: 0 0xa8-0xa9 (1)
| | | tick: 0
0x0a0| ff 07 | .. | event: "cue point" (65287) 0xa9-0xab (2)
0x0a0| ff 07 | .. | event: "Cue Point" (65287) 0xa9-0xab (2)
0x0a0| 0c 4d 6f 72 65| .More| cue: "More cowbell" 0xab-0xb8 (13)
0x0b0|20 63 6f 77 62 65 6c 6c | cowbell |
| | | [8]{}: ProgramName 0xb8-0xc2 (10)
| | | time{}: 0xb8-0xb9 (1)
0x0b0| 00 | . | delta: 0 0xb8-0xb9 (1)
| | | tick: 0
0x0b0| ff 08 | .. | event: "program name" (65288) 0xb9-0xbb (2)
0x0b0| ff 08 | .. | event: "Program Name" (65288) 0xb9-0xbb (2)
0x0b0| 06 45 73 63 61| .Esca| program: "Escape" 0xbb-0xc2 (7)
0x0c0|70 65 |pe |
| | | [9]{}: DeviceName 0xc2-0xce (12)
| | | time{}: 0xc2-0xc3 (1)
0x0c0| 00 | . | delta: 0 0xc2-0xc3 (1)
| | | tick: 0
0x0c0| ff 09 | .. | event: "device name" (65289) 0xc3-0xc5 (2)
0x0c0| ff 09 | .. | event: "Device Name" (65289) 0xc3-0xc5 (2)
0x0c0| 08 54 68 65 54 68 69 6e 67 | .TheThing | device: "TheThing" 0xc5-0xce (9)
| | | [10]{}: TypeMIDIChannelPrefix 0xce-0xd3 (5)
| | | [10]{}: MIDIChannelPrefix 0xce-0xd3 (5)
| | | time{}: 0xce-0xcf (1)
0x0c0| 00 | . | delta: 0 0xce-0xcf (1)
| | | tick: 0
0x0c0| ff| .| event: "midi channel prefix" (65312) 0xcf-0xd1 (2)
0x0c0| ff| .| event: "Midi Channel Prefix" (65312) 0xcf-0xd1 (2)
0x0d0|20 | |
0x0d0| 01 0d | .. | channel: 13 0xd1-0xd3 (2)
| | | [11]{}: TypeMIDIPort 0xd3-0xd8 (5)
| | | [11]{}: MIDIPort 0xd3-0xd8 (5)
| | | time{}: 0xd3-0xd4 (1)
0x0d0| 00 | . | delta: 0 0xd3-0xd4 (1)
| | | tick: 0
0x0d0| ff 21 | .! | event: "midi port" (65313) 0xd4-0xd6 (2)
0x0d0| ff 21 | .! | event: "Midi Port" (65313) 0xd4-0xd6 (2)
0x0d0| 01 70 | .p | port: 112 0xd6-0xd8 (2)
| | | [12]{}: KeySignature 0xd8-0xde (6)
| | | time{}: 0xd8-0xd9 (1)
0x0d0| 00 | . | delta: 0 0xd8-0xd9 (1)
| | | tick: 0
0x0d0| ff 59 | .Y | event: "key signature" (65369) 0xd9-0xdb (2)
0x0d0| ff 59 | .Y | event: "Key Signature" (65369) 0xd9-0xdb (2)
0x0d0| 02 00 01 | ... | key: "A minor" (1) 0xdb-0xde (3)
| | | [13]{}: SequencerSpecific 0xde-0xe8 (10)
| | | time{}: 0xde-0xdf (1)
0x0d0| 00 | . | delta: 0 0xde-0xdf (1)
| | | tick: 0
0x0d0| ff| .| event: "sequencer specific event" (65407) 0xdf-0xe1 (2)
0x0d0| ff| .| event: "Sequencer Specific Event" (65407) 0xdf-0xe1 (2)
0x0e0|7f |. |
| | | info{}: 0xe1-0xe8 (7)
0x0e0| 06 00 00 3b 3a 4c 5e | ...;:L^ | bytes: "[0 0 59 58 76 94]" 0xe1-0xe8 (7)
@ -160,7 +160,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0xe8-0xe9 (1)
0x0e0| 00 | . | delta: 0 0xe8-0xe9 (1)
| | | tick: 0
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0e0| b0 | . | channel: 0 0xe9-0xea (1)
0x0e0| 00 | . | controller: "Bank Select (MSB)" (0) 0xea-0xeb (1)
0x0e0| 05 | . | value: 5 0xeb-0xec (1)
@ -168,7 +168,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0xec-0xed (1)
0x0e0| 00 | . | delta: 0 0xec-0xed (1)
| | | tick: 0
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0e0| b0 | . | channel: 0 0xed-0xee (1)
0x0e0| 20 | | controller: "Bank Select (LSB)" (32) 0xee-0xef (1)
0x0e0| 21| !| value: 33 0xef-0xf0 (1)
@ -176,14 +176,14 @@ $ fq -d midi dv test.mid
| | | time{}: 0xf0-0xf1 (1)
0x0f0|00 |. | delta: 0 0xf0-0xf1 (1)
| | | tick: 0
| | | event: "program change" (192)
| | | event: "Program Change" (192)
0x0f0| c0 | . | channel: 0 0xf1-0xf2 (1)
0x0f0| 19 | . | program: 25 0xf2-0xf3 (1)
| | | [17]{}: Controller 0xf3-0xf7 (4)
| | | time{}: 0xf3-0xf4 (1)
0x0f0| 00 | . | delta: 0 0xf3-0xf4 (1)
| | | tick: 0
| | | event: "controller" (176)
| | | event: "Controller" (176)
0x0f0| b0 | . | channel: 0 0xf4-0xf5 (1)
0x0f0| 65 | e | controller: "Registered Parameter Number (MSB)" (101) 0xf5-0xf6 (1)
0x0f0| 00 | . | value: 0 0xf6-0xf7 (1)
@ -191,21 +191,21 @@ $ fq -d midi dv test.mid
| | | time{}: 0xf7-0xf8 (1)
0x0f0| 00 | . | delta: 0 0xf7-0xf8 (1)
| | | tick: 0
| | | event: "polyphonic pressure" (160)
| | | event: "Polyphonic Pressure" (160)
0x0f0| a0 | . | channel: 0 0xf8-0xf9 (1)
0x0f0| 64 | d | pressure: 100 0xf9-0xfa (1)
| | | [19]{}: ChannelPressure 0xfa-0xfd (3)
| | | time{}: 0xfa-0xfb (1)
0x0f0| 00 | . | delta: 0 0xfa-0xfb (1)
| | | tick: 0
| | | event: "channel pressure" (208)
| | | event: "Channel Pressure" (208)
0x0f0| d0 | . | channel: 0 0xfb-0xfc (1)
0x0f0| 07 | . | pressure: 7 0xfc-0xfd (1)
| | | [20]{}: NoteOn 0xfd-0x101 (4)
| | | time{}: 0xfd-0xfe (1)
0x0f0| 00 | . | delta: 0 0xfd-0xfe (1)
| | | tick: 0
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x0f0| 90 | . | channel: 0 0xfe-0xff (1)
0x0f0| 30| 0| note: "C3" (48) 0xff-0x100 (1)
0x100|48 |H | velocity: 72 0x100-0x101 (1)
@ -213,7 +213,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x101-0x102 (1)
0x100| 00 | . | delta: 0 0x101-0x102 (1)
| | | tick: 0
| | | event: "note on" (144)
| | | event: "Note On" (144)
0x100| 92 | . | channel: 2 0x102-0x103 (1)
0x100| 31 | 1 | note: "C♯3/D♭3" (49) 0x103-0x104 (1)
0x100| 48 | H | velocity: 72 0x104-0x105 (1)
@ -221,7 +221,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x105-0x106 (1)
0x100| 00 | . | delta: 0 0x105-0x106 (1)
| | | tick: 0
| | | event: "note on" (144)
| | | event: "Note On" (144)
| | | channel: 2 0x106-0x106 (0)
0x100| 30 | 0 | note: "C3" (48) 0x106-0x107 (1)
0x100| 64 | d | velocity: 100 0x107-0x108 (1)
@ -229,14 +229,14 @@ $ fq -d midi dv test.mid
| | | time{}: 0x108-0x10a (2)
0x100| 81 70 | .p | delta: 240 0x108-0x10a (2)
| | | tick: 0
| | | event: "pitch bend" (224)
| | | event: "Pitch Bend" (224)
0x100| e0 | . | channel: 0 0x10a-0x10b (1)
0x100| 00 08 | .. | bend: 8 0x10b-0x10d (2)
| | | [24]{}: NoteOff 0x10d-0x112 (5)
| | | time{}: 0x10d-0x10f (2)
0x100| 83 60 | .` | delta: 480 0x10d-0x10f (2)
| | | tick: 240
| | | event: "note off" (128)
| | | event: "Note Off" (128)
0x100| 80| .| channel: 0 0x10f-0x110 (1)
0x110|30 |0 | note: "C3" (48) 0x110-0x111 (1)
0x110| 40 | @ | velocity: 64 0x111-0x112 (1)
@ -244,7 +244,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x112-0x113 (1)
0x110| 00 | . | delta: 0 0x112-0x113 (1)
| | | tick: 720
0x110| f0 | . | event: "sysex message" (240) 0x113-0x114 (1)
0x110| f0 | . | event: "Sysex Message" (240) 0x113-0x114 (1)
0x110| 05 7e 00 09 01 f7 | .~.... | bytes: "[126 0 9 1 247]" 0x114-0x11a (6)
| | | manufacturer: "Non-RealTime Extensions" ("7E")
| | | data: "[0 9 1]"
@ -252,7 +252,7 @@ $ fq -d midi dv test.mid
| | | time{}: 0x11a-0x11b (1)
0x110| 00 | . | delta: 0 0x11a-0x11b (1)
| | | tick: 720
0x110| f0 | . | event: "sysex message" (240) 0x11b-0x11c (1)
0x110| f0 | . | event: "Sysex Message" (240) 0x11b-0x11c (1)
0x110| 03 43 12 00| .C..| bytes: "[67 18 0]" 0x11c-0x120 (4)
| | | manufacturer: "Yamaha" ("43")
| | | data: "[18 0]"
@ -261,14 +261,14 @@ $ fq -d midi dv test.mid
| | | time{}: 0x120-0x122 (2)
0x120|81 48 |.H | delta: 200 0x120-0x122 (2)
| | | tick: 720
0x120| f7 | . | event: "sysex continuation" (33015) 0x122-0x123 (1)
0x120| f7 | . | event: "Sysex Continuation" (33015) 0x122-0x123 (1)
0x120| 06 43 12 00 43 12 00 | .C..C.. | bytes: "[67 18 0 67 18 0]" 0x123-0x12a (7)
0x120| 06 43 12 00 43 12 00 | .C..C.. | data: "[67 18 0 67 18 0]" 0x123-0x12a (7)
| | | [28]{}: SysExContinuation 0x12a-0x131 (7)
| | | time{}: 0x12a-0x12b (1)
0x120| 64 | d | delta: 100 0x12a-0x12b (1)
| | | tick: 920
0x120| f7 | . | event: "sysex continuation" (33015) 0x12b-0x12c (1)
0x120| f7 | . | event: "Sysex Continuation" (33015) 0x12b-0x12c (1)
0x120| 04 43 12 00| .C..| bytes: "[67 18 0 247]" 0x12c-0x131 (5)
0x130|f7 |. |
0x120| 04 43 12 00| .C..| data: "[67 18 0]" 0x12c-0x131 (5)
@ -277,12 +277,12 @@ $ fq -d midi dv test.mid
| | | time{}: 0x131-0x132 (1)
0x130| 00 | . | delta: 0 0x131-0x132 (1)
| | | tick: 1020
0x130| f7 | . | event: "sysex escape" (247) 0x132-0x133 (1)
0x130| f7 | . | event: "Sysex Escape" (247) 0x132-0x133 (1)
0x130| 02 f3 01 | ... | bytes: "[243 1]" 0x133-0x136 (3)
0x130| 02 f3 01 | ... | data: "[243 1]" 0x133-0x136 (3)
| | | [30]{}: EndOfTrack 0x136-0x13a (4)
| | | time{}: 0x136-0x137 (1)
0x130| 00 | . | delta: 0 0x136-0x137 (1)
| | | tick: 1020
0x130| ff 2f | ./ | event: "end of track" (65327) 0x137-0x139 (2)
0x130| ff 2f | ./ | event: "End Of Track" (65327) 0x137-0x139 (2)
0x130| 00| | .| | length: 0 0x139-0x13a (1)