<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs-staging.asasense.com/index.php?action=history&amp;feed=atom&amp;title=ASAsense_Binary_Table_%28ABT%29_format%2Fen</id>
	<title>ASAsense Binary Table (ABT) format/en - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://docs-staging.asasense.com/index.php?action=history&amp;feed=atom&amp;title=ASAsense_Binary_Table_%28ABT%29_format%2Fen"/>
	<link rel="alternate" type="text/html" href="https://docs-staging.asasense.com/index.php?title=ASAsense_Binary_Table_(ABT)_format/en&amp;action=history"/>
	<updated>2026-10-17T04:43:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://docs-staging.asasense.com/index.php?title=ASAsense_Binary_Table_(ABT)_format/en&amp;diff=688&amp;oldid=prev</id>
		<title>FuzzyBot: Updating to match new version of source page</title>
		<link rel="alternate" type="text/html" href="https://docs-staging.asasense.com/index.php?title=ASAsense_Binary_Table_(ABT)_format/en&amp;diff=688&amp;oldid=prev"/>
		<updated>2026-10-14T10:25:42Z</updated>

		<summary type="html">&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
The ASAsense Binary Table (ABT) format is an alternative to the CSV format, but for binary data with fixed row lengths. The structure is as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! length (bytes)&lt;br /&gt;
! type&lt;br /&gt;
! allowed values&lt;br /&gt;
! explanation&lt;br /&gt;
|-&lt;br /&gt;
| file_type&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| The internal number of the file type and version&lt;br /&gt;
|-&lt;br /&gt;
| n_cols&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| 1-u32::max&lt;br /&gt;
| The number of columns&lt;br /&gt;
|-&lt;br /&gt;
| col_widths&lt;br /&gt;
| 4 × n_cols&lt;br /&gt;
| u32[n_cols]&lt;br /&gt;
| 1-u32::max per column&lt;br /&gt;
| n_cols u32 integers describing the byte width of the columns&lt;br /&gt;
|-&lt;br /&gt;
| metadata_length&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| 0-u32::max&lt;br /&gt;
| The length of the metadata field (can be 0 if it is to be skipped)&lt;br /&gt;
|-&lt;br /&gt;
| metadata&lt;br /&gt;
| metadata_length&lt;br /&gt;
| char[]&lt;br /&gt;
| string of fixed length (so no &amp;#039;\0&amp;#039; character marks the end of the string)&lt;br /&gt;
| JSON-encoded metadata&lt;br /&gt;
|-&lt;br /&gt;
| data&lt;br /&gt;
| variable, until EOF&lt;br /&gt;
| byte[]&lt;br /&gt;
| any&lt;br /&gt;
| The actual data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The JSON metadata should be an object with the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! field&lt;br /&gt;
! required&lt;br /&gt;
! type&lt;br /&gt;
! explanation&lt;br /&gt;
|-&lt;br /&gt;
| n_rows&lt;br /&gt;
| false&lt;br /&gt;
| number&lt;br /&gt;
| The number of rows in the file, if known upfront (can be omitted for streaming data)&lt;br /&gt;
|-&lt;br /&gt;
| comment&lt;br /&gt;
| false&lt;br /&gt;
| string&lt;br /&gt;
| A free string&lt;br /&gt;
|-&lt;br /&gt;
| columns&lt;br /&gt;
| true&lt;br /&gt;
| a list of column definition objects&lt;br /&gt;
| A list of objects describing the columns in more detail (should have n_cols entries)&lt;br /&gt;
|-&lt;br /&gt;
| extra&lt;br /&gt;
| false&lt;br /&gt;
| JSON object&lt;br /&gt;
| A JSON object that can be specified freely&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;column definition object&amp;quot; should have the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! field&lt;br /&gt;
! required&lt;br /&gt;
! type&lt;br /&gt;
! explanation&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| false&lt;br /&gt;
| string&lt;br /&gt;
| An optional name of the column&lt;br /&gt;
|-&lt;br /&gt;
| comment&lt;br /&gt;
| false&lt;br /&gt;
| string&lt;br /&gt;
| A free string&lt;br /&gt;
|-&lt;br /&gt;
| datatype&lt;br /&gt;
| true&lt;br /&gt;
| string&lt;br /&gt;
| An identifier for the datatype of the column&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The datatype identifiers can be anything, but the reader should support at least the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! identifier&lt;br /&gt;
! description&lt;br /&gt;
|-&lt;br /&gt;
| utf8&lt;br /&gt;
| Interpret the data as a UTF-8 string (with fixed length; it does not need to be terminated with &amp;#039;\0&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
| int&lt;br /&gt;
| Interpret the data as a signed integer&lt;br /&gt;
|-&lt;br /&gt;
| uint&lt;br /&gt;
| Interpret the data as an unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Interpret the data as floating-point data (only possible for 4- or 8-byte fields)&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| Boolean value (0 = false, anything else = true)&lt;br /&gt;
|-&lt;br /&gt;
| numtype/div&lt;br /&gt;
| &amp;quot;div&amp;quot; should be replaced by any floating-point number. The data is first interpreted as &amp;quot;numtype&amp;quot; (int, uint or float) and then divided by &amp;quot;div&amp;quot;. This is mainly useful for storing decimal numbers in integer fields.&lt;br /&gt;
|-&lt;br /&gt;
| unix_timestamp(numtype/div)&lt;br /&gt;
| Interprets the data as specified within the brackets (so any numtype, with optional divider), but takes into account that it is a Unix timestamp (seconds since the Unix epoch, 1 January 1970 at UTC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other, unknown datatype identifiers should be treated by the reader as opaque binary data (bytes).&lt;br /&gt;
&lt;br /&gt;
== Common extra metadata fields ==&lt;br /&gt;
&lt;br /&gt;
In many ABT files used by ASAsense, the following extra metadata fields will be found:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field name&lt;br /&gt;
! Field type&lt;br /&gt;
! Default value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| sorted_by_timestamp&lt;br /&gt;
| bool&lt;br /&gt;
| true&lt;br /&gt;
| Indicates whether the data in the ABT file is sorted by timestamp (column 1)&lt;br /&gt;
|-&lt;br /&gt;
| frame_width_s&lt;br /&gt;
| float&lt;br /&gt;
| NaN&lt;br /&gt;
| Indicates the frame width of one sample (for example the sampling period or spectrogram frame width)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CLI tool for ABT handling ==&lt;br /&gt;
&lt;br /&gt;
To make the ABT format easier to use, a few precompiled binaries are available:&lt;br /&gt;
* Linux&lt;br /&gt;
** [http://asasense.com/abt-binaries/abt-cli-ubuntu-22.04-x86_64.zip Ubuntu 22.04 x86_64]&lt;br /&gt;
** [http://asasense.com/abt-binaries/abt-cli-ubuntu-20.04-x86_64.zip Ubuntu 20.04 x86_64]&lt;br /&gt;
* [http://asasense.com/abt-binaries/abt-cli-win11-x64.zip Windows 11 x64]&lt;br /&gt;
The MD5 sums of the ZIP files are as follows:&lt;br /&gt;
 adcd6a227861bb6b188ef8c5748faae8  abt-cli-ubuntu-20.04-x86_64.zip&lt;br /&gt;
 6f4c63cbd7416ead026f170c97b3ab89  abt-cli-ubuntu-22.04-x86_64.zip&lt;br /&gt;
 39db54827d2634262d9d666b4262b212  abt-cli-win11-x64.zip&lt;/div&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
</feed>