mirror of
https://github.com/wader/fq.git
synced 2024-11-29 04:10:01 +03:00
9c7f7f961a
- Renamed 'tracks' section to 'content' (cf. https://github.com/wader/fq/pull/1004#discussion_r1746651234) - Removed 'validation only' errors (cf. https://github.com/wader/fq/pull/1004#issuecomment-2333464662) - Decoded MThd divisions field with SMPTE timecode
38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
### Notes
|
|
|
|
1. Only supports the MIDI 1.0 MIDI file specification.
|
|
2. Only supports _MThd_ and _MTrk_ chunks.
|
|
3. Does only basic validation on the MIDI data.
|
|
|
|
### Sample queries
|
|
|
|
1. Extract the track names from a MIDI file
|
|
```
|
|
fq -d midi -d midi '.. | select(.event=="track_name")? | "\(.track_name)"' midi/twinkle.mid
|
|
```
|
|
|
|
2. Extract the tempo changes from a MIDI file
|
|
```
|
|
fq -d midi '.. | select(.event=="tempo")?.tempo' midi/twinkle.mid
|
|
```
|
|
|
|
3. Extract the key changes from a MIDI file
|
|
```
|
|
fq -d midi '.. | select(.event=="key_signature")?.key_signature' midi/twinkle.mid
|
|
```
|
|
|
|
4. Extract NoteOn events:
|
|
```
|
|
fq -d midi 'grep_by(.event=="note_on") | [.time.tick, .note_on.note] | join(" ")' midi/twinkle.mid
|
|
```
|
|
|
|
### Authors
|
|
- [transcriptaze](https://github.com/transcriptaze)
|
|
|
|
### References
|
|
|
|
1. [The Complete MIDI 1.0 Detailed Specification](https://www.midi.org/specifications/item/the-midi-1-0-specification)
|
|
2. [Standard MIDI Files](https://midi.org/standard-midi-files)
|
|
3. [Standard MIDI File (SMF) Format](http://midi.teragonaudio.com/tech/midifile.htm)
|
|
4. [MIDI Files Specification](http://www.somascape.org/midi/tech/mfile.html)
|