doompanning/external/wildmidi-0.4.5/docs/formats/XmiFileFormat.txt
oxmox a191a82bdc Squashed 'src/dp_doom/' content from commit 1909924
git-subtree-dir: src/dp_doom
git-subtree-split: 190992421c7c643afc99d7f7c511c162f65bea85
2023-02-19 01:52:56 +01:00

87 lines
2.6 KiB
Text

XMI File Format
(Incomplete - Under Construction)
Document version 1
Authored by Chris Ison chrisisonwildcode@gmail.com
Last Edited 24 May 2014
Copyright (C) 2014 WildMidi Developers
This document is licensed under the
Creative Commons Attribution-ShareAlike 4.0 International License.
To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/
Introduction
This document describes the XMI format as used by the WildMIDI project.
It is not a complete description of the XMI file format and only those
parts that have been decyphered and are relevant to the WildMidi project
are described here. Unfortunately we cannot answer questions about the
format that are not described within this document. If you feel there
is an error in this document please feel free to report it as a bug at
https://github.com/Mindwerks/wildmidi/issues/
Description
// FORM DATA
{
uint8_t text[4] = "FORM";
uint32_t size_of_data_before_chunks;
uint8_t text[8] = "XDIRINFO";
uint8_t unknown[4] = { 0x00, 0x00, 0x00, 0x02 };
uint8_t form_count;
uint8_t unknown_data[size_of_data_before_chunks - 13]
uint8_t text[4] = "CAT ";
uint32_t size_of_CAT;
uint8_t text[4] = "XMID";
{
// XMID Chunks
uint8_t text[4] = "FORM";
uint32_t size_of_form;
uint8_t text[4] = "XMID";
{
{
uint8_t text[4] = "TIMB";
uint32_t TIMB_size;
uint8_t TIMB_data[TIMB_size] = { 8bit patch, 8bit bank, ... }
}
// OR
{
uint8_t text[4] = "RBRN"
uint32_t RBRN_size;
uint8_t unknown[RBRN_size];
}
// OR
{
uint8_t text[4] = "EVNT"
uint32_t EVNT_size;
uint8_t MIDI_data[EVNT_size] {
// All events and delta values stored as with standard MIDI,
// EXCEPT for there is no "Note Off" and "Note On" extra data
// after the velocity that states the length of the note
// in delta ticks stored in MIDI variable length format.
// ALSO NOTE that only the first TEMPO event is used,
// all others are ignored.
// Example Note on may be stored like
// uint8_t event_data[] = { 0x90, 0x24, 0x64, 0xA3 }
// uint8_t delta_ticks[] = { 0xA3 }
// uint8_t event_data[] = { 0x90, 0x48, 0x64, 0x23, 0xA3 }
// See the MIDI file format for more information
...
}
}
...
}
}
}