TAK: Difference between revisions

From Hydrogenaudio Knowledgebase
(General update and rewrite)
(CUETools, minor tweaks.)
Line 13: Line 13:
'''Tom's lossless Audio Kompressor''' ('''TAK''') is a [[lossless]] audio compressor for the Windows platform (also known to work with Wine). It comes with both a command-line executable and a GUI, as well as a [[Winamp]] plugin.  
'''Tom's lossless Audio Kompressor''' ('''TAK''') is a [[lossless]] audio compressor for the Windows platform (also known to work with Wine). It comes with both a command-line executable and a GUI, as well as a [[Winamp]] plugin.  


TAK has gained recognition for its performance figures: it has been measured to achieve compression like [[Monkey's Audio]] “High” at same encoding time and ditto for the even higher-compressiong[[OptimFrog]] “Normal” - while at the same time decoding at speed (CPU load) second only to [[Free Lossless Audio Codec|FLAC]].  In the same tests (see the Links section), it was able beat every FLAC setting simultaneously on size and encoding time, and [[WavPack]]/[[ALAC]] also on decoding time.
TAK has gained recognition for its performance figures, achieving compression like [[Monkey's Audio]] “High” at same encoding time, and ditto for the even higher-compressing [[OptimFrog]] “Normal” - and while also decoding at speed (CPU load) second only to [[Free Lossless Audio Codec|FLAC]].  TAK could beat every FLAC setting simultaneously on size and encoding time.  (All other performance figures in this article taken from the 4th revision of [http://audiograaf.nl/downloads.html Martijn van Beurden's comprehensive lossless comparison] for CDDA audio.)




Line 21: Line 21:
* Seeking without seek table
* Seeking without seek table
* Piping support for encoding
* Piping support for encoding
* Error handling: each frame protected by a 24-bit checksum for detection (also optional MD5 audio checksum for the entire file), and the decoder tolerates errors in that a single bit error will never affecting more than 250 ms
* Error handling: each frame protected by a 24-bit checksum for detection (also optional MD5 audio checksum for the entire file). According to the README, the decoder can decode through errors, and a single bit error will never affect more than 250 ms.
* High-resolution audio support: up to 192 kHz sampling rate and 24-bit/channel
* High-resolution audio support: up to 192 kHz sampling rate and 24-bit/channel
* Support for up to six channels.
* Support for up to six channels. Channel mask in [https://docs.microsoft.com/ru-ru/windows/win32/api/mmreg/ns-mmreg-waveformatextensible WAVEFORMATEXTENSIBLE].
* Tagging: APEv2 tags at end of file.  
* Tagging: APEv2 tags at end of file.  
* RIFF chunks supported.  
* RIFF chunks supported.  
* Multi-core support (encoding only; the README warns that you will likely only benefit from physical CPU cores).


=== Limitations ===
=== Limitations ===
* Currently there is no hardware supporting the format.  The software is closed-source, but ffmpeg offers an open-source decoder.
* Currently there is no hardware supporting the format and software support is limited.  The official encoder/decoder is closed-source, but ffmpeg offers an open-source decoder.  
* No Unicode support as of version 2.3.1.  
* Does not support floating-point PCM (for that, use WavPack or Optimfrog).
* Does not support floating-point PCM (for that, use WavPack or Optimfrog).
* It is a lossless-only format, with no hybrid lossless/lossy mode (for that use WavPack or Optimfrog; for advanced users, it can be used with [[LossyWav]]).
* No Unicode support as of version 2.3.1. External applications can circumvent this (and e.g. [[foobar2000]] does).
* The encoder can only read .wav files for input.  (The WAVE standard's 4 GB limitation can be circumvented by piping.)
* It is a lossless-only format, with no hybrid lossless/lossy mode (for that, use WavPack or Optimfrog; for advanced users, TAK can be used with [[lossyWAV]]).




Line 41: Line 43:


=== Windows-specific ===
=== Windows-specific ===
* [http://thbeck.de/Download/TAK_2.3.1.zip TAK 2.3.1 download link] - Official release which consists of a CLI, a GUI, a [[Winamp]] plugin, the SDK, and the decoding library.
* [http://thbeck.de/Download/TAK_2.3.1.zip TAK 2.3.1 download link] - Official release which consists of a CLI, a GUI, the decoding library, the SDK, and a [[Winamp]] plugin.
* [https://www.foobar2000.org/components/view/foo_input_tak TAK Decoder 0.5.4] - Plugin for [[foobar2000]] (supports tagging and [[ReplayGain]], uses the 2.3.1 decoding library).
* [https://www.foobar2000.org/components/view/foo_input_tak TAK Decoder 0.5.4] - Plugin for [[foobar2000]] (supports tagging and [[ReplayGain]], uses the current (2.3.1) decoding library).
* [http://www.liviocavallo.altervista.org/ dsfTAKSource 0.0.1.6] - DirectShow source filter which uses the official decoding library to play TAK-files in Windows Media Player, Media Player Classic - Home Cinema, Zoom Player and alike.
* [http://www.liviocavallo.altervista.org/ dsfTAKSource 0.0.1.6] - DirectShow source filter which uses the 2.2.0 decoding library to play TAK-files in Windows Media Player, Media Player Classic - Home Cinema, Zoom Player and alike.
* [http://rwijnsma.home.xs4all.nl/dc-bsm/index.htm DC-Bass Source Mod] - DirectShow source filter which uses the official decoding library to play TAK-files, amongst many others, in any DirectShow media player (as mentioned above).
* [https://rwijnsma.home.xs4all.nl/dc-bsm/index.htm DC-Bass Source Mod] - DirectShow source filter which uses the 2.3.0 decoding library to play TAK-files, amongst many others, in any DirectShow media player (as mentioned above).
* [http://code.google.com/p/lavfilters/ LAV Filters] - Set of open-source DirectShow filters which uses [https://ffmpeg.org/pipermail/ffmpeg-devel/2012-September/131785.html FFMpeg's reverse-engineered decoder] to play TAK-files in any DirectShow media player.
* [http://code.google.com/p/lavfilters/ LAV Filters] - Set of open-source DirectShow filters which uses [https://ffmpeg.org/pipermail/ffmpeg-devel/2012-September/131785.html FFMpeg's reverse-engineered decoder] to play TAK-files in any DirectShow media player.
* [http://www.videolan.org/vlc VLC Media Player] - Can: transcode from/play (no encoding); since at least version 2.2.0
* [http://www.videolan.org/vlc VLC Media Player] - Can: transcode from/play (no encoding); since at least version 2.2.0
Line 56: Line 58:
== Using TAK ==
== Using TAK ==


For encoding/decoding through other software, see heading below; you can pass command-line options as given in this section
For encoding/decoding through other software, see heading below; you can pass command-line options to those applications. 


=== Encoding vs. decoding vs test ===  
More exhaustive instructions are found in the README.html included in the official TAK distribution.
The following is a selection of command-line parameters which in the GUI are accessed through buttons and checkboxes.
 
=== Encoding, decoding, test and verification ===  
The following command-line parameters (and more!) are accessed through buttons and checkboxes in the GUI:
* -e encodes, -d decodes; also, it can run test encoding/decoding by -te resp. -t.  
* -e encodes, -d decodes; also, it can run test encoding/decoding by -te resp. -t.  
* -v verifies upon encoding; -md5 adds audio MD5 checksum for later verification (like also supported by FLAC and WavPack).  
* -v verifies upon encoding; -md5 adds audio MD5 checksum for later verification.
 


=== Compression parameters and performance ===  
=== Compression parameters and performance ===  
The compression options are displayed by name in the GUI.  The compression options range from -p0 to -p4, with each of the having an optional “m” or “e” modifier for additional compression at the expense of encoding time, making for fifteen in total: -p0, -p0e, -p0m etc. Although the -p3's decode faster (= at lower CPU load) than the -p4's etc., the differences are much smaller than migrating to any other lossless decoder, and all are second only to FLAC in decoding speed.
The compression options are displayed by name in the GUI.  The compression options range from -p0 to -p4, with each of the having an optional “e” (for “extra”) or “m” (“maximum”) modifier for additional compression at the expense of encoding (but not decoding) time, making for fifteen in total: -p0, -p0e, -p0m etc. The number (0 to 4) does affect decoding CPU load, but only modestly (van Beurden, figure 1.2.)
* -p2 is the current default option.  It is measured to compress on par with Monkey's “Normal”, but encoding at speeds between WavPack and FLAC default options.  
* -p2 is the current default option.  It is measured to compress on par with Monkey's “Normal”, but encoding at speeds between WavPack and FLAC default options.  
* -p0 is the fastest option, encoding around WavPack default and FLAC -6, but 2-3 times faster.  
* -p0 is the fastest option, encoding around WavPack default and FLAC -6, but 2-3 times faster.  
* -p4m is the slowest option yields the highest compression (though at very small improvement over -p4e), encoding in size and speed on par with OptimFrog “Normal”, slightly between Monkey's “High” and “Extra high”, while decoding at 10-15 percent of the CPU load.
* -p4m is the slowest option for highest compression (though at very small improvement over -p4e), encoding in size and speed on par with OptimFrog “Normal”, slightly between Monkey's “High” and “Extra high”, while decoding at 10-15 percent of their CPU load.  
* -p3: In the performance test in the links, this is where TAK reaches Monkey's “High” in compression and encoding speed.


=== Command-line examples, including pipe redirection ===
=== Command-line examples, including pipe redirection ===
Line 85: Line 87:
  Takc.exe -d input.tak - | wavpack.exe -hhx - output.wv
  Takc.exe -d input.tak - | wavpack.exe -hhx - output.wv


Examples encoding TAK from FLAC, WavPack resp. arbitrary ffmpeg-supported format:
Examples encoding TAK from FLAC, WavPack resp. arbitrary ffmpeg-supported (16-bit) format:
  flac.exe -dc input.flac | Takc.exe -e -p1e - output.tak
  flac.exe -dc input.flac | Takc.exe -e -p1e - output.tak
  wvunpack.exe input.wv - | Takc.exe -e -p4m - output.tak
  wvunpack.exe input.wv - | Takc.exe -e -p4m - output.tak
Line 93: Line 95:


== Using TAK in other applications ==
== Using TAK in other applications ==
=== Ripping CDs to TAK with [[Exact Audio Copy]] ===
[[EAC and TAK|wiki guide]] details how to rip CDs to TAK with EAC.




=== TAK with [[foobar2000]] ===
=== Playing and converting to/from TAK with [[foobar2000]] ===
For decoding, use the [https://www.foobar2000.org/components/view/foo_input_tak foo_input_tak] component (current version using the 2.3.1 decoding library).
For decoding, use the [https://www.foobar2000.org/components/view/foo_input_tak foo_input_tak] component (current version using the 2.3.1 decoding library).  


For encoding:
For encoding:
Line 102: Line 107:
* Under Output format, click Add New and set it up as shown below ('''note:''' replace -p2 with the desired compression level).  
* Under Output format, click Add New and set it up as shown below ('''note:''' replace -p2 with the desired compression level).  
* Upon first conversion, foobar2000 will ask you to navigate to locate Takc.exe .  
* Upon first conversion, foobar2000 will ask you to navigate to locate Takc.exe .  
[[Image:Tak_foobar_converter.png|frame|center|Screenshot of foobar 0.9.5 Converter settings for TAK 1.0.3]]
[[Image:Tak_foobar_converter.png|frame|center|Screenshot of foobar 0.9.5 Converter settings for TAK 1.0.3 choosing -p2 compression level.]]
 


=== TAK with [[Exact Audio Copy]] ===
=== TAK in [[CUETools]] ===
Please read the [[EAC and TAK|wiki guide]], which details how to create TAK files with [[Exact Audio Copy|EAC]].
CUETools supports TAK out of the box if Takc.exe is in your ''PATH'' - or if a copy of Takc.exe is in in the CUETools folder.  Otherwise, one has to give the path to the exe in Settings, under the Encoders tab and the Decoders tab, for each profile (or edit the settings file).  Due to TAK not supporting Unicode, consider the "Force ANSI filenames" checkbox and make sure that also directory names are ANSI.




Line 115: Line 119:
* [https://hydrogenaud.io/index.php?showtopic=89610 TAK 2.2.0 Discussion Thread on HA]
* [https://hydrogenaud.io/index.php?showtopic=89610 TAK 2.2.0 Discussion Thread on HA]
* [https://hydrogenaud.io/index.php/topic,43179.0.html First HA discussion thread, working title ''Yet another lossless audio compressor'']
* [https://hydrogenaud.io/index.php/topic,43179.0.html First HA discussion thread, working title ''Yet another lossless audio compressor'']
* [http://audiograaf.nl/downloads.html Martijn van Beurden's lossless performance test] (Results retrieved from revision 4, the CDDA section.)
* [[Lossless_comparison| HA Wiki's Lossless Codec Comparison]] originally by [[User:Rjamorim|Rjamorim]]
* [[Lossless_comparison| HA Wiki's Lossless Codec Comparison]] originally by [[User:Rjamorim|Rjamorim]]
* [http://audiograaf.nl/downloads.html] Martijn van Beurden's lossless performance tests.


{{navbox audio codecs}}
{{navbox audio codecs}}


[[Category:Codecs]]
[[Category:Codecs]]

Revision as of 01:05, 2 January 2022

Tom's lossless Audio Kompressor (TAK) is a lossless audio compressor for the Windows platform (also known to work with Wine). It comes with both a command-line executable and a GUI, as well as a Winamp plugin.

TAK has gained recognition for its performance figures, achieving compression like Monkey's Audio “High” at same encoding time, and ditto for the even higher-compressing OptimFrog “Normal” - and while also decoding at speed (CPU load) second only to FLAC. TAK could beat every FLAC setting simultaneously on size and encoding time. (All other performance figures in this article taken from the 4th revision of Martijn van Beurden's comprehensive lossless comparison for CDDA audio.)


Features

  • Streaming support (necessary headers for decompressing the audio are written to the stream every 2 seconds)
  • Seeking without seek table
  • Piping support for encoding
  • Error handling: each frame protected by a 24-bit checksum for detection (also optional MD5 audio checksum for the entire file). According to the README, the decoder can decode through errors, and a single bit error will never affect more than 250 ms.
  • High-resolution audio support: up to 192 kHz sampling rate and 24-bit/channel
  • Support for up to six channels. Channel mask in WAVEFORMATEXTENSIBLE.
  • Tagging: APEv2 tags at end of file.
  • RIFF chunks supported.
  • Multi-core support (encoding only; the README warns that you will likely only benefit from physical CPU cores).

Limitations

  • Currently there is no hardware supporting the format and software support is limited. The official encoder/decoder is closed-source, but ffmpeg offers an open-source decoder.
  • Does not support floating-point PCM (for that, use WavPack or Optimfrog).
  • No Unicode support as of version 2.3.1. External applications can circumvent this (and e.g. foobar2000 does).
  • The encoder can only read .wav files for input. (The WAVE standard's 4 GB limitation can be circumvented by piping.)
  • It is a lossless-only format, with no hybrid lossless/lossy mode (for that, use WavPack or Optimfrog; for advanced users, TAK can be used with lossyWAV).


Software support

ffmpeg can decode TAK files on several platforms, and both the GUI (Tak.exe) and the command-line program (Takc.exe) work with Wine.

The MusicBrainz Picard tagger (multi-platform) supports TAK since version 0.11.

Windows-specific

  • TAK 2.3.1 download link - Official release which consists of a CLI, a GUI, the decoding library, the SDK, and a Winamp plugin.
  • TAK Decoder 0.5.4 - Plugin for foobar2000 (supports tagging and ReplayGain, uses the current (2.3.1) decoding library).
  • dsfTAKSource 0.0.1.6 - DirectShow source filter which uses the 2.2.0 decoding library to play TAK-files in Windows Media Player, Media Player Classic - Home Cinema, Zoom Player and alike.
  • DC-Bass Source Mod - DirectShow source filter which uses the 2.3.0 decoding library to play TAK-files, amongst many others, in any DirectShow media player (as mentioned above).
  • LAV Filters - Set of open-source DirectShow filters which uses FFMpeg's reverse-engineered decoder to play TAK-files in any DirectShow media player.
  • VLC Media Player - Can: transcode from/play (no encoding); since at least version 2.2.0
  • Media Player Classic - BE - DirectShow media player with an internal TAK source filter which uses FFMpeg's reverse-engineered decoder to play TAK-files. The internal TAK source filter also supports embedded cue-sheets.
  • Mp3tag – universal tag editor with support for TAK
  • shntool (since version 3.0.6)



Using TAK

For encoding/decoding through other software, see heading below; you can pass command-line options to those applications.

More exhaustive instructions are found in the README.html included in the official TAK distribution.

Encoding, decoding, test and verification

The following command-line parameters (and more!) are accessed through buttons and checkboxes in the GUI:

  • -e encodes, -d decodes; also, it can run test encoding/decoding by -te resp. -t.
  • -v verifies upon encoding; -md5 adds audio MD5 checksum for later verification.

Compression parameters and performance

The compression options are displayed by name in the GUI. The compression options range from -p0 to -p4, with each of the having an optional “e” (for “extra”) or “m” (“maximum”) modifier for additional compression at the expense of encoding (but not decoding) time, making for fifteen in total: -p0, -p0e, -p0m etc. The number (0 to 4) does affect decoding CPU load, but only modestly (van Beurden, figure 1.2.)

  • -p2 is the current default option. It is measured to compress on par with Monkey's “Normal”, but encoding at speeds between WavPack and FLAC default options.
  • -p0 is the fastest option, encoding around WavPack default and FLAC -6, but 2-3 times faster.
  • -p4m is the slowest option for highest compression (though at very small improvement over -p4e), encoding in size and speed on par with OptimFrog “Normal”, slightly between Monkey's “High” and “Extra high”, while decoding at 10-15 percent of their CPU load.

Command-line examples, including pipe redirection

Basic encoding resp. decoding commands are

Takc -e input.wav
Takc -d input.tak

Example with more parameters: The following will encode input.wav to output.tak using compression level “p3e”, write an MD5 checksum, and afterwards verify the encoded file:

Takc -e -p3e -md5 -v input.wav output.tak

Examples decoding TAK with pipe to .mp3/.opus/.flac/.wv:

Takc.exe -d input.tak - | lame.exe -V 6 - output.mp3
Takc.exe -d input.tak - | opusenc.exe --bitrate 64 - output.opus
Takc.exe -d input.tak - | flac.exe -8 - -o output.flac
Takc.exe -d input.tak - | wavpack.exe -hhx - output.wv

Examples encoding TAK from FLAC, WavPack resp. arbitrary ffmpeg-supported (16-bit) format:

flac.exe -dc input.flac | Takc.exe -e -p1e - output.tak
wvunpack.exe input.wv - | Takc.exe -e -p4m - output.tak
ffmpeg.exe -i input.xxx -f wav - | Takc.exe -e -p0 -ihs - output.tak


Using TAK in other applications

Ripping CDs to TAK with Exact Audio Copy

wiki guide details how to rip CDs to TAK with EAC.


Playing and converting to/from TAK with foobar2000

For decoding, use the foo_input_tak component (current version using the 2.3.1 decoding library).

For encoding:

  • Select files, right-click, select Convert and the “...”
  • Under Output format, click Add New and set it up as shown below (note: replace -p2 with the desired compression level).
  • Upon first conversion, foobar2000 will ask you to navigate to locate Takc.exe .
Screenshot of foobar 0.9.5 Converter settings for TAK 1.0.3 choosing -p2 compression level.

TAK in CUETools

CUETools supports TAK out of the box if Takc.exe is in your PATH - or if a copy of Takc.exe is in in the CUETools folder. Otherwise, one has to give the path to the exe in Settings, under the Encoders tab and the Decoders tab, for each profile (or edit the settings file). Due to TAK not supporting Unicode, consider the "Force ANSI filenames" checkbox and make sure that also directory names are ANSI.


Links