- Website: http://www.thbeck.de/Tak/Tak.html (German)
TAK (Tom's verlustfreier Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) is a lossless audio codec developed by Thomas Becker. As of January 2006, the codec is at the 1.0 release stage. Source code is not available.
- Alpha testing thread from hydrogenaudio.org
- Beta testing thread from hydrogenaudio.org
- 1.0 release thread from hydrogenaudio.org
- Binary download link
Integers are little-endian. 24-bit CRC is employed for checking data integrity.
TAK file consists of signature ("tBaK"), obligatory metadata and compressed audio data. APE tags may be present at the end of file.
Metadata consists of series of objects, each object has 32-bit header.
7 bits - object type 1 bit - reserved 24 bits - object size
Metadata object types:
0x00 - end of metadata 0x01 - stream info 0x02 - seektable (obsoleted in TAK 1.1.1) 0x03 - original file data 0x04 - encoder info 0x05 - padding (since 1.0.3) 0x06 - MD5 checksum (since 1.1.1) 0x07 - last frame information (since 1.1.1)
Non-empty metadata object ends with 3 bytes of object data CRC.
6 bits codec type (should be always 0) 4 bits encoder profile (= encoder preset at least for versions <= 1.1.2) frame size information (32 bits, see below) size
Frame size information
4 bits frame size index 24 bits number of samples
Possible frame sizes:
0 94 ms of audio 1 125 ms 2 188 ms 3 250 ms 4 4096 ms 5 8192 ms 6 16384 ms 7 512 ms 8 1024 ms 9 2048 ms 10 6144 ms (obsoleted in 1.1.0, invalid) 11 12288 ms (obsoleted in 1.1.0, invalid) 12-14 reserved 15 frame contains number of samples stored in next 35 bits (not supported yet)
3 bits data type (should be 0 = PCM) 18 bits sample rate - 6000 5 bits sample bits - 8 5 bits audio channels - 1
Original file data
Called "simple wave data", this contains trailer and footer from original file to allow perfect reconstruction:
0-2 trailer size 3-6 footer size trailer data footer data
24 bits encoder version (8 bits per each version component) 4 bits preset 2 bits evaluation 2 bits reserved
Last frame information
40 bits frame position relative to the beginning of audio data 24 bits frame size
TODO: header order, padding, CRC positions
16 bits syncword (0xA0FF little-endian) 1 bit last frame 1 bit frame contains information (see "information header" below) 1 bit frame contains metadata (unsupported) 21 bits frame number 14 bits sample count - 1 (only for the last frame) 2 bits padding (only for the last frame)
1 bit previous frame position is present 5 bits reserved (should be 0) 25 bits offset to the previous frame header from the end of this header (only if first bit = 1)