General concepts

This section introduces some concepts that are either general for DRC or ConvoFS specific.

Filter banks

You need to create at least one bank to upload filters into. Bank names - as well as filter names, can be of arbitrary length and also contain national characters like the German “ö” or Danish “æ”. Filter names are not required to be unique across banks. When requested to process a FLAC file, ConvoFS detects the sample rate and look in the currently active bank for an active filter with that rate. If none is found, it processes the file as if in NonDRC mode. When you activate a bank, ConvoFS activates all filters in the bank. If more filters with a given rate are present in a bank, ConvoFS only activates one of them. If this is not the one you intend, you can enable another filter with that rate. It is the intention that you have only one filter with a given rate in a bank.

Attenuation

You can configure various attenuation levels that apply to the music files that ConvoFS presents. They can be defined/adjusted in two places of the web GUI. First default levels are applied to every new bank, you define. Secondly, after having defined a bank, you may activate it and adjust the attenuation levels to suit the filters in that bank.

The three attenuation parameters are:

  • NonDRC attenuation: Typically, DRC filters attenuate the processed sound to avoid digital clipping because some frequencies are amplified. That could, e.g. be with 6-10 dB. To match this, ConvoFS applies a “NonDRC attenuation” by your choice when convolving is disabled. The purpose for this is to allow for comparing your music system with and without room correction. It also acts as protection against overly high playback volume if amplifier volume is not turned down before disabling DRC. If you only use ConvoFS for FLAC to DSD upsampling, set this parameter to 0 or a few dB.
  • PreDRC attenuation: You can use this parameter to attenuate the input signal by some dB before feeding it to brutefir. This attenuation is used to prevent digital clipping with, e.g. overly loud mastered music.
  • PostDRC attenuation: As the name says, it is applied after DRC and before conversion to FLAC/DSD. It is mostly used to avoid the DSD upsampler clipping.

ConvoFS modes

  • DRC mode: You’ll probably spend the most time in here. ConvoFS transparently convolves the music files that are accessed, applying the active filter with the proper sampling rate in the active bank.
  • NonDRC mode: Convolving is disabled, and the NonDRC attenuation is applied. Useful when using headphones or when comparing convolving versus non-convolving.
  • Index mode: Special mode intended for use while indexing with music servers which profit from special optimizations. DRC is disabled, and no attenuation is applied. Furthermore, the first and last second of each track is rendered as a low-volume 440 Hz tone. Consequently, Index mode is unsuited for general listening. The web interface uses red letters to inform you that ConvoFS is in Index mode. You select this mode under the maintenance window.

M/S encoding

M/S encoding is a special way of reencoding stereo files. Refer to http://www.soundonsound.com/techniques/processing-stereo-audio-file for technical information. Playing back M/S encoded audio requires dedicated hardware in the analog path. An example is the products listed on http://www.audiovero.de/en/acouratecleaner.php. Otherwise, it will sound strange. ConvoFS supports M/S encoding; please select it from the maintenance pages.

LoCo encoding

LoCo stand for “localisation correction” and is described on http://frankl.luebecknet.de/stereoutils/loco.html. ConvoFS supports LoCo encoding; please select it from the maintenance pages. N.B.: Please use at least ConvoFS 2.1.4 if you’re interested in using Loco encoding – the implementation in earlier releases is badly broken.

LoCoTest support

ConvoFS 2.3.0 and later includes support for Frankl’s “LoCoTest” program which can be used to generate your own LoCo filters. You can find more info on his stereo pages; please use the URL in the preceding section. Please note that describing LoCo and LoCoTest in detail is outside the scope of the ConvoFS documentation.

You’ll have to enable LoCoTest on the maintenance page and restart ConvoFS. In the Synology distribution, ConvoFS will - after coming up, in the background install the prerequisites for running LoCoTest. The web interface informs using red text that this is going on. Depending on the speed of your Internet connection and your NAS, it may take a couple of minutes. When this text disappears (reload the front page), LoCoTest should be running on port 4444 on your NAS (i.e., you should change ‘8999’ to ‘4444’ in the ConvoFS admin URL).

When enabling LoCoTest, a virtual catalog ‘LoCoTest’ appears under the ConvoFS mount point. The catalog/folder contains 12 FLAC files of 14 seconds each. Initially, they hold low-volume 440Hz test tones, but when you use LoCoTest to generate other tones, the 12 files change content instantly.

What you need to do is to let your music server do a re-index, so it discovers the LoCoTest folder. After that, make your music player play the folder/pseudo album on repeat. Whenever you perform an operation in the LoCoTest program, proceed to the next track in the playlist. E.g., using the remote. On some streamers, you may due to read-ahead caching have to do it twice.

This approach may seem a bit cumbersome, but to my best knowledge, it is one of the better ways to implement the functionality of the stand-alone LoCoTest program inside ConvoFS.

The LoCoTest sound files are mainstreamed through the ConvoFS processing logic meaning that if you have DRC enabled, the sound will be convolved. When running LoCoTest, do disable LoCo in the ConvoFS web interface.

Caveat: LoCoTest defaults to 7 seconds for moving from left to right or back. Changing this value when running under ConvoFS is not supported/recommended.

LoCoTest w/ConvoFS for Linux

Running Frankl’s LoCoTest with ConvoFS on Linux machines takes a little work which has been taken care of in the Synology distribution. First, download the script locotest.perl from the ConvoFS download site. Place it somewhere, e.g., in the ConvoFS source directory. Make it executable (chmod a+rx locotest.perl). Replace the locotest/playcmd script in the unpacked LoCoTest directory with (you’ll have to change the paths according to where you’ve installed ConvoFS):

#!/bin/sh
/ConvoFS-2.3.0/locotest.perl /ConvoFS-data/LoCoTest/LoCoTest.flac

and run

mkdir /ConvoFS-data/LoCoTest
sox -nr 44100 -t raw -c 2  -e floating-point -b 32 - synth 30 sine 440 vol -45 dB | /ConvoFS-2.3.0/locotest.perl /ConvoFS-data/LoCoTest/LoCoTest.flac x

Then fetch the patch file ‘locotest.c.diff’ from the download site and - using the ‘patch’ program or manually - apply it to the locotest.c program in the LoCoTest distribution. Compile it as shown at the beginning of the locotest.c file.

Start the LoCoTest service using the ‘start’ script and proceed according to the instructions in the preceding section and LoCoTest documentation.

Polarity/Phase

Experience shows that some DRC filters/recordings can benefit from flipping polarity - i.e., the phase. ConvoFS supports this. Also, you can specify reverse phase where ConvoFS flips the phase of one channel only. The GUI warns about this as it is hopefully not the optimal setting. If it is, you should double check the cabling of your loudspeakers.

Resampling

ConvoFS allows for resampling, i.e., changing the audio sample frequency/encoding. Resampling is done after the audio has passed through the processing pipelines - just before conversion back to FLAC format. Resampling thus also supports room correction (convolving), LoCo, etc. Support for resampling has been dramatically enhanced in ConvoS 3.x, allowing up/downsampling to all supported sample rates and DSD64/128/256.

Resampling is done using the SoX audio converter. The official release does currently not support DSD upsampling, so ConvoFS uses a ‘fork’ of the SoX code done by ‘Mansr’, a Computer Audiophile forum user,

The way resampling in ConvoFS works is that you from the maintenance tab select the sample rates/formats to resample to. The upsampled files appear under two extra, virtual catalog trees – ‘dsd_xxx’ and ‘flac_xxx’ under the top level of the ConvoFS mount. You may also select that non-resampled files should appear under another folder structure ‘originals’. If you select this, the ConvoFS ‘mount’ folder will become less cluttered - only containing resampling folder and the ‘originals’ and LoCoTest folders.

After having selected the upsampling levels you want to explore, you may have to let your music server re-index the ConvoFS mount point.

Here’s a screenshot of an example ConvoFS 3.x resampling setup screen:

_images/resamp1.png

The way this setup works is that the media server will see the following versions of a given music file:

  • The file itself under /mount/originals/... (this is because of the downward sloping line of green ‘enabled’ icons and because ‘relocation’ is enabled).
  • A 192 kHz version to be found under /mount/flac_192000/....
  • A DSD128 version found under /mount/dsd_128/..

DSD upsampling is very computing intensive, and your system may not be able to support all/any upsampling modes. You won’t be in doubt if this is the situation. It is currently not enabled in the Synology package builds. That’s because I’ve not yet compiled a ‘Mansr’-modified Sox version for Synology and - sadly - because most Synology boxes have to limited processing power to perform DSD upsampling.

CAVEAT - PLEASE READ If you use DSD upsampling, please proceed with care and start listening to low volumes for some time: some streamer/DAC combinations are prone to making unpleasant bangs/other artifacts if suffering buffer underflows due to not being fed fast enough with DSD data. Due to the nature of ConvoFS, this may happen occasionally.

Finally, ConvoFS can enable a special “16-bit” mode. When you select this, a new top-level catalog tree ‘flac_16bit’ appears. It will contain 16 bit 44.1 or 48 kHz versions of all your music. This mode is to be used for streamers / DACs that only support lower rates. )t could (unverified) mean that ConvoFS supports Sonos sound systems.

Caching and aggressive convolving

General caching concepts

ConvoFS makes extensive use of ‘caching’. If this word is unfamiliar to you, refer to here for an introduction. In short words, it tries to anticipate what your player will access next, and pre convolves it so that you won’t risk a multi-second pause.

Caching in ConvoFS 1.x/2.x:

The data is stored on disk. When the cache runs full, ConvoFS begins deleting old content. You set the maximum size of the cache in the maintenance functions tab. The default cache size in fresh installations is quite small: 1 gigabyte. That’s is large enough not to cause any operational problems.

Caching in ConvoFS 3.x

The cache in ConvoFS 3.x is entirely memory(RAM) based meaning that on Synology NAS boxes, it is quite small. On Linux machines with multi-gigabyte RAM, it can grow large. ConvoFS will dynamically change the max cache size. This size is based on a ‘memory pressure’ concept which expresses how much memory is in use on the NAS box / Linux machine. The cache will be allowed to grow until the system memory pressure hits the allowed limit. ConvoFS will monitor the memory pressure level and prune cache elements to reduce it, should other processes on the machine use more memory. Using the web interface, you can configure the maximum acceptable memory pressure. It defaults to 60%. In the stats/metrics tab, you can see the current cache usage and memory pressure.

More caching info

The cache data is broken into parts of some megabytes each. The parts are tagged with the ‘configuration footprint’. Those footprints are a checksum of your filter/LoCO/MS encoding/attenuation parameters. If the configuration footprint changes because you change the setup using the web interface, ConvoFS disregards the contents of the cache and start convolving again. If you revert the configuration change, it begins using old cache content again if it’s still present.

Aggressive caching

In the admin tab, there’s also a button which can enable/disable ‘aggressive convolving’. New in ConvoFS 2.1.0 - it will make ConvoFS race ahead, convolving until the end of a track is reached. It kicks in after a second or two of music data has been read. The convolved data are stored in the cache. If you enable aggressive caching, consider raising the maximum cache size to e.g. 3 gigabytes. The rationale behind aggressive caching is that the activities incurred by ConvoFS on your computer/NAS may influence the sound quality. As soon as ConvoFS has convolved&cached the entire track, it will use minimal resources until the track has been read to the end. When playing DSD upsampled music, aggressive convolving is always active regardless of what the interface says.