FreeLCS User Manual


Introduction

Features

Requirements

Where to learn about Docker

Installation

Create configuration for FreeLCS

Setting up the host Docker machine

Security updates and FreeLCS image backups

Editing backup_freelcs_docker_images.service

Editing backup_freelcs_docker_images.timer

Activating FreeLCS backup and update script timer

FFmpeg allowed wrapper and codec formats

FreeLCS Docker containers explained

Timezone and Docker

Usage

Loudness History Graphics

Loudness history graphics when target loudness is set to -16, -23 and -31 LUFS

Machine readable results

MXF audio remixing

Mounting the server HotFolder from OS X

Mounting the server HotFolder from windows 11 making it permanent

Mounting the server HotFolder from Linux

Progress Report

How to report a bug

FreeLCS development

FAQ


















Introduction

FreeLCS stands for Free Loudness Correction Server. FreeLCS lets you automatically correct audio files to EBU R128 target loudness level.

The software lets you easily set up a server that shares one of it's folders to the network. Users of your network can then drop audio files to the server for automatic loudness correction. For each processed file the server also creates a loudness history graphics file which shows loudness variations inside the file.

FreeLCS uses other open source programs to get the job done (Linux, libebur128, gnuplot, FFmpeg, sox, mediainfo). All software is free and Open Source.


Features




Requirements

Where to learn about Docker

You can learn about Docker for example here by reading through the free course material: https://courses.mooc.fi/org/uh-cs/courses/devops-with-docker

However you don't need to do that before setting up FreeLCS 4.x as every step is explained in detail below. Later however you might want to learn more about Docker's features.

Installation

Installation outline

First create FreeLCS config files by running config_editor in your browser and save four config - files to your computer. You can run config_editor here: Config Editor

Things you need to do on your Docker host - computer:

Depending on the options you set while creating the configuration this creates up three docker - images / containers.


Create configuration for FreeLCS

First you run the config_editor to create four configuration files FreeLCS needs You can run it by clicking here: Config Editor

FreeLCS default configuration sets up LoudnessCorrection at -23 LUFS, Samba - server and Progress - Report. If this is all you need then you can just scroll down the config_editor page and save four different configuration files needed by FreeLCS.


On the top of the configuration editor you can define the following values:



Setting up the host Docker machine

Security updates and FreeLCS image backups

Keeping your setup secure requires:

This section describes how set all this up.

Backing up FreeLCS Docker - images

Backing up FreeLCS Docker - images requires:

The script backup_freelcs_docker_images.py lets you do the following:

There are example systemd service (unit) and timer configuration files in the FreeLCS directory. The files are: backup_freelcs_docker_images-example.service and backup_freelcs_docker_images-example.timer. These need to be modified for your specific setup.

First create a directory for FreeLCS docker image backups like: /home/UserName/freelcs/docker_image_backups

Editing backup_freelcs_docker_images.service

Make a copy of the example systemd unitfile with a new name

Edit backup_freelcs_docker_images.service and change the following line point to the absolute path of where the script backup_freelcs_docker_images.py is located, for example:

This will tell the script that FreeLCS docker config files are in: /home/john/FreeLCS-4.0 and tells the script to backup into directory: /home/john/docker_image_backups and keep the 12 latest backups and delete backups older than that. If you run this weekly it will keep the last 3 months of backups available.

Enable host machine security updates

Optionally you can uncomment the following lines and enable the script to also install security updates for you host - machine Ubuntu LTS:


Editing backup_freelcs_docker_images.timer

The systemd timer - file defines when and how often the FreeLCS backup and update - service defined above will run.

First make a copy of the systemd timer - file with a new name: cp   backup_freelcs_docker_images-example.timer   backup_freelcs_docker_images.timer

Now edit backup_freelcs_docker_images.timer and change the line that defines when and how often the service will run. In the example below FreeLCS backup script will run every week early on monday morning at 05:00:00 AM.

Here are a couple of sites that explains systemd timer - functionality:

Activating FreeLCS backup and update script timer

Now we will activate the FreeLCS backup and update script as a systemd service and install a timer to run in periodically:

Note that the systemd unit- and timer - files needs to be named identically and only the last part of the names (.service and .timer) being different.

FreeLCS Docker containers explained

FreeLCS builds up 1 - 3 Docker images / containers depending upon choices you make in the Config Editor

A image / container contains just the programs and libraries the apps running inside it needs. All containers use the kernel and network of the host machine and apps running inside containers are isolated from the hardware and software of the host machine.

Docker calls the instance of the app and its dependencies an container when it is running and its version that is stored on the disk is called an image.

Timezone and Docker

Programs running in the Docker environment get time from the host machine. FreeLCS Docker - configuration in compose.yml sets FreeLCS os images to get the timezone of the host - machine. Timezone affects times displayed on progress report and loudness history graphics and FreeLCS docker container log timestamps.

The underlined lines in the picture mean: show the Docker host - machine files /etc/timezone and /etc/localtime as read only files also inside the docker container at the same exact path.



Usage

FreeLCS usage is very simple.
  1. First you mount FreeLCS HotFolder through the network.
  2. Then you drag some files to the HotFolder .
  3. A couple of minutes later you can drag loudness corrected files back from "HotFolder / 00-Corrected_Files" to your computer .

Mounting of the HotFolder is explained in it's own chapter.











Loudness History Graphics


Loudness history graphics when target loudness is set to -16, -23 and -31 LUFS (from top to bottom)

The color for the line for target loudness is:



Mounting the server HotFolder from OS X









Making an permanent alias to the HotFolder in OS X

When you have mounted the HotFolder you can make an alias for it that stays on your desktop. You can then skip all the steps above and mount the HotFolder just by double clicking on the alias.







Mounting the server HotFolder from windows 11 making it permanent


Note that samba passwordless share does not not work anymore by default for windows 10 and windows 11 24H2. These operating system versions require smb - mounts with username and password authentication. See more details for a workaround and alternative Samba configuration in this section of the manual: Username and Password authentication for windows 10 and 11








Mounting the server HotFolder from Linux

In Linux use command (as the root - user): mount -t cifs -o username=freelcs,password=freelcs //192.168.1.168/LoudnessCorrection/ /mnt/       (Adjust the IP - address and the last foldername to match your system)


Progress Report

If you selected "Write html progress report" = "yes" in the installer then you can navigate to the IP and port 9000 of your Docker - machine (for example 192.168.1.100:9000) with your browser and see the loudness calculation queue. The progress report is updated every 5 seconds and it shows how many files are waiting for a processing slot to open, what files are currently processed and the names of last files that were processed and the time processing was finished.

The upper part of the window shows the names of next 10 first files that are coming in for processing and above that the total number of files waiting in queue is shown.

The middle part shows the names of files that are currently being processed. The number of files that are simultaneously processed depends on what you selected as the "Number Of Processor Cores To Use" in the installer. Each file is simultaneously processed by two processor cores so if you selected six cores to be used, then three files are processed at the same time (in the example picture below 14 cores are assigned, so seven files can be processed simultaneously).

The bottom of the page shows the last files that were processed.


How to report a bug

If you have found an error in FreeLCS software or documentation please report it so that it can be corrected.

If you find that FreeLCS software crashes or behaves in ways it should not, try first to find out if the problem is caused by a file in the HotFolder. If a certain file or file format causes the problem please make a copy of the file / files for later use. The files might be needed to confirm that the bugfix really solves the problem.

When you file a bugreport keep in mind that the developer needs to be able to reproduce the bug in his own system in order to fix it. So when reporting a bug report the following:
Report bugs here (requires creating an free account): https://sourceforge.net/p/freelcs/tickets/
When you have logged in navigate to the link above and click the "Create Ticket" - button on the left. When you create a ticket, the developer gets the bugreport in email.




FreeLCS development

FreeLCS development happens on Github ( https://github.com/mhartzel/freelcs). All new versions of software are uploaded there before official release. Unreleased versions are untested so it is recommended that normal users do not use these versions on their production servers. The reason for this is that when new program code is added and old is modified it is possible that new bugs creep in.

If however you have encountered a bug you can navigate to that webpage and check the changelog there (Documentation/Changelog.txt) to see if the bug has already been fixed. If you want to test the latest software versions you can download all files in the git-repository like this: