Getting, Installing, and using ConvoProxy¶
Note (important): The docker-based installers use container technology and install ConvoProxy in a shielded environment inside your box. It downloads and installs some hundred megabytes of supporting programs into this environment as part of this process. This process can take in excess of 10 minutes the first time. The hard disk on the NAS will be busy. When installing subseqeutn ConvoProxy updates, things will go much faster.
The “native” installers offer a much faster installation process.
Installation¶
Installing on Synology (Running DSM 6.x)¶
To install ConvoProxy, go to the Package Center, click Settings, and select “any publisher” as Trust Level due to problems with digital signatures. Afterward, click “Manual Install, ” select the downloaded SPK file, and continue. After installation, ConvoProxy should appear among the other installed packages. Next, click the icon and check that it is running. Otherwise, start it using the ‘Action’ menu. Finally, a “URL” link will lead you to the ConvoProxy admin interface.
Installing on Synology (Running DSM 7.x)¶
Only a native installer is available for DSM7. Otherwise, installation is the same as with 6.x.
Installing on Linux¶
The following assumes that your Linux box is running a 64-bit edition of a Debian-based Linux distribution (including Ubuntu). Other Linux flavors will probably also work, assuming that you install the ffmpeg package.
Unpack ConvoProxy somewhere that suits you. E.g. in your home directory (do it with your own (non-superuser) account) by running
tar -xzf name-of-the-downloaded-installation-file
e.g
tar -xzf ConvoProxy_2.2.0-600-Linux-native.tar.gz
Change the directory into the unpacked catalogue, e.g
cd ConvoProxy-2.2.x
And run:
sudo apt-get update; sudo apt-get install ffmpeg curl bzip2 flac
sudo ./ctl_convoproxy.sh start
If you would like ConvoProxy to start automatically when your machine starts up, run the following additional commands:
sudo set-up-linux-boot.sh
Please refer to the next section for further instructions.
Configuration¶
After having installed ConvoProxy, direct your browser to “http://the-address-of-your-computer-or-Synology-box:8996/”. E.g., http://192.168.2.128:8996
Then, click to select the Setup functions section.
If you run the Minim media server on the same machine/NAS, ConvoProxy detects it automatically. Otherwise, a drop-down menu is available to select the media server manually. If you don’t want to use a media server, e.g., if you only use streaming services with an UPnP control application, there should be a button to disable scanning.
If you have a non-Linn streamer or would like to use a UPnP control application with your Linn/Lumin streamer, please select it in the ConvoStreamer drop-down menu.
If you want to do convolving, proceed to the “Filter maintenace” page and create a filter bank with a name reflecting the filters you will upload. Either a WAV type for filters produced by products such as Audiolense/Acourate/Focus Fidelity, or a native Camilla DSP bank.
If you chose a WAV-type bank, upload the filters. The filters have be WAV files in stereo format, and you need to generate/upload filters for every sample rate, you want to do convolving for. If ConvoProxy during play-back canno find a relevant filters, it will fall back to non-convolving.
Tip: on a Windows PC, you can use “control-left-click” rather than “left-click” to select multiplefilters at one time.
Also, remember to enable convolving, if you want to perform it.
You should now be ready to go. To be safe, turn down the amplifier volume for the first test.
Native CamillaDSP filters¶
ConovProxy allow for - as an alternative to WAV filters - to upload textual specifications of native CamillaDSP filters. When you create such a bank, text input fields for left/right channel will become available.
An example of a native CamillaDSP filter::
notch_37:
type: Biquad
parameters:
type: Peaking
freq: 37
gain: -3
q: 9
Please refer to the CamillaDSP documentation for further info.
The web interface in more detail¶
The ConvoProxy web interface has the following subpages, which are detailed below.
- Main page: You can select essential parameters of ConvoProxy operation from here. Those parameters include whether to perform convolving and resampling rate if desired. NB: if you resample to 48 kHz, ConvoProxy will implicitly reduce the outgoing bit depth to 16 bits to support devices that do not support 24-bit WAV or higher sample rates.
- Setup functions: this is where you will go right after the initial installation of ConvoProxy. You can specify the ConvoProxy general operation mode, a stremaer to proxy to and other parameters.
- Filter maintenance: This is where you define filter banks and upload filters.
- LoCo: You can turn LoCo-encoding on/off here.
- Encoding: Control how ConvoProxy encodes your music:
- M/S encoding: ConvoProxy also supports M/S encoding.
- Phase: ConvoProxy supports flipping the phase during playback, which can be advantageous. You may even select “reverse phase” for testing.
- Encoding: In addition to ordinary 24-bit WAV - for use in streamers that support it, you may select 32-bit WAV, integer/float encoding. Some streamers, e.g., Linn streamers, do not support non-standard WAV formats and may generate white noise on playback.
- DR-analysis: analyze tracks’ dynamic range (DR).
- Clipping messages: Occasionally, depending on the filters uploaded, ConvoProxy may do “digital clipping” which sounds very bad. To get real-time information, please select it here.
- Process DSD files: per default, ConvoProxy will decode DSD(DSF) media files to WAV and process them. If you want to pass DSF media through without processing, select i here.
- When to resample: You can select whether resampling should take place before or after any convolving. In the former case, ConvoProxy will use the resampling facilities offered in CamillaDSP; in the latter case, Libsoxr performs resampling, which has implications for sound quality and processor load on your box.
- Misc: Under this tab, you can generate log+config bundles to help me debug issues. You also select the level of logging. A level beyond 3 will increase the processor load on your device and potentially cause huge log+config bundles, so you should normally not change this parameter. Also, there’s a function for rescanning for streamers/media servers.
- About: Copyright notices etc.
Messages section¶
The top-middle section of the ConvoProxy web interface will always show up to five lines of time-stamped status messages. They will auto-update. The information shown includes messages about internal digital clipping, filter selection, and dynamic range information. Please note that ConvoProxy suppresses duplicate messages.
Performing a streamer/media server rescan¶
ConvoProxy will scan your network for streamers/media servers at start-up time, so be sure to turn on the relevant devices when you start your NAS/ConvoProxy. You may at any time perform an extra rescan (under the`Setup functions` pages) if you miss a streamer/media server.
Features¶
Stored-preferences¶
ConvoProxy allows for storing playback preferences in files in the music folder area. Preference files can be named either ConvoPrefs.txt, ConvoPrefs-“streamer identification”.txt” or ConvoPrefs-“brand”.txt. This includes “ConvoPrefs-Linn-Main-Room.txt.” or “ConvoPrefs-Linn-Products-Ltd.txt”. The valid names for preference files are shown in the web interface under the ‘Misc’ section. Preferences files are allowed anywhere in the music area, and ConvoProxy can read from multiple files for a given track.
Available settings include:
- locoencoding = bank name / disabled
- msencode = n / y / no / yes
- phase = normal / inverted / reverse
- nondrcatt = number
- predrcatt = number
- resample_to = number
- wav_mode = wav / waw32_int / wav32_float
Commenting a line out is done by inserting a ‘#’ character at the beginning of the line.
ConvoProxy will resolve settings, as follows:
- First, the web interface settings are consulted
- The folder path is traversed from the music start catalog to the played file.
- A setting read at one level may be overridden at the next level.
- In the same folder, streamer prefs file entries “win” over brand prefs entries, which respectively win over ConvoPrefs.txt entries.
The processing of multiple stored preferences files may seem a little complicated. Still, it is a/the reasonable way to do it, but if preference files are littered all over the music area, it is quite possible to confuse oneself.
Another way to phrase rules is that the most specific setting always wins. If the resolved settings for a music file differ from those set by the web interface, a text at the top will inform of the actual settings.
Usage scenarios:
- If your Mozart records sound best in the inverted phase, place a ConvoPrefs.txt in the Mozart top folder containing the line phase=inverted. And if his Requiem sounds the best in the normal phase, put a prefs file with ‘phase=normal’ in the Requiem sub-folder.
- If the “Main Room” Linn streamer supports M/S encoding, place a file ‘ConvoPrefs-Linn-Main-Room.txt.’ at the top of the music area, containing the line ‘msencode = yes’.
Squeezelite integration¶
Squeezelite - https://github.com/ralph-irving/squeezelite - is a software implementation of the discontinued Slimdevices/Logitech series of streamers. Though discontinued, the associated media server, now named Lyrion Media Server, and the rest of the ecosystem is very much alive.
ConvoProxy ships with a version of Squeezelite, which has been extended with a custom output driver module, allowing it to use ConvoProxy for play-back.
To use it with ConvoProxy, select one of the two Squeezelite modes on the Setup functions page. When ConvoProxy is running in Squeezelite mode, it is not available for ConvoStreamer / media server usage.
Please note that Squeezelite support was initially shipped with ConvoProxy 3 - build 1000, meaning that it may still have rough edges. Don’t hesitate to contact me regarding the subject.
Further info on the Squeezelite mode:¶
The rationale behind implementing this mode of operation is to enable ConvoProxy use with Roon media playback software, offering ConvoProxy functionality / potential sound quality enhancements.
Disclaimer: Roon does not offer any support the use of original/modified software emulators for Squeezebox devices. So don’t request support for this mode from them or the associated forum. Also, please do not claim that ConvoProxy supports/is tested with Roon or vice versa.
That said, I use the Squeezelite/ConvoProxy integration with Roon, and it works pretty fine. There is room for improvement, so please contact me if you experience issues.
Having enabled Squeezelite mode, you should soon find the server running ConvoProxy listed in the Roon audio setup configuration section. Enable it, and rename it to a meaningful name. Should it happen that Squeezelite shut prematurely down, normally if the custom output driver module fails to control the streamer, it will normally restart automatically, and become visible again.
ConvoStreamer¶
To use the ConvoStreamer functionality, please select the destination streamer on the Setup functions page, and use an ordinary UPnP control application.
The ConvoStreamer functionality for OpenHome devices is implemented, letting ConvoProxy exclusive control of the on-device playlist and only inserting two tracks at a time: the current track and the next to come. This means that you should primarily use the control application on your phone or tablet to control playback. Skipping to the next or previous track using physical buttons on the remote or the device itself will confuse ConvoProxy and disrupt playback. Controlling volume will not cause any issues.
To achieve “gapless playback”, you may have to configure the control application to enable it.
M/S encoding¶
M/S encoding is a unique way of reencoding stereo files. For technical information, refer to this article . Playing back M/S encoded audio requires dedicated hardware in the analog path of your media player/DAC. An example is the products listed on http://www.audiovero.de/en/acouratecleaner.php. Otherwise, it will sound strange.
LoCo encoding¶
LoCo stands for “localisation correction” and is described on http://frankl.luebecknet.de/stereoutils/loco.html. The article describes a utility called LoCoTest. For information on how to integrate it with ConvoProxy, refer to the dedicated document “ConvoProxy-LoCoTest”, available in the ConvoProxy download section.
Dynamic Range (DR)¶
You can enable this optional feature from the Encoding section of the web interface. It will analyze the tracks which pass through ConvoProxy and determine the “Dynamic Range (DR)”. After completing a track, find the result in the messages section. The analysis uses the original (2009) DR algorithm. I’ve checked several sample tracks with the database on https://dr.loudness-war.info, and they closely match the values computed by ConvoProxy. Please note:´Convolving and resampling may affect the analysis results. So, if you want to get data consistent with the loudness war site, please deactivate both.
Clipping warnings¶
An optional feature warns you of digital clipping events within the ConvoProxy processing pipeline. Digital clipping is readily discernible while listening to the music. If so, you may choose to add a little pre-processing attenuation. To set this, please go to the Encoding section of the web interface. You can set the value per bank or in general. You can even set it on a per-album basis using stored preferences. Beware that manually added attenuation has been reported to cause changes in perceived signal quality. So, only add if you get audible clipping.
Bufhrt¶
ConvoProxy supports parts of frankl’s stereo utilities. It is implemented as an optional proxy, “Bufhrt” (pronounced “BufhEArt”) in front of ConvoProxy “clocking” the data to the streamer with high precision/low jitter to improve audio playback quality. Bufhrt performs additional processing to refresh data in memory before sending to the streamer.
Bufhrt can be enabled on the Setup functions subpage. Two modes of operation are available - with and without process isolation. “Process manipulation” means that ConvoProxy will lock the activities of the Bufhrt proxy to processing unit (CPU) number 1, keeping other activities to the other CPUs. Using process isolation is only recommended when running ConvoProxy on computers/NAS boxes with at least 4 CPUs.