Yes. FreeLCS is open source so you have access to all the source files and you can modify them anyway you see fit. Also you can install this software on as many computers as you like, there are no license fees.
FreeLCS is published under the Gnu GPL 3 license. The text of the license is here: https://www.gnu.org/licenses/gpl-3.0.en.html
Programming languages used:
Yes :) When you install the software you can choose which method of peak measurement is used: sample peak or TruePeak. Also TruePeak limiting is used when peak limiting is needed.
Important notes:
Files like these needs to be prepared for a high target loudness by eliminating too wide loudness variations. FreeLCS is not a multi purpose compressor and it will not handle gracefully extreme cases like this.
Beginning from May 2026 the plan is to support all stable Ubuntu LTS Docker - image releases. Canonical will release these once every two years.
FreeLCS 4.0 and 4.1 Supports:
FreeLCS 3.11 Supports:
FreeLCS 3.10 Supports:
FreeLCS 3.9 Supports:
FreeLCS 3.8 Supports:
FreeLCS 3.7 Supports:
FreeLCS 3.6 Supports:
FreeLCS 3.5 Supports:
FreeLCS 3.4 supports:
FreeLCS 3.3 supports:
FreeLCS 3.2 supports:
FreeLCS 3.0 supports:
FreeLCS 2.4 supports:
If you enable FreeLCS to send error messages by email, then you probably sometimes get some messages that at first might seem puzzling. Here are the explanations :)
If you get the following error message, then it means that FreeLCS has encountered an error that it can not recover from and has stopped. FreeLCS (namely the LoudnessCorrection - program) starts jobs in threads that periodically sends timestamps to the Docker image where Heartbeat_Checker runs in. HeartBeat_Checker sends you email if timestamps stops arriving.
You can restart FreeLCS either by rebooting the computer or going into the directory where the FreeLCS apps and config - files are and giving these commands:
docker compose down
docker compose up -d
Subject: Mikan_Arch-Serveri Error Message
From: VirtualMachine_1@company.com
LoudnessCorrection has stopped updating main_thread timestamps. If you got the message above informing you that a FreeLCS thread has
stopped updating timestamps, then you might get the following message if
the problem was caused by some temporary glitch that just prevented
FreeLCS from updating the timestamps in time, but did not crash FreeLCS.
This message tells you that FreeLCS is working normally again. Subject: Mikan_Arch-Serveri Error Message From: VirtualMachine_1@company.com
All Heartbeat timestamps started updating again at: 2026.05.26 at 09:48:07 These error messages are usually harmless and can be ignored. The HeartBeat_Checker - program sends this message when FreeLCS starts
up. If you set up a weekly reboot for the machine, then this message
greets you when FreeLCS service is up and running. Subject: HeartBeat_Checker has started. From: VirtualMachine_1@company.com
HeartBeat_Checker started: 2026.05.25 at 22:02:15 You may see this error message if you mount FreeLCS HotFolder with the
NFS protocol. This error happens when a user uses a program that creates a
file on the FreeLCS disk and then unlinks it. According to: http://serverfault.com/questions/201294/nfsxxxx-files-appearing-what-are-those
Linux keeps this file available to the user while hiding the file from
others. The file is renamed with a name that starts with a dot and Linux
filesystem hides these files from file listings by default. The hidden file will disappear when the user closes the program that
keeps the file open. Subject: Mikan_Arch-Serveri Error Message From: VirtualMachine_1@company.com 2014.05.07_at_15.31.23 Error
deleting files queued for deletion [Errno 16] Device or resource busy:
'/data/LoudnessCorrection/. LoudnessCorrection info:
I haven't been able to find a way to stop users from deleting files from
the HotFolder without affecting other file processing. The following error
message is caused when a user copies a file to the server, and the server
starts processing it. Now the user deletes the file and replaces it with a
file with the same name but with different size. FreeLCS notices that file
size has changed during processing. Subject: Mikan_Arch-Serveri Error Message This error happens when user deletes a file that FreeLCS is about to
start processing. FreeLCS makes a final check before processing and
notices that the file is no longer available. From: VirtualMachine_1@company.com LoudnessCorrection info: This error message can mean one of two things. If you get these messages
and they are all about the same audio file, then the user has deleted the
file just when FreeLCS was about to start processing it. If you get these messages and they mention several files, then this can
mean that the hard disk might be failing. I have not tried to get rid of
these error messages since they might indicate a hard disk failure. From: VirtualMachine_1@company.com LoudnessCorrection
info:
FreeLCS uses sox to do the actual loudness adjustment of files. This
error message comes directly from sox and happens when file size announced
in a files header does not match the actual file size. This in turn might
be caused for example by a dropped network connection ending file transfer
prematurely. Subject: Mikan_Arch-Serveri Error Message From: VirtualMachine_1@company.com 2013.12.17_at_16.15.59 Sox
error: BUU_Radslor_syskonen_degeri. LoudnessCorrection info: Commandline: /usr/bin/LoudnessCorrection.py
-configfile /etc/Loudness_Correction_ FreeLCS uses the smb - protocol to share its Hotfolder to the network.
Samba is the open source implementation of the smb - protocol that FreeLCS
uses. Apple used Samba as its smb - implementation until OS X version
10.6. At this point Samba changed its license in a way that Apple didn't
like and Apple decided to write their own smb implementation (smbx) from
scratch. This is a huge task and there has been serious problems with OS
X's interaction with other smb - implementations. OS X versions 10.7 -
10.10 all suffer from these problems. OS X incompatibility with the smb standard causes file transfers to
FreeLCS - server randomly stop with one of the following error messages
(these are from OS X 10.10.4): If you have problems described above, then try the
workarounds below and try to copy files one by to the FreeLCS server. It
seems most of the times I get these errors I have tried to transfer
multiple files in one go. When you make the connection to FreeLCS replace "smb://"
with "cifs://" at the beginning of the mount command.
Save the command to the mount command list for later use. Force all smb - connections to use the older cifs -
protocol by giving this command in the Terminal. This applies only to the
current user. echo "[default]" >>
~/Library/Preferences/nsmb.conf ; echo
"smb_neg=smb1_only" >>
~/Library/Preferences/nsmb.conf Yes. FreeLCS 3.12 and later creates a human readable config file LoudnessCorrection_Settings.json It may be a bit convoluted but the options are there as variable names and values right after it. I started working on FreeLCS in 2012 and then there was no AI capable of doing coding. So everything was written manually by a human being. However while modifying FreeLCS to run on Docker I experimented with AI when translating my Python3 versions of heartbeat_checker and progress_report to Go. This was not a straight forward process since I first converted these Python3 programs to communicate with each other through network instead of writing files to disk. I did not use AI for this. When the conversion was ready I realized that the Python3 libraries I used for network communication were not safe for production so I explored other languages and found that Go network / web libraries were fast, safe and stable. I had some previous experience in Go and I had done another open source project with it https://github.com/mhartzel/ffcommander so I decided to convert these two programs to Go. Although these are quite small that is a lot of work. My brother is a real programmer at his dayjob :) and he had had very positive experiences with AI - coding at his work so I decided to try it out. Gemini made the first Go - versions of these two programs but the quality was not good. I used these as skeletons and practically wrote them again. AI - code quality was not good because it used short unclear variable names that made the code very hard to read and understand and it also used several different coding styles at once making the code difficult to follow. It also introduced bugs and left out some features of the original programs. Part of these problems might be due to me not being able to prompt it correctly. I learned also that coding is so much fun that I don't want to give that away to a robot :)
The thread has probably crashed and a restart of the script is needed.
Last update happened at: 2026.05.26 at 10:08:31
LoudnessCorrection has stopped updating progress_report timestamps.
The thread has probably crashed and a restart of the script is needed.
Last update happened at: 2026.05.26 at 10:08:35
FreeLCS version: 4.0
LoudnessCorrection info:
--------------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile /etc/LoudnessCorrection_Settings.json
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 27822
LoudnessCorrection version: 400
HeartBeat Checker info:
--------------------------------------
Commandline: /usr/bin/heartbeat_checker -configfile /etc/LoudnessCorrection_Settings.json
PID: 1
HeartBeat Checker version: 400
All Heartbeat timestamps started updating again
FreeLCS version: 4.0
LoudnessCorrection info:
--------------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile /etc/LoudnessCorrection_Settings.json
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 27822
LoudnessCorrection version: 400
HeartBeat Checker info:
--------------------------------------
Commandline: /usr/bin/heartbeat_checker -configfile /etc/LoudnessCorrection_Settings.json
PID: 1
HeartBeat Checker version: 400
started updating again at: 2014.05.10 at 23:33:49
Non-critical error messages
HeartBeat_Checker has started
FreeLCS version: 4.0
LoudnessCorrection info:
--------------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile /etc/LoudnessCorrection_Settings.json
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 19
LoudnessCorrection version: 400
HeartBeat Checker info:
--------------------------------------
Commandline: /usr/bin/heartbeat_checker -configfile /etc/LoudnessCorrection_Settings.json
PID: 1
HeartBeat Checker version: 400
Error deleting files queued for deletion
2014.05.07_at_15.31.28 Error deleting files queued for
deletion [Errno 16] Device or resource busy:
'/data/LoudnessCorrection/.
------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile
/etc/Loudness_Correction_
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 1616
LoudnessCorrection version: 229
File size has changed during processing
2014.05.05_at_16.56.14 ERROR !!! in libebur128 timeslice
calculation: File size has changed during processing from: 3168838 ->
65536: HALONEN 100.wav
LoudnessCorrection info:
------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile
/etc/Loudness_Correction_Settings.json
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 1616
LoudnessCorrection version: 229
Error reading HotFolder file metadata
Subject: Mikan_Arch-Serveri Error Message
2014.05.14_at_13.40.44 Error reading HotFolder file
metadata [Errno 2] No such file or directory:
'/data/LoudnessCorrection/KUN_Putkiremonttipuffi GRAF.wav'
--------------------------------------
Commandline: /usr/bin/LoudnessCorrection.py -configfile
/etc/Loudness_Correction_Settings.json
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 1699
LoudnessCorrection version: 229
Many error messages for one audio file
Subject: Mikan_Arch-Serveri Error Message
2013.11.22_at_12.02.18 ERROR !!! I could not
parse sox sample rate string: '' for file: Channels-2.0.flac
2013.11.22_at_12.02.18 ERROR !!! I could not
parse sox bit depth string: '' for file: Channels-2.0.flac
2013.11.22_at_12.02.18 ERROR !!! I could not
parse sox sample count string: '' for file: Channels-2.0.flac
2013.11.22_at_12.02.18 ERROR !!! in
libebur128 timeslice calculation: Error accessing file: [Errno 2] No
such file or directory:
'/mountpoint/raid-disk/LoudnessCorrection/Channels-2.0.flac'
2013.11.22_at_12.02.18 ERROR !!!!!!! FILE
Channels-2.0.flac dissapeared from disk before processing started.
------------------------------
Commandline: /usr/bin/LoudnessCorrection.py
-configfile /etc/Loudness_Correction_
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 1773
LoudnessCorrection
version: 229
Premature EOF on .wav input file
--------------------------------------
Server name: Mikan_Arch-Serveri
Target loudness: -23 LUFS
PID: 1847
LoudnessCorrection
version: 229
Errors
copying files from OS X 10.7 - 10.10 to FreeLCS - Server



After digging around the internet I found two workarounds for the problem.
The solution is to force OS X to use an older version of the smb - protocol
called cifs. These solutions are from this page: http://www.zdnet.com/article/mavericks-smb2-problem-and-fixes
Important !!!!!!!
Workaround 1:
Workaround 2:
Is
there a way to find out FreeLCS options used during installation ?
Was AI used when programming FreeLCS ?