Set the EBML characteristics of the data to follow. Each EBML document has to start with this. The version of EBML parser used to create the file. The minimum EBML version a parser has to support to read this file. The maximum length of the IDs you'll find in this file (4 or less in Matroska). The maximum length of the sizes you'll find in this file (8 or less in Matroska). This does not override the element size indicated at the beginning of an element. Elements that have an indicated size which is larger than what is allowed by EBMLMaxSizeLength shall be considered invalid. A string that describes the type of document that follows this EBML header. 'mide' for Mide Instrumentation Data Exchange files. The version of DocType interpreter used to create the file. The minimum DocType version an interpreter has to support to read this file. Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is discarded. Also used to reserve space in a sub-element for later use. The CRC is computed on all the data of the Master element it's in. The CRC element should be the first in it's parent master for easier reading. All level 1 elements should include a CRC-32. The CRC in use is the IEEE CRC32 Little Endian Contain signature of some (coming) elements in the stream. Signature algorithm used (1=RSA, 2=elliptic). Hash algorithm used (1=SHA1-160, 2=MD5). The public key to use with the algorithm (in the case of a PKI-based signature). The signature of the data (until a new. Contains elements that will be used to compute the signature. A list consists of a number of consecutive elements that represent one case where data is used in signature. Ex: Cluster|Block|BlockAdditional means that the BlockAdditional of all Blocks in all Clusters is used for encryption. An element ID whose data will be used to compute the signature. Device EBML schema (aka 'tagset') hint. Points to a numeric schema ID defined at the receiving side. Used to provide an arbitrary length sync word (for network / stream framing purposes) at any point in the stream. Arbitrary tag. Allow for separate opening and closing tags without knowing the length of the enclosed data in advance. I.e. instead of [tag len value=[subtag len... /]/], [tag len=0][subtags and contents][/tag]. Positive value corresponds to the corresponding ElementID as an opening tag; the corresponding negative value as the closing tag. Value -int_max for any int size is reserved. Master element for the RecordingProperties branch of the file, if present. Master element for the RecorderInfo items (ID, etc.). Unique Type ID assigned to each recorder variation. May be used to lookup remaining RecordingProperties when streaming. Recorder unique serial number ID referencing Schema in use by recorder Product designation of the recording device Text name of this recorder, if any. Probably set by the user. Hardware revision level Firmware revision level Device part .number. (text product identifier e.g. VR002-100-XYZ). Device .birthdate. (manufacture date) in UTC seconds since the Epoch. Custom hardware identifier. Hardware is a custom version if present. Custom firmware build. Firmware is a custom build if present. Name should match FW branch/tag name as applicable for identification purposes, but is mainly present so FW updater can generate a warning if a custom build will be replaced by a standard one. Firmware revision string. The device CPU's factory-set unique ID. Code indicating the type of CPU. Bootloader revision string. Incrementing bootloader revision level Master element for the SensorList items Master element for a Sensor entry ID of a given Sensor entry; can be used to refer back to this sensor. Text name assigned to a sensor; probably the sensor make/model if present. Reference to a BwLimitList entry. If present, this discloses the usable bandwidth range of the sensor itself. Master element for any traceability data tied to the Sensor. Sensor manufacturer-supplied serial number, if any. Master element for a Channel entry Master element for a Channel entry ID of a given Channel entry; can be used to refer to this entry. Referenced by ChannelDataBlock/SimpleChannelDataBlock/etc. Descriptive overall text name for this channel (e.g. "ADC"). Reference to a Calibration in CalibrationList. Declaration of the format and representation of the (sub)channels' data. Modeled after Python Struct format strings, may be expanded at a later date. Currently limited to the expanded format-string format, i.e. [>HHHHH] rather than [>5H]. Whitespace and undefined formatting characters are ignored. Name of the hardcoded parsing object, if known. Overrides ChannelFormat. Channel seconds/tick. String represents a valid numeric expression, such as integer, decimal or ratio, e.g. '16262/32768'. Applies to all subsequent Abs timecodes. If not set, use channel default. The modulus at which modulo timestamps for this channel roll over. The samplerate for this channel, if known and fixed. String represents a valid numeric expression, such as integer, decimal or ratio, e.g. '32768/16262'. Element required if both starting and ending timecodes will ever be omitted for blocks in this channel. Master element for SensorSubChannels. ID of this SubChannel. Currently, SubChannelIDs must be sequential, starting from 0, for use with Slam Stick Lab. Display name of the subchannel, typically the axis name for multiaxis measurements (e.g. "X", "Yaw", etc.). Typically omitted if no display name is needed beyond a measurement label and units. Reference to a Calibration in CalibrationList. Reference to a BwLimitList entry. If present, this discloses any bandwidth limitations imposed for the acquisition channel, e.g. antialias or other filter settings. Note that the effective bandwidth is the lesser of the Sensor and SubChannel bandwidth! General measurement type label for this subchannel (e.g. "Acceleration", "Rotation", "Temperature", etc.). Text name of the engineering unit (e.g. "g") for this subchannel. Unicode characters such as degree or Greek symbols are allowed and encouraged. Minimum valid sensor value; may be used for data validation or initial axis scaling during display. Maximum valid sensor value; may be used for data validation or initial axis scaling during display. Reference to a Sensor ID. Allows the association between SubChannels and a physical sensor to be expressed. Reference to a warning range, i.e. another sensor measuring something that affects the results of this one. Allow data channels to specify a visibility level; could have different visibility levels for e.g. 'advanced', 'on request' (channels which are not normally useful on their own, e.g. IRIG stream), 'hidden' (internal diagnostic or other dirty laundry). The RGB values of the default plotting color (3 bytes). Text name of the sensor output units. Reference to a numbered, standardized SI unit. Master element for the PlotList items. It works like a virtual Channel, with Plots being its Subchannels. Master element for a Plot entry SubChannelID Text name of the subchannel (e.g. axis?). Reference to a Calibration in CalibrationList. Minimum valid sensor value. Maximum valid sensor value. Reference to a warning range, i.e. another sensor measuring something that affects the results of this one Allow data channels to specify a visibility level; could have different visibility levels for e.g. 'advanced', 'on request' (channels which are not normally useful on their own, e.g. IRIG stream), 'hidden' (internal diagnostic or other dirty laundry). The RGB values of the default plotting color (3 bytes). Text name of the sensor output units. Reference to a numbered, standardized SI unit. Text name of the axis(?). Reference to an Axis. Text name of the sensor output units. Reference to a numbered, standardized SI unit. List of channels/subchannels used by this Plot SubChannelID SubChannelID "Idiot Light" warnings for sensors that are inaccurate in certain conditions Warning ID, referenced by Subchannels. ChannelID SubChannelID Minimum valid value. Note: this is in real, post-converted units, not raw channel units. Maximum valid value. Note: this is in real, post-converted units, not raw channel units. List of bandwidth constraints on sensors and data channels. These will (on a Sensor) provide the intrinsic sensor limits if known, or (on a data channel) provide information about any user-configured limits, e.g. AA filter cutoffs. This data is mandatory for sensor fusion, otherwise optional. Limit entry ID, referenced by Sensors or (Sub)channels. Lower cutoff frequency. Lower rolloff, in dB/decade. Upper cutoff frequency. Upper rolloff, in dB/decade. Group delay, in channel ticks (channels/subchannels only). Container For arbitrary name/value attributes, allowing additional data without revising (and bloating) the schema. All of these elements are level -1, allowing an AttributeList to occur at any level, but should always be used at the relative levels implied below. Attribute name. Should always be child of Atrribute. Integer Attribute. Should always be child of Atrribute. Unsigned integer Attribute. Should always be child of Atrribute. Floating point Attribute. Should always be child of Atrribute. ASCII String Attribute. Should always be child of Atrribute. Date Attribute. Should always be child of Atrribute. Binary Attribute. Should always be child of Atrribute. ASCII String Attribute. Should always be child of Atrribute. Master element for the CalibrationList items Master element for a univariate (1-variable) calibration entry ID of this entry, referenced by SensorList. Reference value for this channel Univariate or bivariate polynomial coefficient in canonical order Master element for a bivariate (2-variable) calibration entry ID of this entry, referenced by SensorList. Reference value for this channel Reference value for the 2nd channel when using bivariate calibration Channel ID of the channel to be used as the 2nd parameter for bivariate compensation SubChannel ID of the subchannel to be used as the 2nd parameter for bivariate compensation Univariate or bivariate polynomial coefficient in canonical order Date of factory calibration, in UTC seconds Date of factory calibration expiration, in UTC seconds Mide-assigned serial # for a specific (re)calibration procedure. Can be used to lookup calibration conditions and exact facility / test stand used, etc. Master element for the RecorderConfiguration block, if present. This allows a mechanism to attach the actual recorder configuration to the file as metadata, and (hacky) use the same schema document to parse output files and write configuration files. It is expected that by necessity, children of RecorderConfiguration will be recorder-specific. Master element for the SSX-specific RecorderConfiguration block. This and its subelements are specific to the basic Slam Stick X. Sampling frequency for the high speed channel(s) in Hz. Antialias filter corner frequency for the high speed channel(s) in Hz. Omit to let the device choose based on the sampling rate. Enter 0 to disable (bypass) AA filter. (Beware: diagnostic usage only; calibration will be invalid in this state.) Oversampling ratio. Allowed values are 1 or power-of-2 integer in the range from 16 to 4096. Omit to let the device choose based on the sampling rate. UTC offset in seconds. May be used for entering local timezone offset. Sign follows the normal convention for specifying timezone offsets, e.g. "UTC-5" (-5*3600) to display the local time as 5 hours earlier than UTC. This value is only used to convert the internal UTC time to local time to generate the FAT16/32 file timestamp, which is expected to be in local time (sans any DST offset, which is added by the host system). If the device clock is directly set in local time for any reason, this field should be 0. Defines device behavior in response to an unexpected plug-in (or other power/data connection) during recording. Current options are 0 (exit immediately), 1 (exit after current recording finishes - HW default), or 2 (ignore - require button presses to terminate recording mode). Master element for SSX trigger configuration. Absolute, calendar time in UTC at which to arm/start the recorder. WakeTimeUTC and PreRecordDelay are mutually exclusive. Delay in seconds before the start of recording (or trigger arming). WakeTimeUTC and PreRecordDelay are mutually exclusive. Automatically rearm at end of triggered recording (do not require button press) Time in seconds to record for when triggered. Omit to impose no limit. Master element for a generic trigger. The sensor channel used as the trigger. Mandatory for all Triggers. The sensor subchannel used by the trigger. Lower value of trigger window in native units. Upper value of trigger window in native units. Master element for channel-specific configuration elements. Channel to apply these configuration elements to. Sampling frequency for this channel in Hz, if supported by device. Unsupported rates will be coerced to nearest supported rate. Bitmap indicating enabled/disabled SubChannels, if supported by device. If only Channel-level enable/disable supported by this channel, any nonzero value will enable the entire Channel. The user-defined properties of the recorder, not used by the recorder itself. The user-defined name of the recorder The user-defined description of/notes on the recorder New configuration data: pairs of config IDs and values. Duplicated from the config_ui.xml schema, rather than attempting to parse one element with a different schema. Exported configuration data. Also contains device information and CONFIG.UI for compatibility. Actually from the CONFIG.UI schema. Read as binary in this schema, then parsed with the other one. This element contains all other top-level (level 1) elements. A session basically comprises one 'recording' and may contain any number of individual channels. A typical file should consist of one segment (mostly because we won't really know its length in advance). Session time base value in Unix Time. If present, used as the base for all future timecodes in the session. This element contains potentially-channelized instrumentation data in a minimalist format. Its mandatory, fixed-length header includes a 2-byte modulo timecode (scaled to the channel's TimecodeScale, default of 1/32768 sec) and a 1-byte integer ChannelID. This element contains child elements including instrumentation data associated to a channel. This is used for e.g. binding a timestamp(s) and/or metadata to a specific multi-sample block of sensor data, which may be written asynchronously with respect to other channels' data (i.e. multiplexed). Child of ChannelDataBlock: the channel this data is associated with Child of ChannelDataBlock: optional flags to indicate datablock features such as discontinuity Child of ChannelDataBlock: the actual channel data samples. If there are multiple subchannels, for each sample point, the sample for each subchannel will be written consecutively (i.e. [sc0 sc1 sc2] [sc0 sc1 sc2]). Absolute timecode as an offset from the session TimeBase. The timecode resolution is given by the channel's TimeCodeScale. Absolute timecode as an offset from the session TimeBase. The timecode resolution is given by the channel's TimeCodeScale. Absolute start timecode as an offset from session TimeBase, mod TimeCodeModulus. Allows for a short, rolling-over (but still absolute) code. The timecode resolution is given by the channel's TimeCodeScale. Absolute end timecode as an offset from session TimeBase, mod TimeCodeModulus. Allows for a short, rolling-over (but still absolute) code. The timecode resolution is given by the channel's TimeCodeScale. Statistical data for this block's payload consisting of 3 datapoints (min, mean, max) per subchannel. They are organized as [[sc0min] [sc1min] [sc2min] ...] [[sc0mean] [sc1mean] [sc2mean] ...] [[sc0max] [sc1max] [sc2max] ...]. The format and representation of the stat data exactly matches that of the input samples; that is, if the input samples are uint16_t, each stat entry is also a uint16_t. Super-optional diagnostic element indicating the latency between data acquisition and transfer to the output media. The exact meaning of this value is device-dependent, but may serve as a general indicator of excess activity load, retransmission or congestion (for transmission media) or media wear (for recording media).