Audio 解析ACID循环和/或REX文件以提取瞬态数据

Audio 解析ACID循环和/或REX文件以提取瞬态数据,audio,wav,caf,Audio,Wav,Caf,我正在尝试构建一个音频采样器,它接受ACID、CAF或REX文件,并可以提取它们的音高/节奏信息。我在互联网上读到这些文件将这些信息存储在元数据中,但我在任何地方都找不到一个规范来帮助我检测和提取这些数据以及提取底层音频文件。有人知道这类东西的工作规范或参考实现吗 作为比较,苹果公司在他们的开发者网站上发布了他们的参考,但我找不到类似的ACID/REX文档 谢谢 ** The acid chunk goes a little something like this: ** ** 4 bytes

我正在尝试构建一个音频采样器,它接受ACID、CAF或REX文件,并可以提取它们的音高/节奏信息。我在互联网上读到这些文件将这些信息存储在元数据中,但我在任何地方都找不到一个规范来帮助我检测和提取这些数据以及提取底层音频文件。有人知道这类东西的工作规范或参考实现吗

作为比较,苹果公司在他们的开发者网站上发布了他们的参考,但我找不到类似的ACID/REX文档

谢谢

** The acid chunk goes a little something like this:
**
** 4 bytes          'acid'
** 4 bytes (int)     length of chunk starting at next byte
**
** 4 bytes (int)     type of file:
**        this appears to be a bit mask,however some combinations
**        are probably impossible and/or qualified as "errors"
**
**        0x01 On: One Shot         Off: Loop
**        0x02 On: Root note is Set Off: No root
**        0x04 On: Stretch is On,   Off: Strech is OFF
**        0x08 On: Disk Based       Off: Ram based
**        0x10 On: ??????????       Off: ????????? (Acidizer puts that ON)
**
** 2 bytes (short)      root note
**        if type 0x10 is OFF : [C,C#,(...),B] -> [0x30 to 0x3B]
**        if type 0x10 is ON  : [C,C#,(...),B] -> [0x3C to 0x47]
**         (both types fit on same MIDI pitch albeit different octaves, so who cares)
**
** 2 bytes (short)      ??? always set to 0x8000
** 4 bytes (float)      ??? seems to be always 0
** 4 bytes (int)        number of beats
** 2 bytes (short)      meter denominator   //always 4 in SF/ACID
** 2 bytes (short)      meter numerator     //always 4 in SF/ACID
**                      //are we sure about the order?? usually its num/denom
** 4 bytes (float)      tempo
**