Mercurial > hg > nnls-chroma
changeset 176:259ef0f4622b
Add a regression test, rejig Makefiles to use a common base
author | Chris Cannam |
---|---|
date | Mon, 02 Nov 2015 15:18:39 +0000 |
parents | d22f69c2b025 |
children | 6bfce96d87b4 |
files | Makefile.inc Makefile.linux Makefile.mingw Makefile.osx nnls.c regression/expected-v0.2.1.csv regression/expected.csv regression/regression.sh |
diffstat | 8 files changed, 416 insertions(+), 82 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.inc Mon Nov 02 15:18:39 2015 +0000 @@ -0,0 +1,30 @@ + +PLUGIN_LIBRARY_NAME = nnls-chroma + +PLUGIN_CODE_OBJECTS = chromamethods.o NNLSBase.o NNLSChroma.o Chordino.o Tuning.o plugins.o nnls.o viterbi.o + +CFLAGS += $(ARCHFLAGS) $(OPTFLAGS) -I$(VAMP_SDK_DIR) -Wall -fPIC +CXXFLAGS += $(ARCHFLAGS) $(OPTFLAGS) -I$(VAMP_SDK_DIR) -I$(BOOST_ROOT) -Wall -fPIC + +PLUGIN = $(PLUGIN_LIBRARY_NAME)$(PLUGIN_EXT) + +$(PLUGIN): $(PLUGIN_CODE_OBJECTS) + $(CXX) -o $@ $^ $(LDFLAGS) + +nnls.o: nnls.c # not nnls.f + +test: $(PLUGIN) + bash regression/regression.sh + +clean: + rm -f *.o + +# DO NOT DELETE + +Chordino.o: Chordino.h NNLSBase.h chromamethods.h nnls.h viterbi.h +chromamethods.o: chromamethods.h nnls.h +NNLSBase.o: NNLSBase.h chromamethods.h nnls.h +NNLSChroma.o: NNLSChroma.h NNLSBase.h chromamethods.h nnls.h +plugins.o: NNLSChroma.h NNLSBase.h Chordino.h Tuning.h +Tuning.o: Tuning.h NNLSBase.h chromamethods.h nnls.h +viterbi.o: viterbi.h
--- a/Makefile.linux Mon Nov 02 12:35:13 2015 +0000 +++ b/Makefile.linux Mon Nov 02 15:18:39 2015 +0000 @@ -1,34 +1,10 @@ - -PLUGIN_LIBRARY_NAME = nnls-chroma - -PLUGIN_CODE_OBJECTS = chromamethods.o NNLSBase.o NNLSChroma.o Chordino.o Tuning.o plugins.o nnls.o viterbi.o VAMP_SDK_DIR = ../vamp-plugin-sdk -ARCHFLAGS = -O3 -ftree-vectorize -ffast-math -#ARCHFLAGS = -g +OPTFLAGS = -Wall -O3 -ftree-vectorize -ffast-math +PLUGIN_EXT = .so -CFLAGS += $(ARCHFLAGS) -I$(VAMP_SDK_DIR) -Wall -fPIC -CXXFLAGS += $(ARCHFLAGS) -I$(VAMP_SDK_DIR) -Wall -fPIC -PLUGIN_EXT = .so -PLUGIN = $(PLUGIN_LIBRARY_NAME)$(PLUGIN_EXT) -LDFLAGS += -shared -Wl,-soname=$(PLUGIN) -L$(VAMP_SDK_DIR) -lvamp-sdk -Wl,--version-script=vamp-plugin.map +LDFLAGS += -shared -Wl,-soname=$(PLUGIN) -L$(VAMP_SDK_DIR) -lvamp-sdk -Wl,--version-script=vamp-plugin.map +include Makefile.inc -$(PLUGIN): $(PLUGIN_CODE_OBJECTS) - $(CXX) -o $@ $^ $(LDFLAGS) - -nnls.o: nnls.c # not nnls.f - -clean: - rm -f *.o - -# DO NOT DELETE - -Chordino.o: Chordino.h NNLSBase.h chromamethods.h nnls.h viterbi.h -chromamethods.o: chromamethods.h nnls.h -NNLSBase.o: NNLSBase.h chromamethods.h nnls.h -NNLSChroma.o: NNLSChroma.h NNLSBase.h chromamethods.h nnls.h -plugins.o: NNLSChroma.h NNLSBase.h Chordino.h Tuning.h -Tuning.o: Tuning.h NNLSBase.h chromamethods.h nnls.h -viterbi.o: viterbi.h
--- a/Makefile.mingw Mon Nov 02 12:35:13 2015 +0000 +++ b/Makefile.mingw Mon Nov 02 15:18:39 2015 +0000 @@ -1,29 +1,18 @@ - -PLUGIN_LIBRARY_NAME = nnls-chroma - -PLUGIN_CODE_OBJECTS = chromamethods.o NNLSBase.o NNLSChroma.o Chordino.o Tuning.o plugins.o nnls.o viterbi.o VAMP_SDK_DIR = ../vamp-plugin-sdk +BOOST_ROOT = ../boost_1_44_0 # Allow the invoker to specify a particular set of tools through # TOOLPREFIX, e.g. for cross-compile -CC=$(TOOLPREFIX)gcc -CXX=$(TOOLPREFIX)g++ +CC = $(TOOLPREFIX)gcc +CXX = $(TOOLPREFIX)g++ -OPTFLAGS = -O2 -ffast-math - -CFLAGS += $(OPTFLAGS) -I$(VAMP_SDK_DIR) -Wall -CXXFLAGS += $(OPTFLAGS) -I$(VAMP_SDK_DIR) -I../boost_1_44_0 -Wall +ARCHFLAGS ?= +OPTFLAGS ?= -O2 -ffast-math PLUGIN_EXT = .dll -PLUGIN = $(PLUGIN_LIBRARY_NAME)$(PLUGIN_EXT) LDFLAGS += -shared -static -fno-exceptions -static-libgcc -Wl,-soname=$(PLUGIN) $(VAMP_SDK_DIR)/libvamp-sdk.a -Wl,--retain-symbols-file=vamp-plugin.list +include Makefile.inc -$(PLUGIN): $(PLUGIN_CODE_OBJECTS) - $(CXX) -o $@ $^ $(LDFLAGS) - -clean: - $(RM) *.o -
--- a/Makefile.osx Mon Nov 02 12:35:13 2015 +0000 +++ b/Makefile.osx Mon Nov 02 15:18:39 2015 +0000 @@ -1,44 +1,13 @@ -PLUGIN_LIBRARY_NAME = nnls-chroma -# Edit this to list one .o file for each .cpp file in your plugin project -# -PLUGIN_CODE_OBJECTS = NNLSBase.o NNLSChroma.o Chordino.o Tuning.o plugins.o nnls.o chromamethods.o viterbi.o +VAMP_SDK_DIR = ../vamp-plugin-sdk -# Edit this to the location of the Vamp plugin SDK, relative to your -# project directory -# -VAMP_SDK_DIR = ../vamp-plugin-sdk BOOST_ROOT = ../boost_1_48_0 +ARCHFLAGS ?= -mmacosx-version-min=10.7 -arch x86_64 +OPTFLAGS ?= -O3 -ffast-math +PLUGIN_EXT = .dylib -## Uncomment these for an OS/X native build using command-line tools: -ARCHFLAGS ?= -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -arch i386 -CFLAGS += $(ARCHFLAGS) -Wall -fPIC -g -O3 -CXXFLAGS += $(CFLAGS) -I$(VAMP_SDK_DIR) -I$(BOOST_ROOT) -PLUGIN_EXT = .dylib -PLUGIN = $(PLUGIN_LIBRARY_NAME)$(PLUGIN_EXT) LDFLAGS += $(ARCHFLAGS) -dynamiclib -install_name $(PLUGIN) $(VAMP_SDK_DIR)/libvamp-sdk.a -exported_symbols_list vamp-plugin.list -framework Accelerate +include Makefile.inc -$(PLUGIN): $(PLUGIN_CODE_OBJECTS) - $(CXX) -o $@ $^ $(LDFLAGS) - -nnls.o: nnls.c # not nnls.f - -clean: - rm -f *.o - -# DO NOT DELETE - -nnls.o: nnls.h -Chordino.o: Chordino.h NNLSBase.h chromamethods.h nnls.h -chromamethods.o: chromamethods.h nnls.h -NNLSBase.o: NNLSBase.h chromamethods.h nnls.h -NNLSChroma.o: NNLSChroma.h NNLSBase.h chromamethods.h nnls.h -plugins.o: NNLSChroma.h NNLSBase.h Chordino.h Tuning.h -Tuning.o: Tuning.h NNLSBase.h chromamethods.h nnls.h -Chordino.o: NNLSBase.h -chromamethods.o: nnls.h -NNLSChroma.o: NNLSBase.h -Tuning.o: NNLSBase.h -viterbi.o: viterbi.h
--- a/nnls.c Mon Nov 02 12:35:13 2015 +0000 +++ b/nnls.c Mon Nov 02 15:18:39 2015 +0000 @@ -212,7 +212,7 @@ float temp, wmax; int i__, j, l; float t, alpha, asave; - int itmax, izmax, nsetp; + int itmax, izmax = 0, nsetp; float unorm, ztest, cc; float dummy[2]; int ii, jj, ip;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/regression/expected-v0.2.1.csv Mon Nov 02 15:18:39 2015 +0000 @@ -0,0 +1,162 @@ +0.000000000,"N" +0.046439909,"Ab" +1.671836734,"Bm6" +2.972154195,"Cm" +4.411791383,"C#" +7.523265306,"Cm" +8.173424036,"D7" +8.823582766,"Gaug" +10.123900226,"Cm" +11.006258503,"F7" +11.377777777,"G" +15.836009070,"D7/F#" +17.229206349,"Cm7" +19.504761904,"Fm7" +20.619319727,"Ddim" +20.944399092,"Cm" +23.173514739,"Fm7" +25.077551020,"Cm" +26.563628117,"G" +28.467664399,"Cm" +29.442902494,"F7" +29.814421768,"Gmaj7" +31.997097505,"Eb6" +33.901133786,"Fm7" +36.037369614,"Cm7" +37.894965986,"Fm7" +39.752562358,"Cm" +41.145759637,"G" +42.956916099,"Cm" +43.885714285,"F7" +44.303673469,"G7" +44.721632653,"D7" +45.603990929,"G7" +46.347029478,"Cm7" +48.622585034,"Fm7" +49.644263038,"D" +49.922902494,"Cm" +52.059138321,"Fm" +53.730975056,"Cm" +54.613333333,"F6" +55.913650793,"G" +57.121088435,"Cm" +58.653605442,"G" +61.068480725,"Cm7" +62.926077097,"Fm7" +63.994195011,"Ddim" +64.412154195,"Eb" +65.573151927,"Cmaj7" +67.059229024,"Cdim" +67.941587301,"Cm" +69.938503401,"Gmaj7" +71.981859410,"Cm" +73.700136054,"D7" +74.443174603,"Ebmaj7" +74.954013605,"D7" +75.418412698,"G" +79.040725623,"C" +80.944761904,"Dm" +82.709478458,"Ebmaj7" +84.381315192,"Gmaj7" +86.331791383,"Abmaj7" +88.421587301,"D7" +90.139863945,"G7" +93.855056689,"Cm" +95.712653061,"Fm" +97.523809523,"Cm" +98.452607709,"D" +98.777687074,"C7" +99.288526077,"G" +103.746757369,"Gm6" +105.279274376,"Fm7" +106.440272108,"Fm6" +107.322630385,"Cmaj7" +108.297868480,"Cm" +108.808707482,"C#dim" +109.644625850,"Ab" +110.480544217,"G" +112.338140589,"Fm7" +113.917097505,"Cm" +114.567256235,"Cmaj7" +115.217414965,"C#" +118.375328798,"Emaj7" +119.025487528,"Gmaj7" +120.279365079,"Cm" +123.762358276,"Ab6" +124.226757369,"G7" +124.691156462,"Eb6" +128.174149659,"Ab6" +128.684988662,"G7" +129.195827664,"Cm" +132.632380952,"Ab6" +133.236099773,"G7" +133.793378684,"Ab6" +134.350657596,"G7" +134.722176870,"Eb6" +136.394013605,"G7" +141.595283446,"Bbm" +142.616961451,"Cm7" +144.846077097,"Fm" +146.610793650,"Cm" +148.375510204,"Fm7" +150.372426303,"Cm" +150.976145124,"Dm7" +153.437460317,"Cm7" +154.784217687,"F7" +155.155736961,"G" +156.827573696,"Cm" +159.381768707,"Fm7" +161.192925170,"Cm" +163.236281179,"Ddim7/C" +164.861678004,"Cm" +166.626394557,"Gmaj7" +168.344671201,"Cm" +169.412789115,"F7" +169.737868480,"Gaug" +170.341587301,"D7" +171.316825396,"Cmaj7" +173.917460317,"Caug" +175.078458049,"Fm6" +175.542857142,"Cm" +176.332335600,"C" +177.354013605,"Fm" +177.864852607,"Cmaj7" +178.979410430,"Cm" +180.140408163,"D7" +180.976326530,"Gmaj7" +182.415963718,"Cm" +183.809160997,"G" +186.038276643,"C" +191.285986394,"Fm" +193.143582766,"C" +194.351020408,"Bb7/D" +194.954739229,"G" +196.673015873,"Cm" +199.970249433,"F#dim7" +200.388208616,"Fm7" +202.245804988,"Cmaj7" +202.803083900,"Cdim" +203.964081632,"C#dim" +204.521360544,"C#aug" +204.800000000,"Ab" +205.682358276,"G" +207.586394557,"Fm7" +208.933151927,"G7/B" +209.397551020,"Cm" +210.372789115,"C#" +214.180861678,"Cm7" +214.738140589,"Gm7" +215.852698412,"Cm" +219.335691609,"Ab/Eb" +219.846530612,"G7" +220.310929705,"Cm" +223.840362811,"Ab6" +224.304761904,"G7" +224.815600907,"Cm" +228.298594104,"Ab6" +228.809433106,"G7" +229.366712018,"Ab6" +229.877551020,"G7" +230.388390022,"Cm" +236.889977324,"N" +236.889977324,"N"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/regression/expected.csv Mon Nov 02 15:18:39 2015 +0000 @@ -0,0 +1,161 @@ +0.000000000,"N" +0.046439909,"Ab" +1.671836734,"Bm6" +2.972154195,"Cm" +4.411791383,"C#" +7.523265306,"Cm" +8.173424036,"D7" +8.823582766,"Gaug" +10.123900226,"Cm" +11.006258503,"F7" +11.377777777,"G" +15.836009070,"D7/F#" +17.229206349,"Cm7" +19.504761904,"Fm7" +20.619319727,"Ddim" +20.944399092,"Cm" +23.173514739,"Fm7" +25.077551020,"Cm" +26.563628117,"G" +28.467664399,"Cm" +29.442902494,"F7" +29.814421768,"Gmaj7" +31.997097505,"Eb6" +33.901133786,"Fm7" +36.037369614,"Cm7" +37.894965986,"Fm7" +39.752562358,"Cm" +41.145759637,"G" +42.956916099,"Cm" +43.885714285,"F7" +44.303673469,"G7" +44.721632653,"D7" +45.603990929,"G7" +46.347029478,"Cm7" +48.622585034,"Fm7" +49.644263038,"D" +49.922902494,"Cm" +52.059138321,"Fm" +53.730975056,"Cm" +54.613333333,"F6" +55.913650793,"G" +57.121088435,"Cm" +58.653605442,"G" +61.068480725,"Cm7" +62.926077097,"Fm7" +63.994195011,"Ddim" +64.412154195,"Eb" +65.573151927,"Cmaj7" +67.059229024,"Cdim" +67.941587301,"Cm" +69.938503401,"Gmaj7" +71.981859410,"Cm" +73.700136054,"D7" +74.443174603,"Ebmaj7" +74.954013605,"D7" +75.418412698,"G" +79.040725623,"C" +80.944761904,"Dm" +82.709478458,"Ebmaj7" +84.381315192,"Gmaj7" +86.331791383,"Abmaj7" +88.421587301,"D7" +90.139863945,"G7" +93.855056689,"Cm" +95.712653061,"Fm" +97.523809523,"Cm" +98.452607709,"D" +98.777687074,"C7" +99.288526077,"G" +103.746757369,"Gm6" +105.279274376,"Fm7" +106.440272108,"Fm6" +107.322630385,"Cmaj7" +108.297868480,"Cm" +108.808707482,"C#dim" +109.644625850,"Ab" +110.480544217,"G" +112.338140589,"Fm7" +113.917097505,"Cm" +114.567256235,"Cmaj7" +115.217414965,"C#" +118.375328798,"Emaj7" +119.025487528,"Gmaj7" +120.279365079,"Cm" +123.762358276,"Ab6" +124.226757369,"G7" +124.691156462,"Eb6" +128.174149659,"Ab6" +128.684988662,"G7" +129.195827664,"Cm" +132.632380952,"Ab6" +133.236099773,"G7" +133.793378684,"Ab6" +134.350657596,"G7" +134.722176870,"Eb6" +136.394013605,"G7" +141.595283446,"Bbm" +142.616961451,"Cm7" +144.846077097,"Fm" +146.610793650,"Cm" +148.375510204,"Fm7" +150.372426303,"Cm" +150.976145124,"Dm7" +153.437460317,"Cm7" +154.784217687,"F7" +155.155736961,"G" +156.827573696,"Cm" +159.381768707,"Fm7" +161.192925170,"Cm" +163.236281179,"Dm7b5/C" +164.861678004,"Cm" +166.626394557,"Gmaj7" +168.344671201,"Cm" +169.412789115,"F7" +169.737868480,"Gaug" +170.341587301,"D7" +171.316825396,"Cmaj7" +173.917460317,"Caug" +175.078458049,"Fm6" +175.542857142,"Cm" +176.332335600,"C" +177.354013605,"Fm" +177.864852607,"Cmaj7" +178.979410430,"Cm" +180.140408163,"D7" +180.976326530,"Gmaj7" +182.415963718,"Cm" +183.809160997,"G" +186.038276643,"C" +191.285986394,"Fm" +193.143582766,"C" +194.351020408,"Bb7/D" +194.954739229,"G" +196.673015873,"Cm" +199.970249433,"F#m7b5" +200.388208616,"Fm7" +202.245804988,"Cmaj7" +202.803083900,"Cdim" +203.964081632,"C#dim" +204.521360544,"C#aug" +204.800000000,"Ab" +205.682358276,"G" +207.586394557,"Fm7" +208.933151927,"G7/B" +209.397551020,"Cm" +210.372789115,"C#" +214.180861678,"Cm7" +214.738140589,"Gm7" +215.852698412,"Cm" +219.335691609,"Ab/Eb" +219.846530612,"G7" +220.310929705,"Cm" +223.840362811,"Ab6" +224.304761904,"G7" +224.815600907,"Cm" +228.298594104,"Ab6" +228.809433106,"G7" +229.366712018,"Ab6" +229.877551020,"G7" +230.388390022,"Cm" +236.889977324,"N"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/regression/regression.sh Mon Nov 02 15:18:39 2015 +0000 @@ -0,0 +1,47 @@ +#!/bin/bash + +set -eu + +mydir=$(dirname "$0") + +source_url=https://code.soundsoftware.ac.uk/attachments/download/1696/Zweieck-Duell.mp3 + +testfile="$mydir/input.mp3" +outfile="$mydir/output.csv" +expfile="$mydir/expected.csv" + +if sonic-annotator -v >/dev/null ; then + : +else + echo "Failed to find required binary sonic-annotator" + exit 1 +fi + +if wget --version >/dev/null ; then + wget -O "$testfile" "$source_url" +else + curl -o "$testfile" "$source_url" +fi + +VAMP_PATH="$mydir/.." \ + sonic-annotator \ + -d vamp:nnls-chroma:chordino:simplechord \ + -w csv \ + --csv-omit-filename \ + --csv-one-file "$outfile" \ + --csv-force \ + "$testfile" + +if cmp "$outfile" "$expfile" ; then + echo + echo PASS + exit 0 +else + echo + echo "*** FAIL: Result does not match expected output. Diff follows:" + echo + diff "$outfile" "$expfile" + exit 1 +fi + +