@timvanscherpenzeel/audiopacker
v0.0.1
Published
CLI tool for packing multiple audio sprites into a single audio file.
Downloads
4
Readme
Audiopacker
CLI tool for packing multiple audio sprites into a single audio file.
Inspired by GLB File Format Specification and audiosprite.
Installation
Make sure you have Node.js installed.
$ npm install -g --save @timvanscherpenzeel/audiopacker
CLI Usage
$ node ./bin/audiopacker.js -i ./input -o ./output/example.audiopack -vb
$ node ./bin/audiopacker.js -i ./input/manifest.json -o ./output/example.audiopack -vb
Manifest structure
{
"path": "./input/",
"manifest": [
{
"src": "010-0-start.mp3"
},
{
"src": "010-1-loop.mp3"
}
]
}
File structure
An .audiopack
file has the following structure (very similar to the GLB File Format Specification):
Figure from the GLB File Format Specification.
Endianness
Audiopack
is little endian.
12-byte header
The 12-byte header consists of three 4-byte entries:
uint32 magic
uint32 version
uint32 length
magic
equals0x504e4942
. It is ASCII stringAUDP
, and can be used to identify data asAudiopack
.version
indicates the version of theAudiopack
. This specification defines version 1.length
is the total length of theAudiopack
file, including Header and all Chunks, in bytes.
JSON chunk header
A single JSON chunk header
The JSON chunk header has a field that marks the length of the JSON chunk (uint32 chunkLength
) and a type (uint32 chunkType
) marked JSON
in ASCII.
JSON chunk
A single JSON chunk
The JSON chunk (ubyte[] chunkData
) contains a stringified JSON description of the processed files: name
, bufferStart
, bufferEnd
and mimeType
. The difference between bufferStart
and bufferEnd
describe the length of the file. This length is used to extract the correct amount of bytes per file from the binary chunk that follows next.
Binary chunk header
A single binary chunk header
The binary chunk header has a field that marks the length of the binary chunk (uint32 chunkLength
) and a type (uint32 chunkType
) marked BIN
in ASCII.
Binary chunk
A single binary chunk
The binary chunk (ubyte[] chunkData
) contains a single Uint8Array
typed array buffer that has been constructed out of concatenated files. Using the data described in the JSON chunk one can correctly extract the file from the binary chunk.
Flags
Required
-i, --input [example: ./input (glob) or ./input/manifest.json (manifest)] [required]
-o, --output [example: ./output/example.mp3] [required]
Optional
-vb, --verbose [true / false, default: false] [not required]
License
My work is released under the MIT license.