Press "Enter" to skip to content

AudioDigitale Posts


Tin Hifi P1: a rough diamond

For more than a year now, a crazy hype has been created around these headphones in the various headphone forums. This is certainly due to their affordable price (~ € 150) and the type of driver they mount: a 10mm planar magnetic driver.
I state that planar magnetic headphones often divide listeners, they love them or hate them and practically all those headphones on the market (some more some less) have the same advantages and disadvantages in common. Thanks to the minimum weight of the diaphragm they are fast and very detailed. Another advantage is the very low distortion.
On the other hand if you are looking for a lot of punch and attack these are not the type of headphones suitable for you.
Furthermore, in general, I would not call them headphones with the most linear response on the market, but thanks to the very low distortion this can be fixed (as I will explain later).

Let’s go back to the P1, there are not many planar in-ear headphones, the only ones I tried, the Audeze iSine 10, did not surprise me particularly.
To solve the linearity problems, Audeze had to include an equalizer in the lightning connector, and with good reason since without it their sound is quite terrible.
Consequently my expectations when I received them were not high, quite the opposite.

Packaging and construction

The packaging is well cared, especially for this price range. The package includes both silicone and foam tips, a 3.5mm mmcx 4-core 5N copper cable and a nice leather-like case to store the headphones.
The cable is very soft and flexible, it is not microphonic and the intertwinement of the 4 cables is not particularly tight, you must be careful that it does not get caught while you use them.
The in-ears are made of aluminum, they are extremely comfortable and well finished.


Driver: 10 mm planar diaphragm
Impedance: 20 Ω ± 15%
Sensitivity: 96 ± 3 dB.
Frequency range: 10 Hz – 40 kHz
Nominal power: 5 mW
Maximum power: 10 mW
Maximum distortion: 1 dB.
Interface: Gold plated MMCX connector
Cable length: 1.2m (3.9in)

Reading the specifications before I even bought them, I knew that they would be quite capricious with the amplification, and that’s how it is. They are not headphones that can be plugged to a phone (unless it is an LG V series). You will need either a DAP or a portable amplifier.
Although they do not require an important voltage, they are particularly thirsty for current because of their low impedance and low sensitivity.

How do they sound?

Simple question with a difficult answer.
I start by saying that among the in-ear headphones that I have listened to and / or that I know these have a tuning and a frequency response that from 100hz to 6khz-8khz is nearly perfect. The whole range that goes from medium-lows to medium-highs is a delight.
Unfortunately, the trouble begins below 100hz and from 10khz upwards.
Below 100Hz the frequency response starts to drop, reaching about -7db at 20hz, making these headphones particularly anemic when it comes to sub-bass.
As for the highs after a narrow negative peak around 10khz, the frequency response begins to rise dramatically up to 20khz, this negatively affects for example the harmonics of the cymbals that sound totally unrealistic and thin.
If in acoustic music this defect is tolerable and indeed gives a fake sensation of detail in the highs, as soon as you listen to a piece of electronic music you immediately realize how much this defect is not insignificant.

The soundstage is that of a closed in-ear headphone: inside your head.

The instrumental separation and detail are excellent, you can focus on each individual instrument without difficulty.

The transients are extremely defined while the attack is that of the planar ones: not as decisive and incisive as a dynamic headphone.

In conclusion, if you are not going to equalize, forget the P1, they are an excellent attempt to bring this technology on closed in-ear headphones, but without a little tuning by the listener they will not be anywhere near good.
Otherwise, if you don’t mind correcting the imperfections go straight to the next section.

P.s. I made my listening test and the following EQ profile using foam tips

Let’s refine the diamond.

First of all, close the small hole on the inner side of the the P1, near the nozzle (next to the writing R or L).
There will be an increase of about + 3db in the sub-basses. I used a small square of electrical tape. This is a simple and reversible mod that will allow you to have greater linearity in the bass (although not perfect).

Now let’s start with the equalization: I used the measurements made by the user of the Head-Fi Crinacle forum as the basis. Measuring an iem is always difficult, and in specifically measuring the high frequencies is not always particularly reliable and therefore I prefer to always equalize them by ear.

After a couple of hours of continuous tests I decided to keep these parameters:
• 24 Hz +7 dB 0.30Q
• 303 Hz -3 dB 0.68Q
• 1870 Hz -2.50 dB 0.83Q
• 3110 Hz +3.20 dB 2.20Q
• 6434 Hz ​​+3 dB 2.18Q
• 10268 Hz +5.20 dB 2.89Q
• 20000Hz -7.50 dB 1Q
• Gain: -7 dB

Obtaining the following curve:

By applying this curve, the P1 re-gain the missing linearity while maintaining their character.
The very low distortion of the planar drivers is fundamental in these cases, allowing equalization without distortion or loss of sound quality.
In the future I could update the EQ, in which case I will also update the article.

Usually I create the curve on RePhase, then export it as a .wav and use it in a convolver (Or I enter the values ​​directly into a parametric EQ)

For those who are beginners I recommend:
On Windows: EqualizerAPO
On Android: JamesDSP (in case of root) or Usb Audio Player Pro
For Apple devices I have less experience but I know that eqMac2 is widely used, JRiver allows convolution and for iOS EQE (in case of jailbreak) or Equalizer (for a fee)
If you want to apply the EQ directly on the song files, I recommend SoX.


These P1s are a big step in the right direction, both for the company and for this technology.
Right now, given the need for good amplification and equalization, they will be appreciated only by a niche.
If you think you are part of that niche, jump in and buy them, they will not disappoint you.


SqueezeCore: a minimal audio OS running Squeezelite.

The purpose of this project:

I built SqueezeCore because I needed a lightweight, minimal, plug&play OS to use it as a squeezelite player. The whole OS is 17MB and when running it occupies around 60MB of RAM; SqueezeCore must be installed on a USB drive and will run completely in RAM. Perfect to be installed on a thin client!


  • RAM: 128MB
  • CPU: 32bit or 64bit, every CPU is ok, it can run on a toaster too
  • USB flash drive: 32MB
  • An ethernet port
  • A monitor for first setup (optional)
  • A keyboard for first setup (optional)
  • A computer running Logitech Media Server


Download SqueezeCore .IMG from here: SqueezeCore
Flash the .IMG using Etcher or a similar software

Which version should I download?

1st rule: if you are unsure download the generic .img. It is usually more stable, and has less specific hardware requirements.
If you want to try the RT version please read all the FAQs before. Since the generic image is stable enough all the development will be on the RT.


v0.1-ALPHA: initial release
v0.2-BETA: fixed a bug that caused squeezelite not being able to lock on the specified output device
v0.3-BETA: minor fixes
v1.0-STABLE: added support for static ip
—Real Time Kernel—
v0.1-RT-BETA: initial release
v0.2-RT-BETA: added support to setup static ip

First Setup:

Using monitor and keyboard (recommended):

Plug into your computer the USB flash drive with SqueezeCore, an ethernet cable (wifi not supported at the moment), a keyboard and a monitor.
Power on and boot from USB.
Now you will have to enter some squeezelite settings like: what audio device use as output, buffer settings and so on; if you have any doubts leave all settings as default and just select your audio output device. (Important: read carefully the options during the setup)
From now on every time you power on your computer squeezelite will start at boot with the defined settings.

Headless setup:

Plug the SqueezeCore USB drive to your computer. Create a file named squeeze.conf inside the “/config” directory. Open squeeze.conf with Notepad++ (or a similar editor that allows you to set the UNIX(LF) newline) and insert the squeezelite options following this example:

Output=hw:CARD=UD501,DEV=0 #1st line: output device
PlayerName=SqueezeCore         #2nd line: Player Name
ModelName=SqueezeCore           #3rd line: Model Name
Server=                                     #4th line: [server_address:port], empty to autodiscover
AlsaParams=40:4::0                  #5th line: ALSA parameters [buffer:period_count:sample_format:mmap]
Buffer=4096:3072                      #6th line: [stream_buffer:output_buffer]
Priority=45                                 #7th line: process priority [1-99]
 AdditionalOptions=                  #8th line: [OPTIONAL] additional commands

In the same way create a file named network.conf with the following syntax:


In the IP field you can type DHCP to automatically get an IP address, in this case leave all the other fields empty. See example:


Save, plug your SqueezeCore USB flash drive to your PC, power on, profit!


I want bit-perfect audio but in the output device list my dac does not appear as “hw:CARD=card_name” but only “default:CARD=card_name”
You can try to type 0 during output selection to not choose any option, then, in additional options (last question) type “-o hw:CARD=card_name,DEV=0”

I want to reset my configuration! How can I do it?
Directly on SqueezeCore: “rm -f /squeezecore/config/squeeze.conf && sync”
From Windows: delete /config/squeeze.conf

But, what about the RT version?
It is a specific build with a custom Real Time kernel; the hardware requirements are different from the generic version:
Minimal Hardware Requirements for RT:
CPU: Only Intel, Only Core2Duo and newer (Xeon, Core i3 i5 i7, new Pentium and Celeron). 2 core 4 thread (recommended 4 physical cores).
The Other requirements are the same of the generic one.

In the RT version the difference is not only in the kernel but there are other tweaks under the hood like:
The player runs on a isolated core with round robin scheduler.
All the DAC USB interrupts are isolated on one core.
The remaining core are for kernel and the remaining interrupts and software running.

Since the RT version has more strict hardware requirements do you have any suggestion for the hardware setup?
I really like mini-ITX and thin-ITX motherboards with Pentium and Celeron N-series (like N3160) or J-series (like j4105 j3455). Those models have 4 cores and very low power consuption.
About bios settings you can try to disable multi-threading and C-states (but I really don’t know if this can affect the sound performance, you can try and come back here to write your feedback)

Thanks to:

  • Marco Curti for Squeezelite-R2
  • TinyCoreLinux team for their awesome distro. Squeezecore is based on Tinycorelinux.

If you are using SqueezeCore and you like it consider to buy me a coffee:


E1DA PowerDAC V2 Review

Have you ever dreamed of being able to drive a full-size planar with a simple usb dac/amp dongle? I have, and I have always wanted a portable device with plenty of power and a parametric EQ integrated. It exists and its name is PowerDAC V2.

What is it?

The PowerDAC V2 is what we usually call a portable dac/amp combo but … without a dac. How? Well, it is a Full Digital Amplifier (FDA), it receives the digital input from the source, it converts it to PWM which is fed to output transistors and then filtered.

Specs and pictures

  • Dimensions:                   75×45.5x19mm
  • Weight:                           68g
  • Power:                             USB 5V power rail no internal battery, 250mA idle current, the device contains up to 5000uF of capacitance and IOS/Android devices can start OTG operation only with Camera_Adapter and USB OTG Y-splitter cable respectively
  • Input:                               USB PCM up to 24b/192kHz
  • Output:                            digitally generated PWM 384kHz + passive LC demodulation balanced output 2.5mm jack 5mm shaft stopper, A&K pinout
  • Output impedance:       1.5Ohm@1000Hz FFT flat top -6dbFS 32Ohm/open load, -.4db drop 
  • Output power:                >320mW@32Ohm@1kHz@THD=1%
  • Output power:                >580mW@16Ohm@1kHz@THD=1%

For full details check the website linked at the end of this review.

As we can see from the specs this device fills the niche of transportable dac/amps, perfect to connect to your laptop while working or studying. If you are asking yourself if you can use it with a mobile phone the answer is: technically yes, practically no. If you try you would have: smartphone, usb y-splitter, PowerDACV2 and a powerbank. This is not my definition of portable so I don’t advise to use it with a phone as source.

As you can see from the pictures it is a shiny little metal box. I really do like the mirror-like plates although they will remain like this only for the first 2 minutes, after that they will be covered by your fingerprints. On the back you can read how is the internal circuit composed, geeky!

When it is powered on it will become warm, don’t put it in your pocket and make sure to use it in free air if you don’t want it to become uncomfortably hot!


I’m currently testing the PowerDAC with my 1MORE Quad Driver, I’ve bought a balanced cable for my Hifiman HE-560 and I’ll update the review when it will arrive.

On the website the sound is described as “razor-like detailed” and “max transparent and max detailed” and the description is completely realistic. Don’t expect to have a warm, colourful sound of a tube amp. The sound is as it should be: detailed, neutral.

With my hybrid iem the background is not completely black, there is a very low background noise so I don’t recommend to use it with low impedance, high sensitivity multi BA iems. (If you use them check the website at the bottom of the review, E1DA produces a portable dac/amp based on ess9038q2m that would be more suitable for you)

Only while playing certain songs I could notice some sibilances and, in general, a slightly harsh sound on highs. My main hypothesis is that the cause is a bit of third harmonic distortion.

All in all I’m really enjoying the sound and the huge amount of power that the PowerDAC is able to delivery to my 1MORE iem (It is important to mention that the PowerDAC was designed to be able to drive a pair of HE-400i, certainly not the easiest over-ear headphone to drive).


Finally the 2.5 TRRS balanced cable for my Hifiman HE-560 has arrived. My main concern was: will the PowerDAC V2 be able to drive them? The answer: mostly yes, but not at 100% as expected. In theory (and practice) a “perfect” amplifier should be able to drive your headphone at 120db peak, given the sensitivity and the impedance of your headphone you can calculate what voltage and current is required. With my HE-560 I can listen to some compressed music at high volume but when I try to listen to a track that is not over-compressed I reach the 0db on the HPToy app and I’d like to go a bit more over. In conclusion with the PowerDAC V2 you can’t drive a pair of Hifiman HE-560, but you have to consider that the HE-560 are one of the most difficult to drive planars on the market. You can drive with plenty of power pretty all the Audeze HPs (excluding LCD-4) and Hifiman HPs (exluding HE-6, Arya and HE5)

HPTOY App and the DSP

To control the volume and all the DSP functions you need to download the HPToy app, available both for Android and iOS. The communication between your smartphone and the PowerDAC is via bluetooth low energy. Due to the metal housing the bluetooth range will be fairly short.

In the app there are the following controls: volume, bass/treble, loudness, filters (pEQ), compressor.

For a detailed explanation of every single feature check the official website, in this review I’m going to write only about the most important: the parametric eq.

When you tap on “filter” the app will rotate in landscape mode and you will be able to use a 7-band parametric equalizer. Below you can see a screenshot and a video tutorial about how to use it.

I think it’s totally useless to say how much can be powerful this feature. The only thing you need to do is visit the following repository:, look for your headphones, download the .png image, import it in HPTOY, stretch it to match X and Y axis, mirror it and then create the EQ following the error curve (the red one). I do not recommend to use the written pEQ values if you want a good result.

If you have an iPhone or an iPad you can create an EQ using biquad coefficients too! This allows you to build a more precise equalization and to use also different type of filters like: low shelf, high shelf, notch, high pass, low pass, band pass. To calculate the coefficients you can use a website like this: (set SR to 96000Hz)

Once you have made your EQ you can save it and even export it as a preset. There are already a lot of in-app available presets for a long list of headphones, but being able to export and import them is a huge advantage for all the PDV2 users.


I usually try to be always objective about audio quality and to not jump on “the hype train” when an interesting product is released. The PowerDAC V2 is a good all-rounder with tons on features, a good audio quality and a lot of power to drive pretty any kind of headphones on the market. The website is full of technical details and you won’t find a single line of marketing bullshits for audiofools. I would easily pay 150€ without any problem for this little shiny metal box and even at 150€ it would be competitive compared to other dac/amp transportable combos. The main “problem” is that you can buy the PowerDAC V2 at 50€, and at this price is one of the best bang for the bucks that I have ever seen.

Nice job!

Official website:

E1DA Products Discord chat:

Head-fi thread:

Logitech Media Server and FreeBSD/FreeNAS

There are 3 ways to install Logitech Media Server on you FreeBSD computer: ports, packages and DIY (yes … you have to compile everything)

Package built by me (beta)

Ports are not constantly updated so I decided to create an installer which is easy to maintain for my personal use.

This will allow you to 1- Install Logitech Media Server, 2- Uninstall Logitech Media Server, 3- Update LMS whenever I’ll publish an updated version (works only if you have installed LMS with this software)

It will install Logitechmediaserver 7.9.3 updated at the latest commit (refer to the date written in the changelog) with these included binaries:

  • SoX with DSD support
  • Flac 1.3.3
  • Faad2 2.8.8
  • Wavpack 4.80.0

Instructions (must be executed as root!)
pkg install curl
curl -A "audiodigitale" -o /usr/local/bin/lms_installer
chmod +x /usr/local/bin/lms_installer

Please, this software is still in beta, I really do need some feedback from you all! If something is not working as expected leave a comment below!

Using this software you are agreeing to its EULA.

For those of you who installed lms_installer when it was in ALPHA please delete it and reinstall it.

Changelog ALPHA

(ALPHA) 18/10/2019. slimserver commit 8a9e9fb, vendor commit 8b05092. First release of installer software, tested on FreeBSD/FreeNAS >= 11	 	 
(ALPHA) 22/10/2019. installer update to fix some bugs
(ALPHA) 14/12/2019. installer update to support FreeBSD 12.1-RELEASE

Changelog Installer

(BETA) 09/01/2020. First beta released. Installer can now auto-update itself
(BETA) 24/01/2020. Software completely rewritten in c++. Added option to choose what version of lms install.
(STABLE) 27/06/2020. Fixed a security bug
(STABLE) 06/07/2020. using upsampling SoX requires libogg and libiconv which are not downloaded by the installer. Fixed

Changelog LMS

(BETA) 09/01/2020. slimserver-vendor commit 8b05092. slimserver commit 8d85ddd
(BETA) 21/01/2020 updated to LMS 7.9.3 slimserver commit 4f7c9f49
(STABLE-7.9.3) 24/01/2020. updated to version 1579448956
(BETA-8.0.0) 24/01/2020. added version 1579786032
(STABLE-7.9.3) 20/03/2020. updated to version 1582867832
(BETA-8.0.0) 20/03/2020. updated to version 1584422335
(BETA-8.0.0) 07/06/2020. updated to version 1591161678

Installing LMS from my installer script means that you are accepting Logitechmediaserver license -> License_eng


Just type:

pkg install portmaster
portmaster audio/logitechmediaserver

IMPORTANT: while configuring the options of all softwares you are going to install, when logitechmediaserver options will be prompted make sure that “TEST” will NOT be ticked.

Note that the last update of this port was at the 11th July 2017.

DIY, aka: compile everything from source

Before starting this is what you need:

  • libtime.a
  • libpatience.a
  • Knowledges about what are jails (I will use CBSD to manage them)

Let’s start creating a jail that we will use to build everything:

cbsd jconstruct-tui

In “pkglist” insert manually:

unzip bash gmake rsync nasm wget libgd gcc perl5-5.24.1 automake libtool

Enter in the jail:

cbsd jstart build
cbsd jlogin build

I’m going to use /tmp to download everything and build lms:

cd /tmp
unzip 7*
tar xjf l*

Let’s start compiling:

cd slimserver-vendor-public-7.9/CPAN
./ -t | tee /tmp/build.log
cd /tmp/logitechmediaserver-7.9.1-1489743085/CPAN/arch/5.24
rm -rf 5.1* && rm -rf 5.8 && rm -rf 5.22 && rm -rf 5.20
cp -Rp /tmp/slimserver-vendor-public-7.9/CPAN/build/arch/5.24/amd64-freebsd-thread-multi .
rm -rf x*

cd /tmp
tar cf FreeBSD-lms-7.9.1.tar logitechmediaserver-7.9.1-1489743085

tar xf f*
cd flac-1.3.2
autoreconf -i
./configure --enable-static --disable-shared

cd /tmp
cd faad2-2.7
./configure --enable-static --disable-shared

cd /tmp
tar xf wavpack-5.1.0.tar.bz2
cd wavpack-5.1.0
autoreconf -i
./configure --enable-static --disable-shared

Now we have to exit from this jail and move everything we have just compiled to a new jail when logitechmediaserver will run.

First of all exit from the build jail:


Create a new jail like we did before including the following packages:

wget perl5-5.24.1 libiconv

cbsd jstart lms
mv /usr/jails/jails-data/build-data/tmp/FreeBSD-lms-7.9.1.tar /usr/jails/jails-data/lms-data/tmp
cbsd jlogin lms

Now I’m going to copy lms and the binaries we have compile above in the “lms” jail. I will include the modified version of SoX able to convert in DSD; for further info: Logitechmediaserver, C-3PO and PCM to DSD conversion

cd /tmp
tar xf F*
pw groupadd -n lms -g 20000
pw useradd -n lms -u 20000 -g lms -s /usr/sbin/nologin -c "Logitech Media Server" -d /nonexistent
mkdir /usr/local/lms
mv logitechmediaserver-7.9.1-1489743085 /usr/local/lms/
cd /usr/local/lms
mv logitechmediaserver-7.9.1-1489743085/* /usr/local/lms
rmdir logitechmediaserver-7.9.1-1489743085
rm -rf Bin/a* && rm -rf Bin/i* && rm -rf Bin/p* && rm -rf Bin/s* && rm -rf Bin/x*
cd Bin
mv sox-FreeBSD sox


Move flac, faad, wavpack binaries into the Bin folder of LMS:

mv /usr/jails/jails-data/build-data/tmp/flac-1.3.2/src/flac/flac /usr/jails/jails-data/lms-data/usr/local/lms/Bin/
mv /usr/jails/jails-data/build-data/tmp/faad2-2.7/frontend/faad /usr/jails/jails-data/lms-data/usr/local/lms/Bin/
mv /usr/jails/jails-data/build-data/tmp/wavpack-5.1.0/cli/wvunpack /usr/jails/jails-data/lms-data/usr/local/lms/Bin/

Back into lms jail:

cbsd jlogin lms
chown -R lms:lms /usr/local/lms
chmod -R 755 /usr/local/lms/Bin
mkdir /var/log/lms
mkdir /var/db/lms
mkdir /var/db/lms/cache
mkdir /var/db/lms/prefs
mkdir /var/db/lms/playlists
chown -R lms:lms /var/db/lms
chown -R lms:lms /var/log/lms
cd /etc/rc.d
chmod 555 lms
echo 'lms_enable="YES"' >> /etc/rc.conf && echo 'lms_logdir="/var/log/lms"' >> /etc/rc.conf && echo 'lms_cachedir="/var/db/lms/cache"' >> /etc/rc.conf && echo 'lms_prefsdir="/var/db/lms/prefs"' >> /etc/rc.conf && echo 'lms_playlistdir="/var/db/lms/playlists"' >> /etc/rc.conf


Now restart the jail and Logitech Media Server will start at boot (if you are lucky 😉 )

cbsd jstop lms
cbsd jstart lms

How to compile Squeezelite-R2

In the download area you can find the .tar.gz archives of the source code used to compile binaries available for download on this website:

  • squeezelite-R2_FULL.tar.gz this is the same source code available in the github repository linked below. Compatible with all O.S.
  • squeezelite-R2_Unix.tar.gz this is the source code compatible only with Unix based system, recommended for building in macOS, FreeBSD and ARM devices.

IMPORTANT: the github repository with updated source code and more information about the project is as always at marcoc1712/squeezelite-R2


IMPORTANT: to correctly stream DSD format you need to have on your O.S. ALSA >= 1.0.29

Those distros are currently (March 2017) compatible:

- Debian: >= 9.0 ("Stretch")
- Ubuntu: >= 16.04
- Mint: >= 18
- Fedora: >= 22
- RHEL e derivate (CentOS, Scientific Linux): >= 6.x
- openSUSE: >= 42.1
- Slackware: >= 14.2
- Arch: current
- Gentoo: current

Install the dependencies:

sudo apt-get install libasound2 libasound2-dev libflac-dev libmad0-dev libfaad-dev libmpg123-dev libvorbis-dev


make -f Makefile.debian # or Makefile.linux if you are using the *Unix.tar.gz

RaspberryPi and other SBC

Important: Raspbian is not compatible because it uses an old version of alsa.
Please use a O.S. with alsa >= 1.0.29 such as Ubuntu server 16.10

sudo apt-get install libasound2 libasound2-dev libflac-dev libmad0-dev libfaad-dev libmpg123-dev libvorbis-dev

make -f Makefile.rpi

If you are using RaspberryPi3 with an ARM64 compatible O.S., after installing the dependencies run:

make -f Makefile.rpi_ARM64


Install brew ->

brew install portaudio flac mad faad2 mpg123 libvorbis

make -f Makefile.macOS-64bit


make -f Makefile.macOS-32bit


sudo pkg install portaudio gmake flac libmad faad2 mpg123 libvorbis

gmake -f Makefile.freebsd

RaspberryPi and other SBC

sudo pkg install portaudio gmake flac libmad faad2 mpg123 libvorbis

gmake -f Makefile.raspbsd

If you are using a RaspberryPi3 with an ARM64 compatible O.S. then run:

sudo pkg install portaudio gmake aarch64-binutils flac libmad faad2 mpg123 libvorbis

gmake -f Makefile.raspbsd_ARM64


How to compile SoX

In the download area you can find the .tar.gz archives of the source code used to compile the binaries available for download on this website:

  • sox.tar.gz this version has opus support disabled because it causes some problems on macOS and FreeBSD and is therefore compatible with all O.Ss.

IMPORTANT: the GitHub repository with updated source code and more information about this project is as always at mansr/sox


Every Linux distribution has its own package manager and its own packages, the following applies to Ubuntu but it can easily tweaked to work elsewhere. Install the dependencies first:

sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev libao-dev libflac-dev libmp3lame-dev libtwolame-dev libltdl-dev libmad0-dev libid3tag0-dev libvorbis-dev libpng-dev libsndfile1-dev libwavpack-dev

Run the following:

autoreconf -i

If you wish to compile a static linked binary : Coming soon …


You have three choices to install the dependencies:

1- Download each tarball from its website (only the ones you need) and compile them all:

Lame MP3 encoder
Twolame MP2 enc.
MAD MP3 decoder
MP3 ID3 tags
Ogg Vorbis
PNG zlib

2- Use ports <- Recommended!


3- Use packages <- Fastest

pkg install opencore-amr libao flac ladspa twolame libltdl libmad libid3tag magic libvorbis png libsndfile wavpack

P.S. lame is not included in the package list because you need to compile it from ports.

As you can see I haven’t included opus in the list above due to some issues with this audio codec in O.Ss different from Linux.


For a standard configuration:

autoreconf -i

If you want a static linked binary just take all the libraries you compiled before with extension *.a and copy them to a folder ex. /ex/folder and then:

autoreconf -i
./configure CFLAGS='-static' LDFLAGS='-static -L/ex/folder' --disable-shared --with-distro='FreeBSD 11'


Just use Brew ->

brew install opencore-amr libao flac two-lame libtool mad libid3tag libmagic libvorbis libpng libsndfile wavpack lame


For a standard configuration:

autoreconf -i

If you want a static linked binary just take all the libraries you compiled before with extension *.a and copy them to a folder ex. /ex/folder, then run:

autoreconf -i
./configure LDFLAGS='-static -L/ex/folder' --disable-shared --with-distro='macOS 10.12 Sierra'

Logitechmediaserver, C-3PO and PCM to DSD conversion

In this tutorial I’m going to illustrate how to implement and enable PCM->DSD conversion on-the-fly on Logitech Media Server. This is possible thanks to the plugin C-3PO and a modified version of SoX and Squeezelite-R2.

For a complete introduction and description of what is Logitech Media Server and how to install and use it you can read this Marco Curti’s guide -> Introduction to Squeezebox Server (translation in English will be available soon)


First of all we have to substitute the original SoX binary package in LMS with the modified one; go to the directory that contains LMS binaries:


cd /usr/share/squeezeboxserver/Bin/ARCH

Where “ARCH” is the architecture of your operative system.


cd /usr/local/share/logitechmediaserver/Bin


cd /Library/PreferencePanes/Squeezebox.prefPane/Contents/server/Bin/darwin


cd C:\Program Files\Squeezebox\server\Bin\MSWin32-x86-multi-thread

Then remove the “old” sox, download the modified one and rename it in “sox”.

*nix O.S.

rm sox && wget https://audiodigitale/repo/sox-VERSION

You can find all the versions of SoX for different O.S. here -> Download SoX

The binaries in the download area are statically linked, so you don’t have to install any dependencies!

If you want to compile SoX by yourself in the download area there is the .tar.gz archive of the same version of SoX used to compile the binaries; otherwise you can also clone this github repository
-> mansr/sox

If you have any doubt follow this guide -> How to compile SoX


To install C-3PO please insert this repository in the lms plugin page :

If you want to read more documentation about C-3PO follow this link -> C-3PO Transcoding Helper (translation in English will be available soon)

Project with source code on github -> marcoc1712/C-3PO

Particular instruction for FreeBSD: in this O.S. the directory that contains the binary of perl is different from linux, so you have to modify this file:


and replace #!/usr/bin/perl with #!/usr/local/bin/perl


Now your server should be ready to trascode PCM files to DSD, we just need to setup the client:

Please download the correct version for you O.S. here -> Squeezelite-R2

If you don’t know how to use it please read this guide -> Squeezelite-R2 Guide (translation in English will be available soon)

If you want to compile Squeezelite-R2 by yourself in the download area there is the .tar.gz archive of the same version of squeezelite-R2 used to compile the binaries; otherwise you can also clone this github repository -> marcoc1712/squeezelite-R2

If you have any doubt follow this guide -> How to compile Squeezelite-R2

Do you want to install and setup every single option of squeezelite easily? You can do it with Falcon, a practical and user-friendly web interface to manage every aspect of squeezelite! (Only for linux, beta)

Do you already know how to use squeezelite and you just want to start it at boot time?

Init Script (Linux)

sudo nano /etc/init.d/squeezelite

# Provides: squeezelite
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Script per l'avvio di squeezelite
# Description: ---


OUTPUT= # Specify output device, default -> default, - = output to stdout
NAME= # Set the player name
LMS= # <server>[:<port>]
ALSA= # -a <b>:<p>:<f>:<m> Specify ALSA params to open output device, b = buffer time in ms or size in bytes, p = period count or size in bytes, f sample format (16|24|24_3|32), m = use mmap (0|1)
BUFFER= # <stream>:<output> Specify internal Stream and Output buffer sizes in Kbytes
SCHEDULER= # <scheduler>:<rt priority> Scheduler: other, fifo, rr. Priority: 1-99 -> 1 min priority 99 max priority
NICENESS= # nice level -20 max priority 19 min priority


case "$1" in
echo "Starting Squeezelite"
start-stop-daemon -S --chuid $USER -N $NICENESS -P $SCHEDULER --exec /squeezelite -- -z -o $OUTPUT -n $NAME -s $LMS -a $ALSA -b $BUFFER -D
echo "Stopping Squeezelite"
start-stop-daemon -K --name squeezelite
echo "Usage: /etc/init.d/squeezelite {start|stop}"
exit 1

Save the file and:

sudo chmod +x /etc/init.d/squeezelite
sudo chown root:root /etc/init.d/squeezelite
sudo update-rc.d squeezelite defaults
sudo update-rc.d squeezelite enable

P.S. Please pay attention when you set the scheduler and the niceness; if you don’t know what are you doing remove “-N $NICENESS -P $SCHEDULER” from the script. If you have any question about this init script ask your questions in the comments below.

Automator (macOS)

Coming soon …

Batch script (Windows)

Coming soon …