NB: The selection dialog is a
bit different from the standard Windows dialogs. The treeview does not
show plus symbols, which can usually be clicked to show directories
located within the parent folder. Here you have to perform a
double click on the directory name to open it.
Enable this option to overwrite already existing TAK files; otherwise they
will be skipped. You will not be asked for a confirmation!
TAK can save information about the compression process in the protocol
file "Tak_Enco_Proto.txt", which will be created in the output
directory.
Level
What should be stored into the protocol file:
- Off: Don't generate a protocol file.
- Result: Save a copy of the screen output.
- Result & Diagnostics: Save results and settings.
Not supported in public releases.
Append
Append new protocol data to an existing protocol file, instead of overwriting it.
File management
Decompression creates files with the same name as the source and the extension
'.wav':
Sample.tak -> Sample.wav
By default existing files will not be overwritten.
Quick tour
- Use "Add files" to select the files to decompress. This
does not work cumulatively; further selections will replace the previous
selection.
- "Decompress" starts the decompression process. "Stop" cancels
the process. Use "Test" to decompress the files without creating
any output - useful if you just want to check file integrity.
Warnings and errors
If there are any problems with a file you will see a short message following the
file name:
Message |
Description |
Invalid Stream-ID |
The Stream-ID (indicating that this is a TAK file) at the beginning of the
file is damaged, but everything else is intact.
|
Stream info damaged |
The stream info meta data is damaged, but everything else is intact.
|
Meta data damaged |
One or more of the meta data structures are damaged, but the audio data
is intact.
|
Stream structure damaged |
The stream part containing the audio data had errors, but the audio
data itself is intact.
|
Frame(s) damaged |
At least one audio data frame is damaged.
|
Undecodable |
Too many errors. The file cannot be decoded (it possibly isn't a TAK-file).
Occasionally it is worth trying again, with the Restore wave file meta
data-option disabled.
|
Audio format not supported |
The file has been created with a newer encoder, which is able to handle
more audio formats than the decoder you are using.
|
Incompatible version |
The file has been created with a newer encoder, which uses compression
methods not supported by the decoder you are using.
|
Error reading source |
A source I/O error occurred.
|
Error writing destination |
A destination I/O error occurred.
|
Already exists |
The destination file already exists and you have not specified the
Overwrite option.
|
Options
The Options dialog gives you access to a few decoder options.

Destination
Where should the decompressed files be stored:
- in the same directory as the source files or
- in a user-specified directory. After selecting this option you
can press Browse to select the directory.
NB: The selection dialog is a
bit different from the standard Windows dialogs. The treeview does not
show plus symbols, which can usually be clicked to show directories
located within the parent folder. Here you have to perform a
double click on the directory name to open it.
!!! Overwrite existing wave files !!!
Enable this option to overwrite already existing wave files; otherwise they
will be skipped. You will not be asked for a confirmation!
Restore wave file meta data
Enable this option to write the non-audio meta data of the original wave file
into the decompressed file.
This only works if the compressed file has been created with the encoder option
"Save wave file meta data" enabled, and the meta data was not
larger than 1 MByte.
Check Md5
Enable this option if you want TAK to calculate a MD5
checksum of the decoded audio data and compare it with the one stored in the
compressed file.
This only works if the compressed file has been created with the encoder option
"Add Md5" enabled.
Depending on the preset, the calculation may result in a noticable slow
down of the decoding process.
Error handling
How should errors caused by damaged files be handled?
Important: You will sometimes have to disable the
"Restore wave file meta data" option to decode a damaged file!
Files
Select Skip, if you don't want to decompress damaged files. If you
select Recover TAK will attempt to recover as much of the audio data
as possible.
Frames
Specify what should be done if the decompressor finds a damaged block of audio
data within the file:
- Skip the damaged data. Nothing is inserted between the
previous and the next intact audio data frames. This is likely to
generate a clicking sound when playing.
- Mute replaces the damaged data with a frame of silence.
Save error log
If enabled, an error log is saved to the file
"Tak_Deco_Error.txt".
Protocol
TAK can save information about the decompression process in the protocol
file "Tak_Deco_Proto.txt", which will be created in the output
directory.
Level
What should be stored into the protocol file:
- Off: Don't generate a protocol file.
- Result: Save a copy of the screen output.
The General Options dialog gives you access to options which affect
several or all program functions.

If your cpu has multiple cores, you may speed up processing if you let TAK
distribute the work among several threads. By default only 1 thread is created.
Currently multithreading is only supported by the encoder.
Some hints:
- You will only notice a speed up, if the processing isn't limited by
another factor like hard disk speed.
- It doesn't make sense to create more threads than the cpu has cores.
Sometimes it may be advantegous not to use all cores.
- Usually you will only benefit from physical cores. Hyperthreading
doesn't work well for the codec. Hyperthreading can only be advantegous,
if the threads are doing different things, or more specifically using
different execution units of the physical core (for instance Integer-,
floating point or SSE2-calculations). But the codec's threads will most
of the time require the same execution ports. So you only get a penalty
for the overhead of the hyperthreading management.
Execute with low priority. Nice for background processing.
Most cpus support additional instruction sets which can be used to speed up
the processing. By default TAK will atomatically use any available instruction
set it can take advantage of. You may restrict TAK to use only specific
instruction sets:
- None: Use plain Pascal code. This code is not even really
optimized. It mainly serves as a reference to check the assembler
optimizations against.
- ASM: Use some i386 assembler code. Has a small effect beyond the
fastest presets.
- SSE2: Use ASM, SSE2
- SSSE3: Use ASM, SSE2, SSSE3
Usually there is no reason to override the automatic selection.
Select the log file text format:
- Ansi: 8-Bit (Windows codepage) (default).
- UTF-16: UTF-16 Little endian with BOM.
Decompressor error log file
This section describes the content of the Decompressor error log file
"Tak_Deco_Error.txt".
An entry is created for each damaged file:
--- 41_30sec_No head - No tail.tak ---
Result
Audio data damaged
Stream components
File-ID damaged
StreamInfo damaged
Meta data damaged
First frame not found
Audio data
Size in samples: 1323001
Damaged samples: 12523
Muted samples: 12523
Cut samples: 0
Damaged blocks : 2
Damaged data blocks
No Position Size
1 0 4134
2 1314612 8389
Sections:
- The overall result.
- Info about damages of non-audio stream components.
- An overview of damages of the audio data.
- A detailed list of damaged data blocks in the audio data.
Audio data
contains:
- The stream size in samples including damaged samples. Important:
If the stream components section contains the error
"Audio size unknown", this value maybe inaccurate. Can only
happen if the file has been created via pipe encoding and with the -ihs
switch applied.
- The count of damaged samples.
- Damaged samples can be muted (replaced with silence) or cut
(taken out of the file).
- The count of damaged blocks which have been skipped. Each
block contains one or more undecodable frames.
Damaged data blocks
contains a list of defective data blocks. Each block is characterized by it's
position and size within the decompressed (wave) file in samples.
With this information it is easy to find the affected file parts within an
audio editor.
This command will show you some useful information about compressed TAK files,
which can optionally be written to a protocol file. Operation is nearly
identical to decompressing files.
Example output for one file:
=== waiting.tak ===============================================
File size: 2.19 MB
Header size: 0.24 KB
Unused: 0.00 KB
Compression: 64.46 %
Samples per channel: 888832
File duration: 20.15 sec
Frame duration: 125 ms
Seek table: Yes
Audio format: PCM, 44100 Hz, 16 Bits, 2 Channels
Codec: 2 Integer 24 bit (TAK 2.0)
Encoder: V 2.0.0, -p2
Wave file meta data: Header 44, Footer 0 Bytes
MD5: 00c29080dc2892f24b712b86fea12f87
APEv2-Tag: No
Status: Ok
Items:
- The compressed File size in MByte (1024 * 1024 Bytes).
- The Header size in KByte (1024 Bytes). The Header contains
meta data structures and the seek table.
- The size of Unused data in the header in KByte. Currently can only
be non-zero if the file has been created via pipe encoding.
- The Compression ratio in percent of the original file size.
- The count of Samples per channel.
- The File duration in seconds.
- The Frame duration in milliseconds. A single bit error will
never affect more of your audio data.
- Contains the file a since V1.1.1 obsolete Seek table?.
- A description of the Audio format.
- The Codec used to compress the file.
- Information about the Encoder, which compressed this file: Encoder
version and preset. For files generated with TAK 1.0 the evaluation level
is unknown.
- The sizes of leading and trailing Wave file meta data in bytes.
- If available, the MD5 checksum of the raw audio data.
- If available, the size and item count of the APEv2-Tag located at
the end of the file.
- Status: Ok or an error message.
Options
The Options dialog lets you choose the information to show:
- Any information creates the output above.
- Encoder outputs only the encoder version and the preset.
- Wave meta data outputs only the wave meta data sizes.
- Md5 outputs only the MD5 checksums.
- Compact-Formatted outputs one line per file, which contains most
of the information delivered by Any information in a fixed column
format, but without any descriptive texts. For a format description see
below.
- Compact-Raw outputs the same data as Compact-Formatted,
but without using spaces to format the data. Data values are separated
by ";".
If you check the Save protocol option, any output will be saved to
a protocol file named "Tak_Info_Proto.txt" located in the source
file directory.
Compact-Formatted - Format description
Example:
0 44100 16 2 48038601 cad70b28439a92814bc4184c37fa11bc 2.3.0 2 0 4096 1
Each line contains the following values from left to right. Data is arranged in
fixed size columns, numerical values are right- and textual values left-aligned
in a field of the width specified after the ":". One additional space
is beeing inserted between each two fields.
- Sample type : 2: 0 = PCM / 1 would be Float
- Sample rate : 6
- Sample bits : 2
- Channel count : 2
- Size in samples per channel : 11
- MD5 : 32
- Encoder version : 8
- Codec : 2: see below
- Preset : 2: 0, 0e, 0m ... 4m
- Frame size in samples per channel : 5
- Wave file meta data present : 1: 1/0 = yes/no
Description of the codec values:
- 0 Integer 24 bit (TAK 1.0)
- 1 Experimental!
- 2 Integer 24 bit (TAK 2.0)
- 3 LossyWav (TAK 2.1 Beta)
- 4 Integer 24 bit MC (TAK 2.2)
Parameters
TAKC -mode [-p# -fsl# -wm# -md5 -ihs -v -overwrite -fim# -l# -lf# -silent]
[-w -lp -tn# -cpu# -tt #] infile [outfile]
-mode -e encode, -d decode, -t test decode, -te test encode,
-fi file information, -version program version
-p# select encoder preset #: 0-4 (fastest to strongest, default is 2).
Append E/M (-p2m) to increase the evaluation level to Extra/Max.
pMax is a synonym for the strongest setting.
-fsl# Set the frame size limit to # samples per channel. Valid values:
512, 1024, 2048, 4096, 8192, 16384.
-wm# Control saving(encode)/restoring(decode) of wave file meta data:
0 = disable
1 = enable and use default values for maximum size (default)
46 to 1048576 = enable and set maximum size (encoding only)
-md5 add (encoding) / verify (decoding) MD5 of the raw wave data
-ihs ignore (wave) header size entry (pipe encoding only)
-v verify encoded frames (when encoding)
-overwrite overwrite existing output files (without confirmation!)
-fim# select file information mode #
0 = any information (default)
1 = encoder
2 = wave meta data
3 = MD5
4 = compact-formatted
5 = compact-raw
-l# select log file level #
0 = no log file (default)
1 = log results
Append A (-l1a) to append new results to an existing file.
-lf# select log file text format #
Ansi = 8-Bit (Windows codepage) (default)
Utf16 = UTF-16 Little endian with BOM
-silent silent operation: Write nothing to StdOut/the screen.
-w wait for enter key when finished
-lp Execute with low priority. Nice for background processing.
-tn# Use # threads for encoding (1-8, default is 1).
-cpu# Use (up to) the # cpu instruction set optimizations.
None = Use plain Pascal code
ASM = Use some i386 assembler code
SSE2 = Use ASM, SSE2
SSSE3 = Use ASM, SSE2, SSSE3
By default any available instruction set is used.
-tt # Add textual tag item #, where # is a key/value pair: "key=value",
for instance "TITLE=A nice song". "key=@file" will read the value
from the text(!) file "file" in the source directory.
infile Specify file or directory (Dir\*) to be processed.
- selects StdIn (encoding only, requires outfile specification).
outfile Specify output file or directory (Dir\*).
- selects StdOut (decoding only, requires infile specification).
-mode
What should the program do:
- -e: Encode (compress) files.
- -d: Decode (decompress) files.
- -t: Test files. Files are decoded to check their integrity, but no
output file is created.
- -te: Test-encode files. Check the potential compression ratio, but do not
create an output file.
- -fi: Show file information.
- -version: Show program version.
-p#
Select an encoder preset. Default is -p2.
-fsl#
Set the Frame Size Limit to one of the
listed values.
Specify 1/0 to enable(default)/disable saving(encode)/restoring(decode) of
non-audio wave file meta data. Please read the description of the GUI version
for the options Wave file meta data and
Restore wave file meta data.
On encoding you may also specify a maximum size (46 to 1,048,576 bytes) for the
meta data, for example:
-wm1024
limits the meta data size to 1024 Bytes. If it is bigger, it will be ignored.
The default value selected by -wm1 depends on the encoding mode:
- When encoding from a file the maximum size is set to 1,048,576 bytes.
- When encoding from a pipe without the -ihs switch applied the
maximum size is set to 46 bytes.
- When encoding from a pipe with the -ihs switch applied no meta
data can be saved.
On encoding (-e): Calculate a MD5 checksum of the
raw audio data and store it in the compressed file.
On decoding (-d, -t): Calculate a MD5 checksum of
the decoded audio data and compare it with the Md5 stored in the compressed
file.
Ignore the (wave) header size entry in the source file. Only valid when
pipe encoding.
-v
Enables Verify: Any compressed frame is subsequently decompressed and
then compared to the original data. This reduces encoding speed,
but is useful for the more paranoid among us!
-overwrite
By default already existing output files will not be overwritten. Specify
this option to enable overwriting. You will not be asked for a confirmation!
-fim#
Select the file information to show.
-l#
Specify the log (protocol) file level.
Select the log (protocol) file text format.
-silent
Silent operation: Write nothing to StdOut/the screen.
-tn#
Use # threads for encoding.
-cpu#
Use (up to) the # cpu instruction set optimizations.
-tt #
Some remarks:
Tagging is only available when encoding.
TAK does not distinguish between upper and lower case in the keys; therfore
"key" and "KEY" are equivalent.
You may assign multiple values to the same key:
-tt "Artist=One" -tt "ARTIST=Two"
will create a tag item with the key "Artist" and the value
"One Two". The notation of the first appearance of the key is beeing
used. Multiple values are beeing separated by zero bytes as defined in the APEv2
specification.
Item values are not allowed to be empty.
infile
Depending on the selected mode the program automatically appends the proper
extension to the file spec: ".wav" when encoding, ".tak"
when decoding.
Examples for encoding:
d:\VocComp_Data\Sample
Compress file "Sample.wav" in the directory "d:\VocComp_Data".
d:\VocComp_Data\*
Compress any file with the extension ".wav" in the directory
"d:\VocComp_Data".
*
Compress any file with the extension ".wav" in the current directory.
-
Read the data to compress from StdIn. See pipe encoding
for more information.
outfile
The optional outfile specification works the same way as infile.
Specify "-" to enable pipe decoding: The decoded data is beeing
written to StdOut. Currently there are some minor issues
with pipe decoding.
Not every in-/outfile spec combination is valid: if you are using wildcards for
the infile, you cannot specify an individual filename as outfile. With pipe
decoding you have to specify an individual infile.
Exit codes
The following exit codes may be returned:
0 = Success
No errors.
1 = Invalid parameter(s)
One or more of the command line parameters are invalid.
2 = Operation error
The requested operation failed. Currently nearly any failure is beeing reported
as error including the detection of damaged audio data when decoding, even if
the file could be partially decoded.
Only exception: If a file is beeing compressed and the wave meta data is too big
to be copied into TAK's meta data, the resulting warning is not beeing reported
as error.
Probably later program versions will differentiate warnings (code 2) and errors
(code 3).
Earlier versions of Tak only supported Ansi encoding of text output and
command line parameters. The character set was limited to the current language
specific windows codepage.
The Unicode encoding supports far more characters and languages.
Command line version
The command line version accepts unicode parameters (file names, tags) and writes
unicode to the screen. How well text is displayed depends on the font used for
the console window.
If you redirect the screen output to a pipe it will be written as Ansi.
GUI version
The GUI version supports unicode file names in the open file dialogs, but any
screen output is still limited to the Ansi character set. Therefore characters
outside of the windows codepage will be displayed as question marks.
Log files can alternatively be stored with UTF-16 encoding. This may
compensate for the current limitations of the GUI version output. The encoding
can be selected in the General options dialog
respectively via the command line switch -lf.
What it is good for
Usually TAK reads the data to be encoded from a wave file. Sometimes this is
not the best way:
- If you use another application to convert a file from another format than
wave into the TAK format, the application first has to convert the data
into a temporary wave file and then has to call the TAK command line version
to encode the wave file.
- The same is required if you are ripping a cd. First rip and then encode.
This method requires some disk space for the temporary wave file and reading and
writing of this file will cost some time.
Those disadvantages can be avoided if the application supports pipe encoding:
In this context pipe means a direct connection between two applications. The
application writes the data to encode into one end of the pipe and TAK reads
it from the other.
Currently the pipe data has to be in the wave file format. Later TAK versions
will also support raw data streams.
Basic usage
To activate pipe encoding you have to specify a minus as source file and an
outfile specification is obligatory:
takc -e - Outfile
Some complications
Because the pipe can only be read sequentially and it's final size is unknown,
TAK can not know in advance, if there will be some (rare) additional wave meta
data at the end of the file. Since wave meta data is beeing stored into TAK's
meta data structures in the file header and this has to be created when encoding
starts, TAK has to reserve sufficient space to hold the meta data it might
encounter at the end of the file. If the space is too small, the meta data can
not be stored, if it is too big, we are wasting some space and the compression
will be not optimal.
You may use the -wm option to control the size of the reserved space:
takc -e -wm46 - Outfile
reserves 46 Bytes which is also the default setting for pipe encoding. This is
only sufficient for the simpliest wave file header, but will waste nearly no
space.
A similar problem arises if the other application does not know the final sample
count of the audio data. This can happen, if the audio data is simultaneously
beeing ripped from a cd or if the data is beeing converted from a format which
doesen't provide an accurate size information before the whole decoding is done.
In both cases the other application can not write an accurate sample count into
the wave header which is beeing sent to TAK.
You have to tell TAK to ignore this size entry by adding the ignore-header-size
switch to the command line:
takc -e -ihs - Outfile
The -wm switch can not be used in combination with the -ihs switch. If the
header data is invalid, it's useless to save it.
Some recommendations for Foobar2000
You have to create an encoder preset to use pipe encoding with Foobar2000.
Here an example of a preset i created for Foobar2000 V0.9.4.5:

Some remarks:
- The Encoder path ("C:\Programme\Foobar2000\Takc.exe") has
to point to your "Takc.exe".
- You may change the preset selection "-p3" in
"Parameters" to your preset of choice.
- Since lossless files have a variable bitrate, the bitrate value of
800 kbps is only an estimate.
If you are using Foobar2000 V1.1 and above please read
New component installation scheme
V2.3.2 Beta 1 / 22-04-03
This release brings unicode support for the command line version and somewhat
limited for the GUI version.
Improvements:
- Tiny compression improvements of usually less than 0.01 percent. I only
mention it to explain why compressed files may differ from those created
by the previous version.
- Considerably smaller and more portable code for the MD5 calculation.
New features:
- Unicode support. The command line version accepts unicode parameters (file
names, tags) and writes unicode to the screen. The GUI version supports
unicode file names in the open file dialogs, but any screen output is still
limited to the Ansi character set. Therefore characters outside of the
windows codepage will be displayed as question mark.
- Log files can now alternatively be stored with UTF-16 encoding. This may
compensate for the current limitations of the GUI version output. The
encoding can be selected in the General options dialog respectively via
the new command line switch -lf.
Cleanup:
- Removed detection of the command line parameter -sts (SeekTableSize).
It was silently ignored since version 1.1.1 and now will cause an error.
Known issues:
- If you use pipe decoding and the application reading the pipe is beeing
terminated before the whole file has been read, TAKC may get into an
endless loop and has to be manually killed with the task manager. I don't
think this is a big issue but i will try to fix it in one of the next
versions. BTW: Big thanks to shnutils for testing the pipe
decoding!
- There seem to be some compatibility issues with pipe decoding to some
other applications ("crc1632.exe" has been reported). I will
try to fix it in the next release.
V2.3.1 / 21-03-28
This release brings significant speed optimizations for the encoder and a lot of source
code cleanups in preparation of a migration from Delphi to Lazarus and/or C. Practical
goals are Linux binaries and open source releases. This will be done step by step
depending on my spare time. The cleanup revealed several bugs which affected the
compression efficiency, but never the data integrity.
Improvements:
- Encoding speed improvements of up to 43 percent in my tests. The slower
presets benefit most. Between 6 and 28 percent for an i5-4460 (Haswell),
between 9 and 43 percent for an i3-8100 (Coffee Lake).
- Decoding speed improvements of up to 10 percent in my tests. The slower
presets benefit most. Between 2 and 7 percent for an i5-4460 (Haswell),
between -1 and 10 percent for an i3-8100 (Coffee Lake).
- Really tiny compression improvements because of some bug fixes. See below.
- Better source code and smaller binaries.
New features:
- The multi-threaded encoder now supports up to 8 instead of 4 threads.
- The cpu optimization option None now really disables any assembler
optimizations. Previous versions still used some i386-assembly that could
only be disabled by compiler switches. The new option ASM enables
this code and is equivalent to None of earlier versions.
Fixes:
- Small bugs in the encoder decreased compression by usually not more than
0.01 percent. One of my file sets lost 0.06 percent. Some special
files will show stronger effects.
- A bug in the plain pascal code path significantly decreased compression of
some presets: up to 1.19 percent for my primary file set. To encounter this
bug, you had to use V2.2.0 or 2.3.0 and explicitly disable assembler
optimizations (-cpuNone) or run Tak on a cpu without even the MMX-instruction
set (e.g. Pentium 1).
- Added new tests to my already extensive validation procedure to detect
regressions of the plain pascal code path. Til now i only checked the
data integrity.
- None of these bugs affected the data integrity.
Cleanup:
- Removed the assembler optimizations from the TAK 1.x decoder and made it
a lot more compact.
- Replaced MMX with SSE2 assembly.
- Replaced FPU with SSE2 assembly.
- Removed assembler optimizations which had little effect on the speed.
- Removed any inline assembly code.
- Removed a lot of partial redundancies which had been introduced to gain
some speed.
V2.3.0 / 13-06-18
This release brings significant speed optimizations for encoder and decoder.
Improvements:
- Encoding speed improvements between 5 and 44 percent for my primary file set.
The faster presets benefit most. Only the compression performance of preset
-p0e has changed. It's now performing about 0.03 percent worse on my primary
file set. I modified the preset to make it faster, because -p0e and -p0m got
to close after the speed optimizations.
- Decoding speed improvements between 14 and 29 percent for my primary file set.
The faster presets benefit most.
New features:
- Two new file info modes -fim4/5 which output one line of raw data
per file.
- New mode switch -version to display the program version.
Fixes:
- Takc.exe now contains a proper version info record.
- Removed an obsolete reference to the dedicated LossyWav-codec, which was
part of V2.1.0 Beta, from the command line description of Takc.exe.
Many thanks to Justin Ruggles for reporting this bug!
The old decoder would deliver a corrupted frame under these extremely rare
conditions:
- The samples are signed and the bit depth isn't higher than 16.
- The frame contains at least 16 samples per channel.
- The frame only contains samples with the maximum negative value
(-32768 for 16 bit samples) or value 0.
- The first sample in the frame has the maximum negative value.
Since a frame usually consists of thousands of samples and samples of maximum
negative value usually mean clipping, it's extremely unlikely to encounter such
data in real life. The probability is higher for the last frame, which can be
quite small. But usually the very last samples of a song don't represent only
negative clips.
Modifications:
- Added caudec, dsfTAKSource and ImgBurn
to the list of software with TAK support in the readme file.
V2.2.0 / 11-07-10
This release brings support for multi-channel audio and speed optimizations for
encoder and decoder.
New features:
- Support for multi-channel audio. While the stream format supports up to
16 channels, the codec currently is restricted to a maximum of 6
channels.
- Support for the "Wave Format Extensible" file format.
Improvements:
- Encoding speed improvements of up to 10 percent for my primary file set.
Most of it is achieved by a modification of the algorithm which selects the
optimal predictor order for each subframe. It will now often use less
predictors than before, what may on average result in about 0.01 percent
worse compression. You will only notice an advantage, if your files
benefit from high predictor orders.
- Decoding speed improvements of up to 18 percent for my primary file set.
Some of it is attributed to the above-noted modification of the encoder's
predictor order selection algorithm. Therefore it will only take effect
when decoding files encoded with this version and only, if they benefit
from high predictor orders. Additionally SSSE3-instructions can be used
for predictor counts of 32 and more. This affects the presets p3, p4 and
sometimes p2, but only, if a particular file benefits from high predictor
orders.
Fixes:
- The wave file reader reported an error if a file contained additional
(meta) data following the audio data.
- The wave file writer didn't add an optional zero byte to make the audio
data chunk size a multiple of 2. This was only relevant when decoding mono
audio with 8- or 24-bit samples without restoring the wave meta data
(-wm0 applied on encoding and/or decoding).
V2.1.0 / 11-01-08
This release brings speed optimizations and multi core support for the encoder.
The dedicated LossyWav-codec that was available in the beta releases has been
removed.
Improvements:
- Encoding speed improvements of about 10 to 20 percent (depends on preset
and cpu) for cpus with the SSSE3 instruction set. Since SSSE3 (note the
three 'S') isn't supported by AMD, only Intel users will benefit from
those optimizations.
- The encoder now creates up to four threads to utilize multiple cpu cores.
Specify the thread number in the General Options dialog of the GUI-version
or with the -tn option of the command line version. By default only one
thread is created. You will only notice a speed up, if the encoding speed
isn't already limited by the performance of your drives.
Modifications:
- Added the -cpu# switch to the command line version, which lets you control
some cpu optimizations.
- The file info function now also shows the name of the codec used to
compress the file.
- Moved the verify-option from the details-dialog to the general compression
options dialog.
- All dialogs with an Add-files-option locked the source folder until the
dialog was closed. Hopefully this is no longer the case.
V2.0.0 / 10-01-07
This release introduces a new file format, which can not be decoded by earlier
versions of Tak, Takc, in_tak and tak_deco_lib! But surely it can decode files
created by any earlier version.
Improvements:
- Slightly better compression of CD-Audio for any preset (ranging from 0.09
to 0.37 percent for my primary test corpus).
- More than 2 percent better compression for my 8-bit test corpus.
- More than 1.5 percent better compression for my 192 KHz / 24-bit test corpus.
- Up to 0.45 percent better compression for my LossyWav test corpus.
- Higher encoding speed for any basic preset (without addditional evaluation
level), higher decoding speed for any preset. Depending on the cpu
up to 11 percent faster encoding for -p0 and up to 15 percent faster
decoding for -p3 compared with V1.1.2.
- While the new codec is smaller than the previous one, the binaries are a
bit bigger because the decoder for the old file format takes up about 18 KB.
- The file format is prepared to support some more future improvements.
Modifications:
- Added xrecode II to the list of applications with TAK support in the
readme file.
V1.1.2 / 9-07-27
New Features:
- Tagging support for the command line encoder.
Improvements:
- Depending on preset and cpu up to 10 percent faster encoding and decoding
compared with V1.1.1.
- Slightly faster encoding and decoding of LossyWav files.
- Slightly faster encoding and decoding if MMX is disabled and the pure
pascal code is beeing used.
- Removed some more assembler routines and simplified a lot of code. The
binaries are again smaller now.
Fixes:
- The new filter introduced in V1.1.1 revealed a bug in the encoder, which
resulted in suboptimal performance especially when compressing
LossyWav-files with the presets -p3 or -p4 (BTW: It doesn't make sense to
go higher than -p2m when compressing LossyWav-files...).
Known issues:
- If you use pipe decoding and the application reading the pipe is beeing
terminated before the whole file has been read, TAKC may get into an
endless loop and has to be manually killed with the task manager. I don't
think this is a big issue but i will try to fix it in one of the next
versions. BTW: Big thanks to shnutils for testing the pipe
decoding!
- There seem to be some compatibility issues with pipe decoding to some
other applications ("crc1632.exe" has been reported). I will
try to fix it in the next release.
V1.1.1 / 9-03-11
New Features:
- In very rare cases the presets -p3 and -p4 could compress much worse than
the lower presets. A new filter in the encoder will nearly eliminate this
annoying effect. It can also increase the average compression by a tiny
(<= 0.05 percent) amount.
- Creation and verification of MD5 checksums of the raw audio data. The file
info command can show you the MD5.
- Option to lower the process priority. Nice for background processing.
Improvements:
- Up to 9 KB smaller binaries. Although i have removed a lot of the
assembler optimizations, the speed is still very close to the
previous version.
- Further clean up of the Code.
Modifications:
- Support for seek tables removed. The new version will neither add seek
tables to newly encoded files nor use seek tables contained in files
created with older program versions. Important: Seeking in files without
seek table is only supported since V1.1.0. Please update the WinAmp plugin
and/or the decoding library for full seeking support in media players.
- There is a new metadata object which contains position and size of the
last frame in the stream. This info is useful for seeking and tag
detection.
V1.1.0 / 9-01-04
New Features:
- Support for 192 Khz Audio.
- Seeking without seek table.
Improvements:
- Encoding and decoding speed improvements of about 3 percent for presets
p0 and p1 on my system. Also some decoding speedup for p2.
- Fixed a bug in the encoder that resulted in suboptimal compression of
some loud files and especially high resolution audio. Some files may
gain about 0.05 percent of compression. Not much, but it comes without
any speed penality.
- Further clean up of the Code.
Modifications:
- I hope you don't mind but i always had the feeling 5 presets are enough.
Therefore i dropped the appropriately 'Insane' named preset -p5 and
instead made presets 3 and 4 stronger. Okay, new -p4 will nevertheless be
slightly weaker than old -p5, because i have reduced the maximum
predictor count from 256 to 160. Before doing this i performed a detailed
analysis of predictor count * compression * speed. There are not many
files which benefit from such high predictor orders. Two of my file sets
contain many of such files, but even they will only loose about 0.10
percent compression. Not a big loss if in exchange you get nearly half
the decoding (cpu power) requirements.
- Removed option to modify the Prefilter sensitivity.
V1.0.4 / 8-03-11
New Features:
- Support for pipe decoding.
Improvements:
- Decoding speed improvements of 7 (preset 5) to 13 (preset 0)
percent on my system.
- Modification of the presets -p0 and -p1 to make them even faster:
-p0 is now encoding 17, -p1 10 percent faster on my system.
- I have replaced some of the Delphi libraries with own code. This will
help a later translation to standard C, which can't use delphi libraries.
A nice side effect: Most of the binaries are much smaller now.
- The Readme file now contains links to software with TAK support and to
some guides.
Modifications:
- The read buffer used to decode presets -p0 to -p3 is considerably smaller
now. In most cases this should improve the decoding speed.
V1.0.3b / 7-12-16
Fixed a bug in the GUI version ("Tak.exe"):
- If the maximum size of the wave file meta data was set to 0, the
compressor stopped with an "Error writing destination" error.
V1.0.3 / 7-12-14
New Features:
- Support for pipe encoding.
- New command line switch -ihs (ignore header size) for pipe encoding.
- New command line option -sts (set seek table size) for pipe encoding.
- New command line switch -silent (silent operation).
- The command line option -wm now let's you specify a maximum size for
the wave meta data.
- New command line switch -pMax to select the strongest encoder preset.
- The file info function shows you how much space (if any) in the header is
beeing wasted because of pipe encoding.
Improvements:
- Tiny compression improvements for the presets 0 to 2, rarely also for the
stronger presets. The average improvement for my test corpus is about
0.05 percent. Not much, but it comes without a significant speed
penality.
- Small decoding speed improvements of 4 (preset 5) to 8 (preset 0)
percent on my system.
- The Readme file now contains a simple contents section with links to
the most relevant topics. There is also a new section about pipe encoding.
If you want to use it, please read the text...
Modifications:
- The decoder had to be modified to guarantee error robustness (decoding
through errors) for files created by pipe encoding with the -ihs
(ignore header size) switch applied.
- Some modifications of the decoding error log file
("Tak_Deco_Error.txt").
- In TAK 1.0.2 there was no difference between the presets -p4/p4e and
-p5/-p5e. This irritated some users. Now they are slightly different.
- Command line: The alternative syntax (-pT to -pI) for the preset
specification is no longer supported. Now -p0 to -p5 is obligatory.
- GUI: The buttons for preset and evaluation level selection have been
removed from the encoder options dialog. Please use the comparison
table instead.
- GUI: Moved the Verify switch from the general encoder options to
the details dialog.
- GUI: The Save wave file meta data switch has been removed from the
encoder output options sheet. Please use the Wave file meta data -
Maximum Size setting on the stream options sheet instead.
- Because of an update of my Delphi compiler the binaries are now about
35 KB bigger.
Fixed:
- Some applications crashed if they tried to redirect the output of the
command line version. This seems to have been caused by a bug in the
Delphi runtime library. Now i am accessing the console directly, what
hopefully avoids this trouble.
V1.0.2 / 7-11-05
New preset configuration:
- Most of the presets have been modified to speed them up and to reduce the
decoding requirements. Usually they are more than 50 percent faster while
loosing only about 0.3 percent of compression efficiency.
- The fastest preset TURBO (-p0) is now using 8 instead of 16 predictors and
compresses (on average) nevertheless better than FLAC -8 (with 12
predictors). The reduced cpu requirements should guarantee that this
preset can be decoded on any hardware device capable to playback FLAC -8
(maybe even -5).
- Because of the insertion of the new TURBO preset we now have 6 instead
of 5 presets: -p0 to -p5. The strongest setting is now -p5m and it's
called INSANE.
- The maximum frame size (samples per channel) is now limited as follows:
4096 for TURBO and FAST, 8192 for NORMAL, HIGH and EXTRA, 16384 for
INSANE. This way the specification of the memory requirements of the
decoder is more accurate.
New Features:
- You can now manually set the frame size to 512, 1024 or 2048 samples
to match the frame size of the LossyWav/LossyFlac preprocessor developed
by the Hydrogenaudio.org-Members 2Bdecided, Nick C. and halb27.
But caution: Frame sizes of 512, 1024 and 2048 are not backwards
compatible and can not be decoded by TAK applications and libraries
prior to V1.0.2!
- The Prefilter can now be disabled by the user.
Improvements:
- The strongest compression mode -p5m (aka -p4m in V1.0.1) is now encoding
62 percent faster on my system and is on average loosing only 0.01 percent
compression!
- Tiny overall speed improvements.
- Better compression of some low passed files and files coming from lossy
sources (especially low and medium constant bitrate). Up to more than
1 % for presets Turbo, Fast and Normal, up to 0.3 precent for High, Extra
and Insane. This comes without any significant speed penality.
- Modification of the file read function of the decoder. It's now reading
the file in smaller blocks. This will hopefully increase the decoding
speed of high resolution audio, which seems to be suffering from the
io system of V1.0.1.
- The memory requirements have been reduced. Depending on the preset the
encoder is now using 2 to 3 times, the encoder 1.5 to 2.5 times less
memory. This may slightly improve the speed on some cpus. But i did it
primarily to prepare later hardware implementations.
- Considerable parts of the source code have been partially rewritten or
simplified. It's in no way important for the current users (well, like
any modification it might even introduce bugs...), but it's part of the
preparation of a later source code release. It's only one more step
into this direction, there is still much more to do. As always, i can't
tell you a release date.
Fixed:
- The file info function was rounding the file duration to the nearest
second. Now it's correctly displaying the fraction with 2 decimal places.
(30.53 instead of 36.00 seconds).
- When compressing 96 Khz audio with preset HIGH, preset EXTRA has been
stored into the encoder meta data. This had no effect on the decoding
or data integrity, but the file info function and media players will
display the wrong preset.
- The decoder is expected to process any (damaged) data without any problems.
But i have found and corrected two cases, where the decoder could crash.
The chance for this was less than 1 : 1000 (for damaged files only!).
- In one place i used an invalid flag combination in a call of Windows'
VirtualFree().
V1.0.1 / 7-04-14
Features:
- Some speed optimizations of encoder and decoder. Depending on the preset
and your cpu you may see improvements of 2 to 10 percent (if your hard
disk is fast enough). Most affected: Encoding and decoding of presets
Turbo and Fast, decoding of presets High and Extra.
- Removed the access to internal encoder options. Reintroduced the
additional evaluation level EXTRA as compensation.
- Added a dynamic comparison table to illustrate the effect of presets and
evaluation levels on compression efficiency, encoding and decoding
speed.
- Added a meta data structure to hold encoder version, preset and
evaluation level used for compression. Because of rounding errors
the addition of this handful of bytes can cause 0.01 percent worse
compression be reported (compared to TAK 1.0).
- Added a new command to show selected information about a compressed
file.
- The command line version now indicates errors via the exit code.
I always thought i already had done this...
- Even better error tolerance of the decoder.
Fixed:
- GUI: When compressing/decompressing the selection of a drives root
directory as user specified output destination caused an error.
- It was theoretically possible, that when decoding some verify or source io
errors had not been reported properly.
- One tester send me a very special file which could not be encoded; the
encoder stopped with an error message. The fact, that nobody before
reported such problems, confirms, that this file generated a very special
conndition. Fortunately TAK still contains much self check code (which
is slowing it down a bit), which detected this error condition and throw
the error message. This bug affected only the encoder; if your files have
been encoded without the encoder reporting an error, they are fine.
V1.0 / 7-01-23
Fixed:
- Decoding with the command line version: if you specified wildcards for
the file selection and the source directory contained only 1 TAK file,
the decoder always threw the message 'File already exists'. Even worse:
using the overwrite option in this situation led to deletion of the
compressed source file!
- Usually the decoder ignores any data appended to the file end of the
compressed file (for instance APEv2 tags). But it failed, if the file
size was an integer multiple of the frame size (in samples).
Both bugs affected only the decoder, therefore there is no need to re-encode TAK files
created with beta 2.