Skip to content

Instantly share code, notes, and snippets.

@bmaupin
Last active July 11, 2022 15:44
Show Gist options
  • Save bmaupin/c87ac42ecbbfcff4ad0d to your computer and use it in GitHub Desktop.
Save bmaupin/c87ac42ecbbfcff4ad0d to your computer and use it in GitHub Desktop.
Install Levelator on Ubuntu 14.04
#!/bin/bash
levelator_version=Levelator-1.3.0-Python2.5
# Install dependencies
if ! dpkg -l python2.5 &> /dev/null; then
sudo apt-add-repository -y ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install -y python2.5
sudo apt-add-repository -ry ppa:fkrull/deadsnakes
fi
sudo apt-get -y install coreutils libc6:i386 libc6:i386 libflac8:i386 libgcc1:i386 libogg0:i386 libsndfile1:i386 libstdc++6:i386 libvorbis0a:i386 libvorbisenc2:i386
# Download and extract Levelator
wget http://web.archive.org/web/20110616011312/http://cdn.conversationsnetwork.org/$levelator_version.tar.bz2
tar -xvf $levelator_version.tar.bz2
# Make wxPython import not fail
mkdir $levelator_version/.levelator/wx
touch $levelator_version/.levelator/wx/__init__.py
# Install wrapper script
cat << LevelatorPy > $levelator_version/.levelator/levelator.py
from __future__ import with_statement
import logging
import os
import os.path
import sys
if len(sys.argv) != 4:
sys.exit('Usage: %s input.wav output.wav' % os.path.basename(sys.argv[1]))
# Hide noise from proj import
with open(os.devnull,'wb') as null:
sys.stdout = null
import proj
# Log to stdout
root = logging.getLogger()
root.removeHandler(root.handlers[0])
ch = logging.StreamHandler(sys.__stdout__)
root.addHandler(ch)
# Hide more noise
ch.setLevel(logging.WARNING)
l = proj.levelator.Levelator(proj.worker.WorkerThread)
ch.setLevel(logging.INFO)
l.callLeveler(sys.argv[2], sys.argv[3])
LevelatorPy
# Point to wrapper script
sed -i.bak '/# Launches/a infilepath=`readlink -f "$1" 2>/dev/null`\noutfilepath=`readlink -f "$2" 2>/dev/null`' $levelator_version/levelator
sed -i 's/python main.py/python2.5 levelator.py "$0" "$infilepath" "$outfilepath"/' $levelator_version/levelator
# Make it so it can be run from a symlink
sed -i 's@^cd.*@cd `dirname "$(readlink -f "$0")"`/.levelator@' $levelator_version/levelator
# Put it in place
sudo mv $levelator_version /opt
sudo ln -s /opt/$levelator_version/levelator /usr/local/bin/levelator
rm $levelator_version.tar.bz2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment