[LAU] looking for command-line/scriptable mastering software
Kevin Cosgrove
kevinc at cosgroves.us
Thu Nov 22 17:57:30 UTC 2012
On 22 November 2012 at 9:45, Eric Wong <normalperson at yhbt.net> wrote:
> I like using makefiles because I can make small edits to code, and when
> I run "make", it'll only rebuild the part of a project which changed.
Maybe some of the processing issues are those which your Makefile
will attend to. So, having a really good Makefile is essential.
I've attached an old Makefile of mine, which I won't call "good".
But, it enabled a lot of semi-automation. I say "semi" because I
had to tailor a number of magic constants.
G'luck...
--
Kevin
-------------- next part --------------
# $Id: Makefile,v 1.27 2004/07/01 00:14:28 kevinc Exp kevinc $
############### TODO LIST ###############
#
# 1. Sound file mastering issues:
# DONE - Choose mail-order-bride version "fx" or previous ambiance
# DONE - remove noise in tails. moderate: PoV, IF, Pewter, CR
# DONE - mild: NT, SL
# DONE - confirm R/L swap on newest MoB
# DONE - confirm R/L swap
# DONE - confirm vocal centerings
# DONE - renormalize inter-song volumes
# decide CD song order
#
#########################################
############### TOP-LEVEL FILE DEFINITIONS ###############
INPUT:= 7th-island-fx.wav \
chain-reaction-fx.wav \
inner-face-fx.wav \
mail-order-bride-fx.wav \
no-time-fx.wav \
ode-to-bela-human-fx.wav \
pewter-sky-fx.wav \
point-of-view-fx.wav \
robs-strawman-13may02.wav \
robs-strawman-12aug02.wav \
robs-strawman-13may02-drums.1.wav \
robs-strawman-13may02-drums.2.wav \
robs-strawman-13may02-drums.3.wav \
robs-strawman-13may02-drums.4.wav \
robs-strawman-13may02-drums.5.wav \
simple-life-fx.wav
FADES:= $(INPUT:%.wav=%-norm-trim-fade.wav)
IMD5:= $(INPUT:%.wav=%.md5)
ISTATS:= $(INPUT:%.wav=%.stat)
LAMES:= $(INPUT:%.wav=%.mp3)
NSTATS:= $(INPUT:%.wav=%-norm.stat)
OMD5:= $(INPUT:%.wav=%-done.md5)
OSTATS:= $(INPUT:%.wav=%-done.stat)
OUTPUT:= $(INPUT:%.wav=%-done.wav)
PADS:= $(INPUT:%.wav=%-norm-trim-fade-pad.wav)
SNAMES:= $(INPUT:%.wav=%)
TRIMS:= $(INPUT:%.wav=%-norm-trim.wav)
############### EFFECTS CATALOG ###############
BREJ:= -brej
FADE:= -fade
HPF:= -hpf
LR:= -lr
NORM:= -norm
NULL:=
PAD:= -pad
PAN:= -pan
TRIM:= -trim
VOL:= -vol
WAV:= .wav
############### PRESERVED INTERMEDIATES ###############
.PRECIOUS: \
%-done.wav \
%-hpf.stat \
%.stat \
$(TOCMASTER) \
%-vol.stat
############### PROGRAMS & PATHS ###############
CDRDAO= /usr/bin/cdrdao
CDRDEV= 0,3,0
CDRDRV= generic-mmc:0x0
CHMOD= /bin/chmod
CP= /bin/cp
ECHO= /bin/echo
LAME= /usr/bin/lame
LN= /bin/ln
MD5SUM= /usr/bin/md5sum
MV= /bin/mv
NORMALIZE= /usr/bin/normalize
RM= /bin/rm -f
SOX= /usr/bin/sox
TOCFILE= gcdmaster-tracks.tmp
TOCMASTER= gcdmaster-tracks
TOUCH= /bin/touch
############### DEFAULT TARGET ###############
default: help
############### USER TARGETS ###############
help:
@$(ECHO) "This Makefile is an aid in mastering song files."
@$(ECHO) "Targets are:"
@$(ECHO) ""
@$(ECHO) " all runs: imd5s istats omd5s ostats outputs & mp3s"
@$(ECHO) " burn burn a CD"
@$(ECHO) " clean removes interim files"
@$(ECHO) " clobber removes all recreatable files"
@$(ECHO) " imd5s MD5 checksum input files"
@$(ECHO) " istats report statistics on input files"
@$(ECHO) " lames encode MP3s using 'lame'"
@$(ECHO) " nstats report statistics for normalized songs"
@$(ECHO) " omd5s MD5 checksum output files"
@$(ECHO) " ostats report statistics on input files"
@$(ECHO) " outputs create final masters"
@$(ECHO) ""
# @$(ECHO) " fades fade out song endings"
# @$(ECHO) " trims trim garbage from song starts"
all: imd5s istats omd5s ostats outputs lames
burn: $(TOCFILE)
$(CDRDAO) write --speed 8 -v0 --device $(CDRDEV) \
--driver $(CDRDRV) --buffers 10 $(TOCFILE)
clean:
-$(RM) fades
-$(RM) imd5s
-$(RM) istats
-$(RM) lames
-$(RM) mp3s
-$(RM) nstats
-$(RM) omd5s
-$(RM) ostats
-$(RM) outputs
-$(RM) trims
clobber: clean
-$(RM) $(ISTATS)
-$(RM) $(LAMES)
-$(RM) $(NSTATS)
-$(RM) $(OSTATS)
-$(RM) $(OUTPUT)
-$(RM) *-brej.wav
-$(RM) *-fade.wav
-$(RM) *-hpf.stat
-$(RM) *-hpf.wav
-$(RM) *-lr.wav
-$(RM) *-norm.stat
-$(RM) *-norm.wav
-$(RM) *-pan.wav
-$(RM) *-trim.wav
-$(RM) *-vol.stat
-$(RM) *-vol.wav
-$(RM) *.md5
-$(RM) *.mp3
-$(RM) *.stat
-$(RM) test.mp3
-$(RM) test.wav
# This breaks clean-up of intermediate wave files
# fades: $(FADES)
# -$(RM) $@
# -$(TOUCH) -f $@
imd5s: $(IMD5)
-$(RM) $@
-$(TOUCH) -f $@
istats: $(ISTATS)
-$(RM) $@
-$(TOUCH) -f $@
lames: $(LAMES)
-$(RM) $@
-$(TOUCH) -f $@
nstats: $(NSTATS)
-$(RM) $@
-$(TOUCH) -f $@
omd5s: $(OMD5)
-$(RM) $@
-$(TOUCH) -f $@
ostats: $(OSTATS)
-$(RM) $@
-$(TOUCH) -f $@
outputs: $(OUTPUT)
-$(RM) $@
-$(TOUCH) -f $@
# This breaks clean-up of intermediate wave files
# trims: $(TRIMS)
# -$(RM) $@
# -$(TOUCH) -f $@
############### SONG SPECIFIC CONTROL DEFINITIONS ###############
7th-island-fx-fade:= t 0.1 6:11.010 0.2 # OK
7th-island-fx-hpf:= 10 # not needed
7th-island-fx-norm:= 0.3485 # OK
7th-island-fx-pan:= -0.07 # OK
7th-island-fx-trim:= 0:10.118 # OK
7th-island-fx-samp:= 1:53-3:25 # approx.
chain-reaction-fx-fade:= t 0.05 4:57.880 1.5 # OK
chain-reaction-fx-hpf:= 75 # OK
chain-reaction-fx-norm:= 0.3125 # OK
chain-reaction-fx-pan:= 0.20 # good enough
chain-reaction-fx-trim:= 0:06.376 # OK
chain-reaction-fx-samp:= start-0:32ish, 4:36-end # approx.
inner-face-fx-fade:= t 0 3:04.599 2.8 # OK
inner-face-fx-hpf:= 90 # OK
inner-face-fx-norm:= 0.3418 # OK
inner-face-fx-pan:= -0.15 # OK
inner-face-fx-trim:= 0:05.756 # OK
inner-face-fx-samp:= start-1:38 # approx.
mail-order-bride-fx-fade:= t 0 7:08.320 0.3 #
mail-order-bride-fx-hpf:= 10 # not needed
mail-order-bride-fx-norm:= 0.3327 #
mail-order-bride-fx-pan:= 0.25 #
mail-order-bride-fx-trim:= 0:08.300 #
mail-order-bride-fx-samp:= 5:32-end # approx.
no-time-fx-fade:= t 0 5:10.800 0.45 # 5:10.300 0.45
no-time-fx-hpf:= 80 # OK
no-time-fx-norm:= 0.4370 # OK
no-time-fx-pan:= 0.35 # good enough
no-time-fx-trim:= 0:02.411 # OK
no-time-fx-samp:= start-1:48 # approx.
ode-to-bela-human-fx-fade:= t 0 3:09.600 0.8 # OK
ode-to-bela-human-fx-hpf:= 10 # not needed
ode-to-bela-human-fx-norm:= 0.3621 # OK
ode-to-bela-human-fx-pan:= 0.20 # OK
ode-to-bela-human-fx-trim:= 0:12.442 # OK
ode-to-bela-human-fx-samp:= 2:40-end # approx.
pewter-sky-fx-fade:= t 0 3:52.460 4.0 # OK
pewter-sky-fx-hpf:= 75 # OK
pewter-sky-fx-norm:= 0.3967 # OK
pewter-sky-fx-pan:= -0.35 # OK
pewter-sky-fx-trim:= 0:04.947 # OK
pewter-sky-fx-samp:= start-1:00 # approx.
point-of-view-fx-fade:= t 0 4:47.200 1.2 # OK
point-of-view-fx-hpf:= 75 # OK
point-of-view-fx-norm:= 0.3651 # OK
point-of-view-fx-pan:= -0.20 # OK
point-of-view-fx-trim:= 0:03.408 # OK
point-of-view-fx-samp:= 2:52-4:20 # approx.
robs-strawman-12aug02-fade:= t 0.05 7:41.000 1.0 # OK
robs-strawman-12aug02-norm:= 0.38 # OK
robs-strawman-12aug02-pad:= t 0 7:43.000 # OK
robs-strawman-12aug02-trim:= 0:5.5 # OK
robs-strawman-13may02-fade:= t 0.05 6:23.940 0.2 # OK
robs-strawman-13may02-pad:= t 0 6:25.940 # OK
robs-strawman-13may02-norm:= 0.3485 # OK
robs-strawman-13may02-trim:= 0:5.1 # OK
robs-strawman-13may02-drums.1-fade:= t 0:1.0 1:52.9 1# OK
robs-strawman-13may02-drums.1-norm:= 0.36 # OK
robs-strawman-13may02-drums.1-pad:= t 0 1:54.9 # OK
robs-strawman-13may02-drums.1-trim:= 0:1.0 1:53.9 # OK
robs-strawman-13may02-drums.2-fade:= t 0:1.0 0:58.38 1# OK
robs-strawman-13may02-drums.2-norm:= 0.35 # OK
robs-strawman-13may02-drums.2-pad:= t 0 1:00.38 # OK
robs-strawman-13may02-drums.2-trim:= 0:0.42 0:58.8 # OK
robs-strawman-13may02-drums.3-fade:= t 0:1.0 0:46.8 1# OK
robs-strawman-13may02-drums.3-norm:= 0.32 # OK
robs-strawman-13may02-drums.3-pad:= t 0 0:48.8 # OK
robs-strawman-13may02-drums.3-trim:= 0:0.3 0:47.1 # OK
robs-strawman-13may02-drums.4-fade:= t 0:0.5 0:46.88 1 # OK
robs-strawman-13may02-drums.4-norm:= 0.30 # OK
robs-strawman-13may02-drums.4-pad:= t 0 0:48.88 # OK
robs-strawman-13may02-drums.4-trim:= 0:1.7 0:48.58 # OK
robs-strawman-13may02-drums.5-fade:= t 0:0.5 0:48.38 1 # OK
robs-strawman-13may02-drums.5-norm:= 0.33 # OK
robs-strawman-13may02-drums.5-pad:= t 0 0:50.38 # OK
robs-strawman-13may02-drums.5-trim:= 0:1.7 0:48.38 # OK
simple-life-fx-fade:= t 0 5:43.300 0.1 # OK
simple-life-fx-hpf:= 75 # OK
simple-life-fx-norm:= 0.3838 # OK
simple-life-fx-pan:= -0.20 # OK
simple-life-fx-trim:= 0:06.300 # OK
simple-life-fx-samp:= start-2:00 # approx.
############### SECONDARY TARGETS ###############
# pan before normalzing
# normalize before trim or fade
7th-island-fx-done.wav: \
7th-island-fx-pan-norm-trim-fade-lr.wav
-$(RM) $@
$(MV) $< $@
chain-reaction-fx-done.wav: \
chain-reaction-fx-norm-trim-hpf-fade-lr.wav
-$(RM) $@
$(MV) $< $@
inner-face-fx-done.wav: \
inner-face-fx-pan-norm-trim-hpf-fade.wav
-$(RM) $@
$(MV) $< $@
mail-order-bride-fx-done.wav: \
mail-order-bride-fx-pan-norm-trim-fade-lr.wav
-$(RM) $@
$(MV) $< $@
no-time-fx-done.wav: \
no-time-fx-pan-hpf-norm-trim-fade-lr.wav
-$(RM) $@
$(MV) $< $@
ode-to-bela-human-fx-done.wav: \
ode-to-bela-human-fx-pan-norm-trim-fade-lr.wav
-$(RM) $@
$(MV) $< $@
pewter-sky-fx-done.wav: \
pewter-sky-fx-pan-norm-trim-hpf-fade.wav
-$(RM) $@
$(MV) $< $@
point-of-view-fx-done.wav: \
point-of-view-fx-pan-norm-trim-hpf-fade-lr.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-12aug02-done.wav: \
robs-strawman-12aug02-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-done.wav: \
robs-strawman-13may02-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-drums.1-done.wav: \
robs-strawman-13may02-drums.1-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-drums.2-done.wav: \
robs-strawman-13may02-drums.2-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-drums.3-done.wav: \
robs-strawman-13may02-drums.3-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-drums.4-done.wav: \
robs-strawman-13may02-drums.4-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
robs-strawman-13may02-drums.5-done.wav: \
robs-strawman-13may02-drums.5-norm-trim-fade-pad.wav
-$(RM) $@
$(MV) $< $@
simple-life-fx-done.wav: \
simple-life-fx-pan-norm-trim-hpf-fade-lr.wav
-$(RM) $@
$(MV) $< $@
test.wav: inner-face-fx-done.wav
-$(RM) $@
$(SOX) $< $@ trim 0:13.000 0:10.000
test.mp3: test.wav
############### PATTERN RULES ###############
%-brej.wav: %.wav
-$(RM) $@
$(SOX) $< $@ bandreject 11500 2800
%-fade.wav: %.wav
-$(RM) $@
$(SOX) $< $@ fade \
$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(@))))))))-fade)
%-hpf.stat \
%-hpf.wav: %.wav
-$(RM) $(*)-hpf.wav $(*)-hpf.stat
$(SOX) $< $(*)-hpf.wav highpass \
$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(*))))))))-hpf)
( $(SOX) $(*)-hpf.wav -e stat 2>&1 ) > $(*)-hpf.stat
%.mp3: %.wav
-$(RM) $@
$(LAME) --quiet --vbr-new -V 0 $< $@
%.md5: %.wav
-$(RM) $@
$(MD5SUM) $< > $@
%-lr.wav: %.wav
-$(RM) $@
$(SOX) $< $@ swap
%-norm.stat \
%-norm.wav: %.wav
-$(RM) $(*)-norm.wav $(*)-norm.stat
$(CP) $< $(*)-norm.wav
$(CHMOD) u+w $(*)-norm.wav
$(NORMALIZE) -q --amplitude=$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(*))))))))-norm) \
$(*)-norm.wav
( $(SOX) $(*)-norm.wav -e stat 2>&1 ) > $(*)-norm.stat
%-pad.wav: %.wav
-$(RM) $@
$(SOX) $< $@ fade \
$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(*))))))))-pad)
%-pan.stat \
%-pan.wav: %.wav
-$(RM) $(*)-pan.wav $(*)-pan.stat
$(SOX) $< $(*)-pan.wav pan \
$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(*))))))))-pan)
( $(SOX) $(*)-pan.wav -e stat 2>&1 ) > $(*)-pan.stat
%.stat: %.wav
-$(RM) $@
( $(SOX) $< -e stat 2>&1 ) > $@
%-trim.wav: %.wav
-$(RM) $@
$(SOX) $< $@ trim \
$($(subst $(FADE),$(NULL),$(subst $(HPF),$(NULL),$(subst $(NORM),$(NULL),$(subst $(PAD),$(NULL),$(subst $(PAN),$(NULL),$(subst $(WAV),$(NULL),$(subst $(TRIM),$(NULL),$(*))))))))-trim)
%-vol.stat \
%-vol.wav: %.wav
-$(RM) $(*)-vol.wav $(*)-vol.stat
$(SOX) -v 1.0 $< $(*)-vol.wav
( $(SOX) $(*)-vol.wav -e stat 2>&1 ) > $(*)-vol.stat
$(TOCFILE): $(TOCMASTER)
-$(RM) $@
$(CP) $< $@
More information about the Linux-audio-user
mailing list