Skip to content

Commit

Permalink
midi: experimenting with struct metaevent data
Browse files Browse the repository at this point in the history
  • Loading branch information
twystd committed Aug 13, 2024
1 parent 8b236a1 commit 9dfcb96
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 20 deletions.
2 changes: 1 addition & 1 deletion format/midi/TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

- [ ] add to probe group
- [x] move delta into events
- [ ] somehow map VLF fields
- [ ] tests

- formats
- [ ] format 0
Expand Down
37 changes: 19 additions & 18 deletions format/midi/metaevents.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func decodeTrackName(d *decode.D) {
d.FieldUintFn("delta", vlq)
d.FieldU8("status")
d.FieldU8("event")
d.FieldStrFn("Name", func(d *decode.D) string {
d.FieldStrFn("name", func(d *decode.D) string {
return string(vlf(d))
})
}
Expand All @@ -58,27 +58,28 @@ func decodeTimeSignature(d *decode.D) {
d.FieldUintFn("delta", vlq)
d.FieldU8("status")
d.FieldU8("event")
d.FieldStruct("signature", func(d *decode.D) {
bytes := vlf(d)

bytes := vlf(d)
if len(bytes) > 0 {
d.FieldValueUint("numerator", uint64(bytes[0]))
}

if len(bytes) > 0 {
d.FieldValueUint("numerator", uint64(bytes[0]))
}
if len(bytes) > 1 {
denominator := uint16(1)
for i := uint8(0); i < bytes[1]; i++ {
denominator *= 2
}

if len(bytes) > 1 {
denominator := uint16(1)
for i := uint8(0); i < bytes[1]; i++ {
denominator *= 2
d.FieldValueUint("denominator", uint64(denominator))
}

d.FieldValueUint("denominator", uint64(denominator))
}

if len(bytes) > 2 {
d.FieldValueUint("ticksPerClick", uint64(bytes[2]))
}
if len(bytes) > 2 {
d.FieldValueUint("ticksPerClick", uint64(bytes[2]))
}

if len(bytes) > 3 {
d.FieldValueUint("thirtySecondsPerQuarter", uint64(bytes[3]))
}
if len(bytes) > 3 {
d.FieldValueUint("thirtySecondsPerQuarter", uint64(bytes[3]))
}
})
}
3 changes: 2 additions & 1 deletion format/midi/midi.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ func decodeMTrk(d *decode.D) {
d.FieldArray("events", func(d *decode.D) {
d.FramedFn(int64(length)*8, func(d *decode.D) {
for d.BitsLeft() > 0 {
d.FieldStruct("event", decodeEvent)
// d.FieldStruct("event", decodeEvent)
decodeEvent(d)
}
})
})
Expand Down

0 comments on commit 9dfcb96

Please sign in to comment.