atrac3p:serialized_tone_data
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
atrac3p:serialized_tone_data [2010/07/24 10:01] – Adjust layout of mode description to common layout megadiscman | atrac3p:serialized_tone_data [2010/08/01 13:59] – fix clone bits megadiscman | ||
---|---|---|---|
Line 61: | Line 61: | ||
In high-dynamic range mode, the level of each tone is stored on a logarithmic scale. The value between 0 and 63 can be encoded in one of four modes, the last two only being available on the slave channel (as they refer linked tones). | In high-dynamic range mode, the level of each tone is stored on a logarithmic scale. The value between 0 and 63 can be encoded in one of four modes, the last two only being available on the slave channel (as they refer linked tones). | ||
- | ==== Mode 0: direct encoding | + | ==== Encoding Modes ==== |
+ | |||
+ | === 0: direct encoding === | ||
The level of each tone in each band is encoded as a plain 6-bit number. | The level of each tone in each band is encoded as a plain 6-bit number. | ||
- | ==== Mode 1: variable-length encoding | + | === 1: variable-length encoding === |
The level of each tone in each band is stored using a variable-length code. The possible level values range between 20 and 51 in this case. | The level of each tone in each band is stored using a variable-length code. The possible level values range between 20 and 51 in this case. | ||
- | ==== Mode 2 (only in slave channel): variable-length encoded difference to master === | + | === 2 (only in slave channel): variable-length encoded difference to master === |
The level of each tone in each band is stored as variable-length-encoded difference to the level of the linked tone in the master channel, which is assumed as 34 if there is no linked tone. The difference application does not wrap. | The level of each tone in each band is stored as variable-length-encoded difference to the level of the linked tone in the master channel, which is assumed as 34 if there is no linked tone. The difference application does not wrap. | ||
- | ==== Mode 3 (only in slave channel): clone master channel data ==== | + | === 3 (only in slave channel): clone master channel data === |
The level of each tone that is linked to a master tone is copied from the master tone level, unlinked tones get a default level of 32. | The level of each tone that is linked to a master tone is copied from the master tone level, unlinked tones get a default level of 32. | ||
Line 111: | Line 113: | ||
===== Encoding ===== | ===== Encoding ===== | ||
- | ==== Tone info ==== | + | ==== Tone info header |
* 1 bit: Chooses high-dynamic-range mode if set, low-dynamic-range mode if clear | * 1 bit: Chooses high-dynamic-range mode if set, low-dynamic-range mode if clear | ||
- | * symbol from [[tone info trees#bands with tones tree]]: The number of bands tonal data is stored for. | + | * symbol from [[tone info trees#bands with tones tree]]: The number of bands tonal data is stored for minus 1 (so the symbols 0..15 mean 1..16 bands). |
* in two-channel substreams: | * in two-channel substreams: | ||
- | * 1 bit: If clear, clone information from master to slave for all bands otherwise | + | * 1 bit: If clear, |
- | * 1 bit: If clear, | + | * 1 bit: If clear, clone information from master to slave for all bands, otherwise |
* 1 bit per band with tone data: If set, clone data for this band | * 1 bit per band with tone data: If set, clone data for this band | ||
* 1 bit: If clear, master channel is the left channel for all bands | * 1 bit: If clear, master channel is the left channel for all bands | ||
Line 133: | Line 135: | ||
* per-tone data: | * per-tone data: | ||
* pitches | * pitches | ||
- | * level | + | * if in HDR mode |
+ | * tone levels (HDR) | ||
+ | * otherwise | ||
+ | * band base levels (LDR) | ||
+ | * tone levels (LDR) | ||
* phase | * phase | ||
Line 153: | Line 159: | ||
* on slave channel | * on slave channel | ||
* 2 bits: coding mode | * 2 bits: coding mode | ||
+ | * encoded tone counts (see directly below) | ||
=== Coding Mode 0: direct encoding === | === Coding Mode 0: direct encoding === | ||
Line 168: | Line 175: | ||
=== Coding Mode 3 (slave only): clone master === | === Coding Mode 3 (slave only): clone master === | ||
* no data | * no data | ||
+ | |||
+ | ==== Tone pitches ==== | ||
+ | * On slave channel only: | ||
+ | * 1 bit: coding mode (master always uses mode 0) | ||
+ | * encoded pitch info (see directly below) | ||
+ | |||
+ | === Coding mode 0: near-direct encoding === | ||
+ | * for each band that has a non-zero tone count: | ||
+ | * if the tone count is bigger than 1: | ||
+ | * 1 bit, chooses " | ||
+ | * for each tone in that band: | ||
+ | * up to ten bits: near-direct encoded pitch. In ascending mode, leading 1 bits of the current tone pitch that were already set in the previous pitch are omitted (note that the count if leading one bits is monotonically increasing). Analogously, | ||
+ | |||
+ | === Coding mode 1: difference-to-master === | ||
+ | * for each tone in each band that has a non-zero tone count: | ||
+ | * symbol from [[tone info trees#tone pitch delta tree]]. | ||
+ | |||
+ | ==== Tone levels (HDR) ==== | ||
+ | * on master channel | ||
+ | * 1 bit: coding mode | ||
+ | * on slave channel | ||
+ | * 2 bits: coding mode | ||
+ | * encoded level info (see directly below) | ||
+ | |||
+ | === Coding mode 0: direct encoding === | ||
+ | * for each tone in each band: | ||
+ | * 6 bits: binary encoded tone level | ||
+ | |||
+ | === Coding mode 1: variable-length encoding === | ||
+ | * for each tone in each band: | ||
+ | * symbol from [[tone info trees#HDR level tree]. Add 20 to the symbol number to obtain the real level. | ||
+ | |||
+ | === Coding mode 2 (slave only): variable-lenght encoded difference to master === | ||
+ | * for each tone in each band: | ||
+ | * symbol from [[tone info trees# | ||
+ | |||
+ | === Coding mode 3 (slave only): clone master === | ||
+ | * no data | ||
+ | |||
+ | ==== Band base levels (LDR) ==== | ||
+ | * on master channel | ||
+ | * 1 bit: coding mode | ||
+ | * on slave channel | ||
+ | * 2 bits: coding mode | ||
+ | * encoded level info (see directly below) | ||
+ | |||
+ | === Coding mode 0: direct encoding === | ||
+ | * for each band: | ||
+ | * 6 bits: binary encoded base level | ||
+ | |||
+ | === Coding mode 1: variable-length encoding === | ||
+ | * for each band: | ||
+ | * symbol from [[tone info trees#LDR band level tree]. Add **24** to the symbol number to obtain the real level. | ||
+ | |||
+ | === Coding mode 2 (slave only): variable-lenght encoded difference to master === | ||
+ | * for each band: | ||
+ | * symbol from [[tone info trees# | ||
+ | |||
+ | === Coding mode 3 (slave only): clone master === | ||
+ | * no data | ||
+ | |||
+ | ==== Tone levels (LDR) ==== | ||
+ | * on master channel | ||
+ | * 1 bit: coding mode | ||
+ | * on slave channel | ||
+ | * 2 bits: coding mode | ||
+ | * encoded level info (see directly below) | ||
+ | |||
+ | === Coding mode 0: direct encoding === | ||
+ | * for each tone in each band: | ||
+ | * 4 bits: binary encoded tone level | ||
+ | |||
+ | === Coding mode 1: variable-length encoding === | ||
+ | * for each band: | ||
+ | * if that band has one tone: | ||
+ | * symbol from [[tone info trees# | ||
+ | * otherwise for each tone in that band | ||
+ | * symbol from [[tone info trees#LDR level tree]. | ||
+ | |||
+ | === Coding mode 2 (slave only): variable-lenght encoded difference to master === | ||
+ | * for each tone in each band: | ||
+ | * symbol from [[tone info trees#HDR level difference tress]. Use linked tone level or 34 (if not linked) as base. | ||
+ | |||
+ | === Coding mode 3 (slave only): clone master === | ||
+ | * no data | ||
+ | |||
+ | ===== Tone phase ===== | ||
+ | * for each tone in each band: | ||
+ | * 5 bit phase value |
atrac3p/serialized_tone_data.txt · Last modified: 2010/10/25 22:28 by megadiscman