diff --git a/Makefile.in b/Makefile.in index 915e089..d376df3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -6,6 +6,10 @@ CXXFLAGS := -DHAVE_LIBSAMPLERATE -DHAVE_FFTW3 -DFFTW_DOUBLE_ONLY -DNO_THREAD_CHE CFLAGS := @CFLAGS@ $(OPTFLAGS) LDFLAGS := @LDFLAGS@ -lpthread $(LDFLAGS) +JNI_CXXFLAGS := -I$(JAVA_HOME)/include +JAVAC := $(JAVA_HOME)/bin/javac +JAR := $(JAVA_HOME)/bin/jar + LIBRARY_LIBS := @SRC_LIBS@ @FFTW_LIBS@ PROGRAM_LIBS := @SNDFILE_LIBS@ $(LIBRARY_LIBS) VAMP_PLUGIN_LIBS := @Vamp_LIBS@ $(LIBRARY_LIBS) @@ -23,6 +27,8 @@ INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig LIBNAME := librubberband +JNINAME := librubberband-jni +JARNAME := rubberband.jar DYNAMIC_EXTENSION := .so DYNAMIC_FULL_VERSION := 2.1.0 @@ -34,6 +40,8 @@ LADSPA_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=ladspa/ladspa-plu PROGRAM_TARGET := bin/rubberband STATIC_TARGET := lib/$(LIBNAME).a DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION) +JNI_TARGET := lib/$(JNINAME)$(DYNAMIC_EXTENSION) +JAR_TARGET := lib/$(JARNAME) VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION) LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION) @@ -42,6 +50,7 @@ all: bin lib $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) static: $(STATIC_TARGET) dynamic: $(DYNAMIC_TARGET) library: $(STATIC_TARGET) $(DYNAMIC_TARGET) +jni: $(JNI_TARGET) $(JAR_TARGET) program: $(PROGRAM_TARGET) vamp: $(VAMP_TARGET) ladspa: $(LADSPA_TARGET) @@ -96,6 +105,12 @@ LIBRARY_SOURCES := \ src/StretcherChannelData.cpp \ src/StretcherImpl.cpp +JNI_SOURCE := \ + src/jni/RubberBandStretcherJNI.cpp + +JAVA_SOURCE := \ + com/breakfastquay/rubberband/RubberBandStretcher.java + PROGRAM_SOURCES := \ main/main.cpp @@ -115,7 +130,8 @@ LADSPA_SOURCES := \ LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o) LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o) - +JNI_OBJECT := $(JNI_SOURCE:.cpp=.o) +JAVA_OBJECT := $(JAVA_SOURCE:.java=.class) PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o) VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o) LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o) @@ -129,6 +145,16 @@ $(STATIC_TARGET): $(LIBRARY_OBJECTS) $(DYNAMIC_TARGET): $(LIBRARY_OBJECTS) $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) +$(JNI_OBJECT): $(JNI_SOURCE) + $(CXX) -c $(JNI_CXXFLAGS) $(CXXFLAGS) $^ -o $@ + +$(JNI_TARGET): $(LIBRARY_OBJECTS) $(JNI_OBJECT) + $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) + +$(JAR_TARGET): $(JAVA_SOURCE) + $(JAVAC) $^ + $(JAR) cvf $@ $(JAVA_OBJECT) + $(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS) $(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS) @@ -153,9 +179,11 @@ install: all cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) + rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) + cp $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) @@ -165,10 +193,10 @@ install: all > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc clean: - rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) + rm -f $(LIBRARY_OBJECTS) $(JNI_OBJECT) $(JAVA_OBJECT) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) distclean: clean - rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(JNI_TARGET) $(JAR_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) depend: makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) diff --git a/README.txt b/README.txt index 4139272..f38de26 100644 --- a/README.txt +++ b/README.txt @@ -5,7 +5,7 @@ Rubber Band An audio time-stretching and pitch-shifting library and utility program. Written by Chris Cannam, chris.cannam@breakfastquay.com. -Copyright 2007-2012 Particular Programs Ltd. +Copyright 2007-2014 Particular Programs Ltd. Rubber Band is a library and utility program that permits changing the tempo and pitch of an audio recording independently of one another. diff --git a/com/breakfastquay/rubberband/RubberBandStretcher.java b/com/breakfastquay/rubberband/RubberBandStretcher.java index 57f303a..1c512ca 100644 --- a/com/breakfastquay/rubberband/RubberBandStretcher.java +++ b/com/breakfastquay/rubberband/RubberBandStretcher.java @@ -103,7 +103,7 @@ public class RubberBandStretcher public static final int PercussiveOptions = 0x00102000; static { - System.loadLibrary("rubberband"); + System.loadLibrary("rubberband-jni"); } };