acxi man page

Page Updated: 2021-12-06
acxi version: 3.5.02

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

Most of the commonly used options have short forms to make typing the commands faster.

  • Directories: acxi [--destination, -d {destination-path}] [--source, -s {source-path}] [--source-glob, -g {relative path}]
  • Analyze: [--z-min-size {0-xxx}] [--z-min-time {0-xxx}]
  • Checksums: acxi [--analyze, -Z] [--checksum, -K] [--checksum-delete, -D] [--checksum-ffps, --ffps] [--checksum-verify, -V] [--duplicates, --dupes] [--ffprobe] [--no-ffp] [--no-md5]
  • Syncing: acxi [--append, -a {extensions}] [--clean] [--codec {aac|libfdk_aac2}] [--copy, -c {extensions}] [--dither {dither-type}] [--dot] [--exclude, -x {filename|extension}] [--exclude-append, -y {filename|extension}] [--force, -f] [--fork, -F {0-xx}] [--input, -i {flac|raw|shn|wave}] [--output, -d {flac|mp3|ogg|opus}] [--no-dot] [--quality, -q {NUMBER}] [--resample {bit-depth:sample-rate}]
  • Tagging: acxi [--autotag, -A] [--autotag-create, -C] [--autotag-create-single, -S] [--autotag-create-multi, -M {filename start ID}] [--image, -I {cover image filename}] [--infofix, -X [d|l|n|q|t|u|w]] [--info-rating {2-xxx} [--multiartist, --ma {[at|ta]:separator}] [--prefill, -E] [--prefill-file {release info file name}] [--no-replaygain] [--recurse {-1-xx}] [--remove-images, -R] [--remove-padding, -P] [--start {0-xx}] [--tag, -T] {"TAG1%:tag value^^TAG2%:tag value"}]
  • Info: acxi [--help, -h] [--version]
  • Miscellaneous: acxi [--aggregate, -G [file name|extension]] [--update, -U]
  • Output Controls: acxi [--verbosity, -v {0-3}] [--quiet]
  • Debugging: acxi [--debug] [--nlink] [--no-nlink] [--test]

acxi is a command line audio conversion program and audio processing program. It converts and syncs all desired source lossless files to the desired output format, and to a different directory location.

Supports lossless input formats aiff/flac/raw/shn/wav. Output formats are flac, ogg, opus, aac/m4a, or mp3. aif/raw/shn can only output to flac. aac, m4a, mp3 can only have flac as input format. Resampling can only have flac as input and output formats.

By default, syncing will also copy over most common filetypes like gif, jpg, png, and txt. You can change the defaults using a configuration file, or using 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 or verify md5 and ffp checksum files if required, as well as tag/embed images using auto.tag or --tag / --image [filename] methods.

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.

  • AAC/M4A encoding requires ffmpeg with either libfdk_aac (Debian/Ubuntu package: libfdk_aac2) or native ffmpeg aac codec. Source file must be flac. To transfer tags, m4a must be used.
  • FLAC resampling requires ffmpeg and metaflac (for source file sample rate data).
  • MP3 encoding requires: lame and flac. Source file must be flac. MP3 encoding does not support wav or raw input formats.
  • Ogg encoding requires oggenc (Debian/Ubuntu package: vorbis-tools).
  • Opus encoding requires opusenc (Debian/Ubuntu package: opus-tools).
  • SHN -> FLAC conversion requires the codec shorten and ffmpeg.
  • --analyze, --duplicates, --ffps, and --infofix q require metaflac (with the following exception).
  • --analyze, --infofix q require ffprobe for non flac input types, or if using --ffprobe option with flac.
  • --autotag, --tag, --image, and --image-remove require metaflac for VORBIS tagging.
  • --checksum and --checksum-delete require metaflac and md5sum (or any comparable program that generates md5sums).
  • --checksum-verify requires the flac executable and md5sum (or any comparable program that generates md5 hashes).
  • --fork requires Perl module Parallel::ForkManager.
  • --infofix [t|u] require Perl module Text::Autoformat.
  • -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.

All tagging or checksum options (-A, -C, --dupes, -D, -E, --ffps, -G, -I, -K, -M, -P, -R, -S, -T, -V, -Z) must have an explicit source (-s) location supplied to avoid errors.

Collect all the auto.tag files in a source directory and send to a target directory. Useful to collect data for a large collection. You can supply a list of comma separated items: jpg,info.txt,myart.png

Creates the directories the files were found in in the destination directory.

If no extra argument is supplied, it will default to collecting all the auto.tag files in the source directory.

Sample 1 (collects all auto.tag files):

acxi --aggregate -s my-music -d music-data
Sample 2 (collects all supplied filename):
acxi --aggregate info.txt -s my-music -d music-data
Sample 3 (collects all files of type jpg):
acxi --aggregate jpg -s my-music -d music-data
Sample 4 (collects multiple values):
acxi --aggregate jpg,info.txt,png -s my-music -d music-data
Similar to -Xq, except creates per file/directory reports with screen output. Shows input tye file quality (sample bit size, sampling rate, and channels), size, duration, kb/s, and also per directory summaries of those values. In directory summary, if more than one input file quality type found in directory, will print out each type found, which can be useful to see if different sampling rates or sample bit sizes were used.

To write to a file, use something like this:

acxi -s./ --analyze 2&>1 | tee analyze.txt
The tee will allow the output to also scroll on screen while it runs, which is helpful in many cases. Otherwise just redirect output to file directly.

-v 0 turns off per file reports, and shows only per directory summary; -v 2 wraps per file data to key: value pair lines, adds ffp signature (flac only); -v 3 adds raw non rounded seconds and file size in bytes to all size / time results.

Note that default for flac is metaflac, unless you use --ffprobe, which does not have hashes. Use metaflac for flac, it's about 25x or more faster than ffprobe!!

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.

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 'cover' type image (type 3). Keep sizes down by optimizing the 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.

Can be used with -K or -D for all in one tag checksum actions.

See --tag or --image for updating/modifying existing FLAC comment values, or adding images to your FLAC files.

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. Not recommended.

if you use the --autotag-create-single or --autotag-create-multi options instead Will also populate the TRACKNUMBER and TRACKTOTAL fields.

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.

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, or @ to indicate an upper/lower case letter from A to Z.

Use together with -E (--prefill) To prepopulate the ALBUM, ARTIST, ALBUMARTIST, PERFORMER, DATE, YEAR, and TITLE fields as well.

Samples: -M d% [d1track02.flac]; -M d%- [d2-track04.flac]; -M % [112.flac]; -M 2015-03-21.d%. [2015-03-21.d1.track03.flac]

-M d@- [dAtrack02.flac]; -M d@- [dB-track04.flac];0; -M @ [a12.flac]; -M 2015-03-21.d@. [2015-03-21.da.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.

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.

Use together with -E (--prefill) To prepopulate the ALBUM, ARTIST, ALBUMARTIST, PERFORMER, DATE, YEAR, and TITLE fields as well.

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. Can be used with -A.

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.

Do not use together with other cleaning/syncing options. Can be used with -A.

Prints checksums to screen, disables md5 generation and output. Useful for generating large lists of ffps for a collection.

Similar to: acxi -K --no-md5 --test

Sample (prints to screen, redirects stderr to stdout, prints to file):

acxi -s ./ --ffps 2>&1 | tee ffps.txt

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. If used with optional value sync, will proceed to sync actions, otherwise exits after cleaning.

The paths provided by -s and -d must be relative to either root or $HOME:

acxi --clean -s /home/fred/music -d /home/fred/music/opus
acxi --clean -s ~/music -d ~/music/opus

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.

Currently only supported for aac/m4a output using ffmpeg.

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

Activate specialized debugger output. Don't use unless you are asked to, or are a developer or something like that.

Full path to the directory where you want the processed lossy (eg, ogg) files to go. Cannot start with ../.

Use with --resample and if you want to use a different dither type than default shibata. Possible values:
0 - no dither
rectangular - rectangular dither
triangular - triangular dither
triangular_hp - triangular dither with high pass 
lipshitz - Lipshitz noise shaping dither
shibata - Shibata noise shaping dither (default value)
low_shibata - low Shibata noise shaping dither
high_shibata -  high Shibata noise shaping dither
f_weighted - f-weighted noise shaping dither
modified_e_weighted - modified-e-weighted noise shaping dither
improved_e_weighted - improved-e-weighted noise shaping dither

Read more on these dither types here:

Dithering is only applied if being resampled to sample depth of less than 24 bit.

Disables the default behavior when creating file/directory syncing/action lists of excluding dot files and directories (like /home/user/.config). Added by request, but use at your own risk, I take NO responsibility for any unintended consequences. Note that if you do find unintended consequences, you should be able to filter those out using additional --exclude lists.

Check your collection for duplicated flac files or releases, helpful to find repeated items in your collection. Note that in cases of only 1 file matching, it's in theory possible for that to be a random coincidence, so always confirm before deleting anything!! But it's pretty rare for an ffp hash to be duplicated.

For larger directories/collections, use

acxi -s./ --dupes 2>&1 | tee duplicates.txt

The tee will allow the output to also scroll on screen while it runs, which is helpful to see what's going on. Otherwise just redirect output to file directly.

Exclude a list of unique strings separated by ^^, or a full path to an exclude file whose name includes the value set in $EXCLUDE_BASE.

Excludes sync/copy action to destination directory. Replaces EXCLUDE values if present. Anything matching in any part of the source directory file path will be excluded or removed from the destination directory.

If it's a path to a file of excludes, use one exclude string per line.


--exclude='artwork^^Daisy Queen^^Bon Jovi'

If you want to temporarily suspend exclude actions one time, use: --exclude='UNSET'

Append an item to the list of excludes or file. Only accepts string values, not a file path.

Sample: --exclude-append='My Sharona^^Dancing Queen'

Force --analyze and --infofix q to use ffprobe instead of metaflac for flac files. Useless!!! Incredibly slow, but just in case you want to confirm the outputs of the two, or something. My tests showed 30x slower.

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.

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.

The help / options menu.

Flac only. Use only on a single directory. Takes the supplied cover image file and embeds it into the existing flac files. Use with --remove-images if you want to remove existing embedded images. If this option is not used, it will not add images to the file if images are found in it (image embedding is cumulative in FLAC files).

Do not use if you are using an auto.tag file, thise is is intended only to add an image to an already tagged .flac file without retagging it.

Only use .png or .jpg image types, otherwise the results may be inconsistent. If you use the value 'remove' all embedded images and their padding will be removed.

Only run this in a single recording directory, do not use globally!!


acxi -s ./ --image='cover.jpg'
acxi -s ./ --image remove
acxi -s ./ -I cover.jpg --remove-images
acxi -s ./ -RI cover.jpg

Correct common corruptions to info.txt files. Only to correct these common issues:

* Entire file is uppercase (this happens surprisingly often). Applies smart Autoformat fix (u) for Upper/lower case, not recommended if the file has a lot of text in it. Perfect for titles and most standard values, but not for paragraghs of text.

* Track numbering is defective or inconsistent, and there is not too much extra text.

* Dates are non ISO YYYY-MM-DD, like May 23, 1983; 4/12/78; 2011-8-12; 18.4.21. Always double check file to make sure they aren't using some really silly date format, and confirm with d option before using wd to make sure it is as expected.

* Trim white spaces off line ends and get rid of extra new lines (default action always).

Values (can be combined):

* no option - clean white space issues. Default action, always runs.

* d - set date to ISO format YYYY-MM-DD

* l - more simplistic upper case first, lower case rest. Good for info files that have all upper case, but a lot of sentences. You will have to go back in and correct items. Good in combination with t.

* n - fix track numbering to be consistent '0X. ' or 'Y-0X'

* q - add in 2 technical quality info lines after top header. Reads flac file in directory to determine bit rate, sampling frequency, and channels. Requires track file name starts with D-NN or ends with D-NN.flac. Exits if it can't find a match. Quality is /[rating] number and can be changed from default if desired.

FLAC: 16/44.1 (2 channels)
Quality: /4 ()

* t - smart upper case first track titles only. Requires Perl module Text::Autoformat.

* u - run upper case first smart fix. Requires Perl module Text::Autoformat.

* w - write changes to info file.

With no w supplied, will just show what would have happened, with w, writes fixes to file.

Info file fixes would be used before running -E, and not with any other option.

See --prefill-file for using alternate info txt file names.

Samples: acxi -s./ -X dtn (to test) acxi -s./ -X dtnw (to apply)

Any number greater than 1 for the --infofix q item Quality: /[rating number] line if you want to change from default of 4. Some people like rating by x/100, others x/10, etc. Use with -X q or set in configurations.

Input type. Supported types: flac, wav, raw, shn.

aif/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 -v 3 to test the first time to make sure you have shorten codec installed.

Some other input types may be active for testing purposes occasionally, but acxi does not promote, advocate, or officially support those types (like mp3 to flac).

Supports flac to flac for cases where you might want to redo flac files to known quality/compression levels, or redo them using current flac codecs.

Tags transfer from AIF files that are tagged to FLAC files in my tests.

Use with --prefill if the recording is multiartist, and the source info file is in Artist [separator] Title or Title [separator] Artist format. Note that all track titles must be in the same format, and the first item before the separator cannot contain the separator.

* at - Artist [sep] Title
* ta - Title [sep] Artist

Only include the actual non space character(s) used to separate the two items.

Example (info file track title format: 23. Band Name / Song):
pinxi -s ./ -SE --ma 'at:/'
Example (info file track title format: 23. Band Name - Song-Name):
pinxi -s ./ -SE --ma 'at:-'
Example  (info file track title format: 22. Song \ Band Name):
pinxi -s ./ -SE --ma 'ta:\'
Example (info file track title format: 03. Song \\ Band Name):
pinxi -s ./ -SE --ma 'ta:\\'

Not OK (info file track title format: 23. Band-Name - Song). This would result in the following:
Artist: Band
Title: Name - Song

If you have such a conflict, simply change separators in the info file to a character that does not occur in the first item.

You must use single quotes around the argument or things like backslashes may behave oddly. Do not include whitespaces in the separator value. The separator itself cannot contain a whitespace.

If the match fails for some reason, acxi will exit with error message telling you which track title and separator failed.

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:

Overrides user configuration DOT. Basically restores default behavior for acxi in terms of skipping all dot files. Only useful if you have set DOT to true in your configuration file and want to do a one time override of that setting.

Skips FLAC ffp checks and generation on --checksum, --checksum-delete, and --checksum-verify. Useful if you have already verified or created ffp/flac data and only want to check md5 sums.

Skips md5 checks and generation on --checksum, --checksum-delete, and --checksum-verify. Useful if you only want to check / create ffp data, which is much faster to generate than md5 checksums.

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 type. Supported types: aac, flac, ogg, opus, m4a, mp3

aac - only supports flac input type, To preserve flac tags, use m4a.

flac - only supports flac, shn, or raw input types.

m4a - only supports flac input type, Container around aac data. Use if you want to preserve flac tags in your aac audio file.

mp3 - only supports flac input type

Will attempt to populate auto.tag file using data from info.txt file located in flac directory. Note that the data must have an extremely specific syntax for the prefill feature to work:

* Band name must be first line in file.

* Date must be iso YYYY-MM-DD formatted, and must be the first thing on its line, and must be in first 6 lines of file.

* Location can be 1 or more lines not starting with 19|20XX on lines 2-6.

* No non Band name, Date, Location info can be on first lines of file before first blank line.

* Performers list must be preceded by a line starting with Band:, Lineup:, Line-up:, or Band Lineup, Band Line-up, Members:, or Band Members, and must be followed by a blank line, with no empty lines between performers.

* Track numbers must start with either X-X., X-XX. (for multidisc), X. or XX. where X is a number. The number of tracks listed must correspoond to the total number of actual track files present. If they do not match in counts, acxi will exit with an error.

Should always be run in the flac folder with -s./ or unexpected results could occur.

Use together with -M or -S to prepopulate the ALBUM, ARTIST, ALBUMARTIST, PERFORMER, DATE, YEAR, and TITLE fields as well. Note that ALBUMARTIST is filled with ARTIST name.

Use the --test option to make sure the data will prefill as expected before actually creating the auto.tag file.


acxi -s./ -ES [single disc]

acxi -s./ -EM d%- [multi disc, file name sample: d2-track04.flac];

An alternate file name to use for prefill. Note that file MUST be .txt, and should not be anything other than ASCII or UTF8, otherwise you will get ungood results.

Set compression quality level.

aac/m4a - n can be an integer between 10-500 (bitrate). 500 is largest file/highest quality.

flac - n can be an integer between 0-8, 0 is largest file / fastest conversion time, 8 is smallest file, longest time. Note that tests show there is very little point in using anything over 4.

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.

Turns off most screen output, except for error messages. Same as -v 0. Not used for all features since it makes no sense to turn off screen output for features that require screen output, like -Z.

There may be cases where you want a certain action to NOT recurse beyond the number of steps you supply as an argument for this option. Default recursion level is infinite (-1). If you use 0, it will only return files for the current directory.

This can be useful if you for example do not want to create ffp or md5, or sync files in a sub directory.

In general, use the --test option to verify the results are what you expected before actually proceeding with this option for real.

Use with --autotag or --image. 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, which makes the file get bigger each time a new image is added.

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

Use with --autotag and --tag if you want to remove padding. My tests showed inconclusive results with this, and it slows down the tagging a lot, especially over network connections.

Allows for standard resampling options: 16|20|24 bit depth and 44.1|48|88.2|96|192 khz sampling rate.

To get best results, always make sure to resample to a sampling rate that divides evenly into the original sampling rate, for example, if the original is 96khz sampling rate, 24 bit, resample to 48khz, 16 bit (96/2 == 48).

If you use values that do not divide evenly, you have to deal with synthesizing sample issues (depending on how the resampling is done, of course), and your audio will not be as good as it could be. Note that 44.1 is only required for Audio CDs, and in most cases, the cd burning software can deal with that itself, unless you want to force it using acxi.

In short, if you have 192 or 96 khz originals, resample them to 48 khz. If you have 88.2 khz, resample it to 44.1. Do not sample upwards, it's just wasted bytes, for example, there is no reason to resample from 44.1 to 88.2. In almost all cases, if you need to work like that, use a dedicated DAW program like Audacity and let it do the resamplings to higher levels in its native mode, then after you have worked on the project, save it, and export to normal sampling rates and bit depths.

IMPORTANT: use the -Z analyze option first to make sure what the bit depth and sampling rate of your files are before using this resampling option. --resample and --analyze are meant to be used together to avoid errors, and so you always can be sure of what you are actually dealing with.

Output for -v1 shows source file bit-depth:sample-rate and resample bit-depth:sample-rate per file. -v2 adds dither type to output resample data. Dither (shibata default, use --dither {type} for alternates) is added when sampling from bit depths of 24 or more to less than 24.


# to get sampling rates etc:
acxi -s ./ -Z
[.... output...]
# then run resampling once you have determined sampling rates etc
acxi -s working -d results -i flac -o flac --resample 16:48

Allows users to select any supported bit depth (4-32) and sample rate, in khz (1-655). Why you would want to do this is beyond me, but if you want to, you can if you add this override switch.

Path to the top-most directory containing your source files (eg, flac). Cannot start with ../.

Accepts wild card paths if you only want to update or check certain directories within the main --source working directory. Requires --source (or pre-configured SOURCE_DIRECTORY), wild card path must be within --source.


acxi -s ./ -g 'BandName*' -V
acxi -s ./ -g '{BandName,Band Name,Band_Name}*' -V

Will only verify folders tarting with BandName. Remember to always quote the value otherwise your shell will expand the wild cards!!

Uses standard globbing patterns: * one or more of anything; {one,two,three} matches one of the comma separated values inside {...}. Note that * only matches directory names or files, not the path separator, like /.

Works with all options except --clean and --prefill.

This option is ONLY used with the auto.tag file creation options: -M, -S and -C.

For creating the track number tag, start auto.tag track numbering at a different value than default 1. This lets you handle cases where there was for example:


This will subtract 1 from track totals, so output is as expected, say for 0 start, then 1-14 tracks, you will see 14/14 when your media player shows x/yy counts for track listings.

For values greater than 1, will add that number to the real found track totals, so that, for example, if first track is 03.flac, you will see 15/15 for track 15.flac as you'd expect.

These are not normal circumstances, but they do happen, so now you can handle those. Check your work carefully, check the auto.tag file

Note: some media players get confused by the track tag number 0, I beileve they are doing a type of if not test, and the 0 registers in some cases as not, so the player may show no track number, not the expected 0.

In general, use the --test option to verify the results are what you expected before actually proceeding with this option for real.

Modify one or more tags in a single recording or group of recordings. FLAC only, use standard FLAC tag values for best results. Separate TAG and tag value with %:, and separate tag/value sets with ^^. This lets you retag entire blocks of artist/recordings at once if you only want to modify (or create) one or more FLAC tags.

Removes all existing tags of that type before updating since FLAC just adds the new tag to the already existing set of tags by default.

Sample: acxi -s ./ --tag "GENRE%:Heavy Metal^^ARTIST%:Black Sabbath"

If tag value is UNSET it will just remove that tag and its contents.

Sample: acxi -s ./ --tag "COMMENT%:UNSET^^ARTIST%:Black Sabbath"

Test your configurations, copy, sync, checksum, and tagging actions without actually doing the operations.

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.

Dynamically set . Helps for debugging certain types of issues where you might advanced highly verbose debugging information.

0 - shuts off most output except errors. Same as --quiet. Not useful or used for all features.

1 - basic single line output.

2 - more verbose output.

3 - full output, incuding all conversion tool output.

For other technical data, use --debug, but not unless you know why you are doing it, that output can vary widely.

Show acxi version.

Override default value for --analyze min lossless file size alert. Number is integer KiB, 0-xxx. 0 disables this test. Can be set in config file, see config section.

Override default value for --analyze min file duration alert. Number is integer seconds, 0-xxx. 0 disables this test. Can be set in config file, see config section.

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. Also checks /etc/acxi.conf.d/acxi.conf as global override for /etc/acxi.conf config file. Useful in cases if distros ever package acxi.

These can be overridden by user configurations found in one of the following locations, in this order of priority: $XDG_CONFIG_HOME/acxi.conf, $HOME/.conf/acxi.conf, and, as last default, $HOME/.acxi.conf, 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.

Sample contents of a configuration file:


The following set your system path for the required applications:

COMMAND_FFMPEG - Sample: COMMAND_FFMPEG=/usr/bin/ffmpeg (default path)

COMMAND_FFPROBE - Sample: COMMAND_FFPROBE=/usr/bin/ffprobe (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 sync to apply cleaning action to your destination directories. Accepted values: [enable|on|true|yes] or [disable|off|false|no]. Default is false.


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.


This the original, working, like flac, wav, etc.

DOT - Disables default behavior of skipping all files starting with a .. Takes values true or false. Note that false is the acxi default so there's no point in using that.

EXCLUDE - Sample (if list): EXCLUDE=artwork^^Daisy Queen^^Bon Jovi

Sample (if exclude file): EXCLUDE=/home/me/music/excludes/acxi-excludes-phone.txt

Excludes these matches from destination directory in sync or clean operations.

EXCLUDE_BASE - Sample: EXCLUDE_BASE=massive-exclude-list

This is the part of the file name minus the .txt that will be matched to see if it's an exclude list or an exclude file. Default: acxi-excludes

This lets you use multiple exclude files, as long as they all contain the value found in EXCLUDE_BASE acxi will know it's an exclude file, not a list.

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.

CODEC_AAC - Sample (default value): CODEC_AAC=libfdk_aac

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.

DITHER - Sample (default value): DITHER=shibata See --dither for values.



QUALITY_AAC - Sample: QUALITY_AAC=320 Supported values: 10 to 500. 500 is the largest file size / highest quality. Applies to aac and m4a.

QUALITY_FLAC - Sample: QUALITY_FLAC=5 Supported values: 0-8. 0 is the largest file size / fastest to run. 5 to 8 shows only a tiny decrease in file size but a huge increase in time to process, so 4 is a good balance in general.

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 two values allow you to customize default -Z ALERT warnings about possible incorrect file size and time duration values. Useful for finding accidentally corrupted or otherwise incorrect files.

Z_MIN_SIZE - Sample: Z_MIN_SIZE=900 Minimum size (in KiB) in integers of lossless file. Not used for lossy files. Set to 0 to disable. See --z-min-size

Z_MIN_TIME - Sample: Z_MIN_TIME=8 Minimum time/duration in integer seconds of audio file. Set to 0 to disable. See --z-min-time

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.

INFO_FILE - Sample (default value): INFO_FILE=info.txt

info.txt - The filename in the flac directory being processed that will be used to populate the auto.tag fields.

INFO_RATING - Sample (default value): INFO_RATING=4. See --info-rating. Used with -X q. Must be greater than 1.

TAG_FILE - Sample: TAG_FILE=autotags.tag

auto.tag - The filename to be used to autotag. Default is auto.tag. Filename must be unique, and must 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.

You can change VERBOSITY either at the top of the acxi file itself, or in the configuration file, by setting the verbosity/debugging level to what you want. Deprecated: LOG_LEVEL.


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.

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.

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.

File an issue report:

Post on acxi forums:
You can also visit or channel: #smxi to post issues. Libera is probably best for acxi issues.

acxi is a fork and full rewrite of

Copyright (c) Harald Hope, 2010-2021

Initial forking logic: prupert. 2019-07

Initial MP3 tagging logic: 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.

2021-12-06 acxi