acxi man page

Page Updated: 2019-08-14
acxi version: 3.3.14

The following are the supported options of acxi. If your version of acxi is missing any of these options, update to the newest version, or file an issue report with your distro to have them update their acxi package.

ACXI(1) acxi manual ACXI(1)

acxi - Command line audio conversion tool

Syncing: acxi [-a extensions] [--clean] [ -c extensions] [ -d destination-path] [-f] [--fork 0-xx] [ -i {flac|raw|shn|wave}] [-o {flac|mp3|ogg|opus}] [ -q NUMBER] [ -s source-path]
Tagging: acxi [--autotag] [--autotag-create] [ --autotag-create-single] [ --autotag-create-multi {filename start ID}] [ --aggregate] [--alt-ag {file name}] [ --no-replaygain] [ --remove-images]
Checksums: acxi [--checksum] [--checksum-delete] [ --checksum-verify]
Output Controls: acxi [--basic] [--full] [ --log {0-3}] [ --quiet] [--verbose]
Miscellaneous: [-h] [-U] [-v]
Debugging: acxi [--debug] [--nlink] [ --no-nlink] [ --test]

acxi is a command line audio conversion program. It converts and syncs all desired source lossless files to the desired output format, and to adifferent directory location.
Supports lossless input formats flac/raw/shn/wav. Output formats are flac, ogg, opus, or mp3. raw/shn can only output to flac. mp3 can only have flac as input format.
By default, it will also copy over most common filetypes like gif, jpg, png, txt, pdf, doc, docx, and a few others. You can change the defaults using a configuration file, or the -c or -a options..
The destination directory cannot be the same as the source directory, but it can be inside of the source directory.
It can also generate md5 and ffp checksum files if required, as well as tag using auto.tag method.
acxi runs pretests on each start to make sure input and output directories are valid, conversion programs for input and output formatting programs are present, and other user values are correct.

For backward compatibility, acxi requires only Perl 5.010 (or newer), so it should run on anything. Several features (copy, make directory, find files) were moved from *nix commands to Perl native commands in version 3, which should make acxi fully platform agnostic.
Ogg encoding requires oggenc (Debian/Ubuntu package: vorbis-tools).
Opus encoding requires opusenc (Debian/Ubuntu package: opus-tools).
MP3 encoding requires: lame and flac. Source file must be flac. MP3 encoding does not support wav or raw input formats.
SHN -> FLAC conversion requires the codec shorten and ffmpeg.
--autotag requires metaflac for VORBIS tagging.
--checksum and --checksum-delete require ffmpeg and md5sum (or any comparable program that generates md5sums). Md5 generating logic may be moved to straight Perl to remove the md5 program requirement.
--checksum-verify require flac executable and md5sum (or any comparable program that generates md5 hashes).
-U Self-updater requires curl.
In theory, acxi 3.x should run on Windows and Macs, but I have not tested that, but as long as the source/destination directory paths and the application/configuration paths are correct, it should 'just work'.

For example: acxi -o mp3 or acxi -fo opus or acxi -d /home/you/music
Note that some options have long and short forms. The short form is used when available in examples in order to keep things simple.

Collect all the auto.tag files in a source directory and send to a target directory. Useful to collect data for a large collection:
Sample: acxi --aggregate -s my-music -d music-data
Defaults to creating the directories the files were found in in the destination directory, but with the added optional argument 'file' it will instead create files made out of the directory name and the file name. Only use that if it's a single level deep directory or it won't work.
--alt-ag [file name]
When used with --aggregate, will aggregate the file name given instead of the default auto.tag file name.
Sample: acxi --aggregate --alt-ag info.txt -s my-music -d music-data
--append [extensions], -a [extensions]
Takes one or more comma separated extensions. Do not use whitespaces in this list. These will be appended on to the current list being used on a one time basis. This can be useful if you want to copy over a specific file type for one sync action without having to make a full list with -c.
Sample: acxi -a md5 will add md5 file type to copy list.
--autotag, -A
Requires specially formatted file, default name auto.tag, to be put into each music collection directory. See the file for explanations.
FLAC input files only. OGG/Opus may be added. Will search source directory for auto.tag and update each collection/album that has that file present with the tagging information contained in it.
Note that all existing tags are removed. Default is to preserve the existing REPLAYGAIN tags in the auto.tag file since the assumption is those were generated for a reason.
See github acxi page for a blank sample file, but make sure to use --autotag-create, --autotag-create-single, or --autotag-create-multi [prefix] because it's a LOT faster that way, and you don't have to find the file. These file builders also preserve existing REPLAYGAIN and WAVEFORMATEXTENSIBLE_CHANNEL_MASK data found in the track file.
Notes on IMAGE: Avoid using large images, and as far as I can tell, there's no point in using anything other than the standard image down to around 30-60 KiB, 300-400 pixel width. If you make a mistake, or want to undo the images, use --remove-images --autotag after updating the auto.tag file by either removing the value for IMAGE or changing the value. Most media players I tested on only pay attention to the main image, and only one of them. Don't use a flac file as a way to store large high resolution images as a general rule, it just makes the entire collection pointlessly bloated.
--autotag-create, -C
Creates the auto.tag file in the directory, and populates it with field names, and per track blocks that include the track file name so you can just fill out the fields you want. Will also populate the TRACKNUMBER and TRACKTOTAL fields if you use the --autotag-create-single or --autotag-create-multi options instead.
All existing REPLAYGAIN tags for the audio files are preserved and used in the auto.tag file. If want to remove those, use the --no-replaygain option.
--autotag-create-multi [file prefix], -M [file prefix]
Similar to autotag-create-single except it includes a prefix argument which is the unique per disk track file name ID. Uses % to indicate a number between 1 and 9.
Samples: -M d% [d1track02.flac]; -M d%- [d2-track04.flac];0; -m % [112.flac]; -M 2015-03-21.d%. [2015-03-21.d1.track03.flac]
This will create prepopulated DISCTOTAL, per disk DISCNUMBER and TRACKTOTAL, and per track TRACKNUMBER fields. This saves a lot of time when tagging multi disk sets.
Caveat: does not work with per disk subfolders, sorry.
--autotag-create-single, -S
When creating auto.tag file, as well as populating the per track file names, it also fills in the TRACKTOTAL and TRACKNUMBER fields.
Do not use for multidisk recordings since the totals per disk and the track numbering for the second or more disks will be wrong, but for single disks, it will speed up slightly the time required to manually populate the auto.tag file.
Single line per operation screen output, default value for acxi. Same as --log 1
--checksum, -K
Create .ffp and .md5 checksum files in your source directory. Checksum files are only created inside directories where flac files are found. Use --checksum-delete if you also want to delete existing checksum files before creating new ones. Only flac input type is supported.
This will not create md5 sums for for files in directories that do not contain flac files, because that creates a very complicated logical puzzle which is hard to accurately or reliably resolve in code.
Do not use together with other cleaning/syncing options!
--checksum-delete, -D
Will first delete all .md5, .md5.txt, .ffp, and .ffp.txt files before creating new checksum files. Note that some audio processing tools add .txt to the checksum file name, which creates undesirable outcomes since some tools that use .ffp or .md5 files don't recognize the files if they have the .txt extension added on.
I can think of very few reasons to want to preserve .ffp or .md5 files, since they should in general reflect what the actual files you have are.
--checksum-verify, -V
Will read existing .md5 files and compare md5 hash of files listed in the md5 file with the actual checksums of those files. Also will verify FLAC integrity (this is pretty slow, so be patient).
Note that when reading md5s, it does not matter if they are windows or *nix path styles (/ or ), it translates them to the one on your system. It also ignores line endings, which makes reading windows generated md5 files on *nix systems a breeze.
Clean directories and files from destination (compressed) directories which are not present in the source music directories. Will show you the directories or files to be removed before deleting them, and you have to confirm the deletion of each set two times before it will actually delete it. Runs before the syncing starts.
Take care with this one, if you have other compressed formats in your compressed directory than your default $OUTPUT_TYPE format, it will want to delete all those, so do not use this option unless your compressed directories are literal true copies of your source directories.
To confirm deletion of each group, you must first type 'delete' then hit enter, then type 'yes' to confirm the deletion. This should avoid errors and unintended deletions.
Note that this feature does not run in silent/quiet mode because it should never be used automatically, or without explicit confirmation by the user. It can be enabled using the CLEAN configuration option below so that acxi always cleans up before it starts syncing.
--copy [extensions], -c [extensions]
Comma separated list of extensions for file types you want to sync to your lossy music directory. Overrides default values. Use lowercase, but it's case insensitive internally. Do not include the period in the extension.
Default values are: bmp doc docx gif jpg jpeg odt pdf png tif txt
If you use no value, it will not copy anything.
Sample: -c txt,pdf,png,jpg,jpeg,gif
All output available, including debugger data for some events. Same as --log 4
--destination [path], -d [path]
Full path to the directory where you want the processed lossy (eg, ogg) files to go.
--force, -f
Overwrites all the mp3/ogg/opus/jpg/txt etc. files, even if they already exist. This is useful if you for example want to change compression quality on existing files.
--fork [0-xx], -F
Uses Perl module Parallel::ForkManager to allow for forking of audio file conversions actions. This can speed up your syncing a lot depending on how many threads your CPU can support and how many you assign with this option.
Supports integer values 0 or greater, but tests show 1 is slower than not using forking at all. 0 is default, and disables forking.
Some debugging features will be slightly distorted if fork is used, but it is only cosmetic.
See also configuration file option FORK if you want to set this permanently.
Please note that this can have strange consequences if you run it on a huge job, even if you use only half your threads, the system can still act strange as a result of running it with multiple forks.
Full screen output, including full verbosity of flac / oggenc / opusenc / lame conversion tools for flac, mp3, ogg, or opus output. Same as --log 3
--help, -h
This help menu.
--input [flac|raw|shn|wav], -i [flac|raw|shn|wav]
Input type. Supported types: flac, wav, raw, shn.
raw/shn - only support flac output.
shn - requires the shorten codec, which you usually have to build yourself unless you can find a package for it. Use --log 3 to test the first time to make sure you have shorten codec installed.
--log [0-4]
Dynamically set LOG_LEVEL. Helps for debugging certain types of issues where you might want to see the full level 3 debugging information from audio codec conversions for example.
0 - shuts off all output except errors. Same as --quiet.
1 - basic single line output. Same as --basic.
2 - more verbose output. Same as --verbose.
3 - full output, incuding all conversion tool output. Same as --full.
4 - debug output, includes some extra debugging data. Don't use in general. Same as --debug.
Set $File::Find::dont_use_nlink = 0. Default is 1. Only change this if you have a reason to do so. Setting value to 0 may make cifs type file system reads fail, on a samba network share for example. If you encounter issues with the default value, please post an issue on the acxi github page.
See this PerlMonks thread for an explanation:
Set $File::Find::dont_use_nlink = 1. This is the default value. See --nlink for details.
Remove any existing REPLAYGAIN and WAVEFORMATEXTENSIBLE_CHANNEL_MASK tags when creating a new auto.tag file. See --autotag-create for details.
--output [flac|mp3|ogg|opus], -o [flac|mp3|ogg|opus]
Output type. Supported types: flac, ogg, opus, mp3
mp3 - only supports flac input type
flac - only supports shn, or raw input types.
--quality [number], -q [number]
Set compression quality level.
mp3 - n can be an integer between 0-9 (variable bit rate), 0 is largest file / highest quality.
ogg - n can be between -1 and 10. 10 is the largest file/highest quality. Fractions are allowed, e.g. -o ogg -q 7.54
opus - n can be an integer between 6-256 (bitrate). 256 is largest file/highest quality.
Note that using a higher or lower quality than you used to create the compressed files will not result in redoing those files unless you use the -f / --force option to force the overwrite of the existing files.
--quiet, --silent
Turns off all screen output, except for error messages. Same as --log 0
Use with --autotag. Will remove all embedded image data, and the associated padding, prior to tagging (and adding new image if applicable) audio file. Note that simply removing image data will leave the padding in place.
This is the full command required to fully restore a flac file size. Failure to use --dont-use-padding leaves the file size unchanged.
metaflac --remove --block-type=PICTURE,PADDING --dont-use-padding file.flac
--source [path], -s [path]
Path to the top-most directory containing your source files (eg, flac).
Test your configurations, copy, sync, checksum, and tagging actions without actually doing the operations. Activates --full as well for more complete output.
--update, -U
Self updater, will update acxi and its man page. Non GNU/LInux will probably require changing the default values, which are set in USER VARIABLES for curl, acxi and man page acxi.1. Requires curl.
Without full verbosity of full, no flac/oggenc/opusenc/lame for mp3, ogg, or opus conversion process screen output, but more verbose than default. Same as --log 2
--version, -v
Show acxi version.

You can see by running acxi -h the configuration file locations.
acxi will read its configuration/initialization files in the following order.
/etc/acxi.conf contains the default configurations. These can be overridden by user configurations found in one of the following locations.
If $XDG_CONFIG_HOME/acxi.conf exists, it use it, else if $HOME/.conf/acxi.conf exists, it will use it, and as a last default, the legacy location $HOME/.acxi.conf is used, i.e.:
$XDG_CONFIG_HOME/acxi.conf > $HOME/.conf/acxi.conf > $HOME/.acxi.conf
$CONFIG_DIRECTORY - Sample: $CONFIG_DIRECTORY='/path/to/configuration/directory'
NOTE: only use this method if you are running Windows, or any OS without $HOME or $XDG_CONFIG_HOME environmental variables, or if you want the configuration file to be located somewhere else.
This value must be set on top of acxi in the USER MODIFIABLE VALUES section because that is what it will use to locate the configuration file. acxi will look for acxi.conf inside that directory. This path value will override/ignore all other configuration files.

The following corresponds to the USER MODIFIABLE VALUES section in the top comment header of acxi.
The following set your system path for the required applications:
COMMAND_FFMPEG - Sample: COMMAND_FFMPEG=/usr/bin/ffmpeg (default path)
COMMAND_FLAC - Sample: COMMAND_FLAC=/usr/bin/flac (default path)
COMMAND_LAME - Sample: COMMAND_LAME=/usr/bin/lame (default path)
COMMAND_OGG - Sample: COMMAND_OGG=/usr/bin/oggenc (default path)
COMMAND_OPUS - Sample: COMMAND_OPUS=/usr/bin/opusenc (default path)
CLEAN - Sample: CLEAN=true Switches on/off --clean to apply cleaning action to your destination directories. Accepted values: [enable|on|true|yes] or [disable|off|false|no]. Default is false.
This the original, working, like flac, wav, etc.
This is the processed compressed music files, ie, ogg, opus, or mp3. Destination cannot be the same as Source directory, although it can be inside of the source directory.
The following are NOT case sensitive,ie flac/FLAC, txt/TXT will be found. INPUT_TYPE and OUTPUT_TYPE will be forced to lower case internally.
Changing quality levels will not redo existing files.
COPY_TYPES - Sample: COPY_TYPES=doc,docx,bmp,jpg,jpeg Use this to override the default file types acxi will sync. Set to 'none', if you only want to sync the music files, not copy over images, text files, etc.
QUALITY_FLAC - Sample: QUALITY_FLAC=5 Supported values: 0-8. 0 is the largest file size / fastest to run. NOTE: this is not currently used.
QUALITY_MP3 - Sample: QUALITY_MP3=2 Supported values: 0-9. 0 is the largest file size / highest quality.
QUALITY_OGG - Sample: QUALITY_OGG=8.25q Supported values: -1 to 10. 10 is the largest file size / highest quality. Supports fractions.
QUALITY_OPUS - Sample: QUALITY_OPUS=256 Supported values: 6-256. 256 is the largest file size / highest quality / best bitrate.
These only apply to the --autotag option, and set a different name for the default auto.tag filename. The filename must be unique and never occur in any other context in your music collection files.
TAG_FILE - Sample: TAG_FILE=autotags.tag
auto.tag - Thes filename to be used to autotag. Default is auto.tag. Filename must be unique, and not be found anywhere else in your collection. Do not change unless you have a very good reason to.
These only apply to the --checksum option, and set a different name than the default file names used in the top section of acxi. Note that the names should not include an extension, since that is added on automatically.
FFP_FILE - Sample: FPP_FILE=fingerprint This is the name of the generated .ffp file, not including the .ffp extension, you want your flac ffp files to have.
MD5_FILE - Sample: MD5_FILE=checksum This is the name of the generated .md5 file, not including the .md5 extension, you want your md5 checksum files to have.
The following are advanced options which should only be used if you know what you are doing:
DONT_USE_NLINK - Sample: DONT_USE_NLINK=0 This sets File::Find::dont_use_nlink to 0 or 1. 1 is default. Generally you should be using 1, but in certain cases 0 may be faster. Test using the --nlink option to disable nlink, and see that option for more information.
FORK - Sample: FORK=4 This uses Perl's Parallel::ForkManager and accepts values of 0 or more. Note that 0 will not create a fork. See --fork for details. Using this will speed up your syncing a lot if you have more than a 1 core CPU.
You can change LOG_LEVEL either at the top of the acxi file itself, or in the configuration file, by setting the verbosity/debugging level to what you want.
Sample: LOG_LEVEL=3
0 - quiet/silent - no output at all (except for errors).
1 - basic - single line per operation. This is the default, so you don't need to change it.
2 - verbose - but without the actual conversion data from codecs
3 - full - all available information. Note: with -F / --fork conversion output may be ordered somewhat randomly since it shows each thread's results as it completes as well as when it started.
4 - debug - all available plus some specialized debugging information.
These are only for the -U self updater feature. The path defaults must be changed for non-GNU/Linux systems in most cases.
COMMAND_CURL - Sample: COMMAND_CURL=/usr/local/bin
MAN_DIRECTORY - Sample: SELF_DIRECTORY=/usr/share/man/man1 This is the directory the man page is in.
SELF_DIRECTORY - Sample: SELF_DIRECTORY=/usr/bin This is the directory that acxi is in.

Please report bugs using the following resources.
Issue Report
File an issue report:
Post on acxi forums:
You can also visit channel: #smxi to post issues.

acxi is a fork and full rewrite of
Copyright (c) Harald Hope, 2010-2019
Forking logic: prupert. 2019-07
MP3 tagging: Odd Eivind Ebbesen - - <oddebb at gmail dot com>
Copyright (c) ( 2004 - Jason L. Buberel -
Copyright (c) ( 2007 - Evan Boggs -
Thanks for trying acxi out, I hope it's useful to you.
2019-08-14 acxi