Skip to content

Instantly share code, notes, and snippets.

@jpcima
Created January 4, 2019 17:21
Show Gist options
  • Save jpcima/c1c43b264a01a99c600df0f8fbd8e70e to your computer and use it in GitHub Desktop.
Save jpcima/c1c43b264a01a99c600df0f8fbd8e70e to your computer and use it in GitHub Desktop.
Dragonfly Reverb patch for system libsamplerate
diff --git a/freeverb3/Makefile b/freeverb3/Makefile
index 9477246..2ce8e1e 100644
--- a/freeverb3/Makefile
+++ b/freeverb3/Makefile
@@ -1,12 +1,6 @@
include Makefile.mk
OBJS_FV3 = \
- samplerate.c.o \
- samplerate_common.c.o \
- src_common.c.o \
- src_linear.c.o \
- src_sinc.c.o \
- src_zoh.c.o \
allpass.cpp.o \
biquad.cpp.o \
comb.cpp.o \
@@ -23,9 +17,6 @@ OBJS_FV3 = \
all: $(OBJS_FV3)
-%.c.o: libsamplerate2/%.c
- $(CC) $< $(BUILD_C_FLAGS) -I. -DLIBSRATE2_FLOAT -c -o $@
-
%.cpp.o: freeverb/%.cpp
$(CXX) $< $(BUILD_CXX_FLAGS) -I. -DLIBSRATE2_FLOAT -DLIBFV3_FLOAT -Wno-unused-parameter -c -o $@
diff --git a/freeverb3/freeverb/earlyref.hpp b/freeverb3/freeverb/earlyref.hpp
index 393e08e..9eed750 100644
--- a/freeverb3/freeverb/earlyref.hpp
+++ b/freeverb3/freeverb/earlyref.hpp
@@ -38,6 +38,7 @@ namespace fv3
#undef _FV3_
#undef _fv3_float_t
+/*
#define _fv3_float_t double
#define _FV3_(name) name ## _
#include "freeverb/earlyref_t.hpp"
@@ -49,6 +50,7 @@ namespace fv3
#include "freeverb/earlyref_t.hpp"
#undef _FV3_
#undef _fv3_float_t
+*/
};
diff --git a/freeverb3/freeverb/fv3_type_float.h b/freeverb3/freeverb/fv3_type_float.h
index 4634b6c..a69dbab 100644
--- a/freeverb3/freeverb/fv3_type_float.h
+++ b/freeverb3/freeverb/fv3_type_float.h
@@ -27,7 +27,7 @@
typedef float fv3_float_t;
#define FV3_(name) name ## _f
#define FFTW_(name) fftwf_ ## name
-#define SRC_(name) name ## _f
+#define SRC_(name) name/* ## _f*/
#else
#ifdef LIBFV3_DOUBLE
typedef double fv3_float_t;
diff --git a/freeverb3/freeverb/revbase.hpp b/freeverb3/freeverb/revbase.hpp
index 479f869..747cb3e 100644
--- a/freeverb3/freeverb/revbase.hpp
+++ b/freeverb3/freeverb/revbase.hpp
@@ -39,6 +39,7 @@ namespace fv3
#undef _FV3_
#undef _fv3_float_t
+/*
#define _fv3_float_t double
#define _FV3_(name) name ## _
#include "freeverb/revbase_t.hpp"
@@ -50,6 +51,7 @@ namespace fv3
#include "freeverb/revbase_t.hpp"
#undef _FV3_
#undef _fv3_float_t
+*/
};
diff --git a/freeverb3/freeverb/src.hpp b/freeverb3/freeverb/src.hpp
index a71bc43..22c881f 100644
--- a/freeverb3/freeverb/src.hpp
+++ b/freeverb3/freeverb/src.hpp
@@ -22,7 +22,7 @@
#define _FV3_SRC_HPP
#include <cstdio>
-#include <libsamplerate2/samplerate2.h>
+#include <samplerate.h>
#include "freeverb/utils.hpp"
#include "freeverb/efilter.hpp"
#include "freeverb/biquad.hpp"
@@ -33,12 +33,13 @@ namespace fv3
#define _fv3_float_t float
#define _FV3_(name) name ## _f
-#define _SRC_(name) name ## _f
+#define _SRC_(name) name /* ## _f*/
#include "freeverb/src_t.hpp"
#undef _FV3_
#undef _SRC_
#undef _fv3_float_t
+/*
#define _fv3_float_t double
#define _FV3_(name) name ## _
#define _SRC_(name) name ## _
@@ -54,6 +55,7 @@ namespace fv3
#undef _FV3_
#undef _SRC_
#undef _fv3_float_t
+*/
};
diff --git a/freeverb3/freeverb/src_t.hpp b/freeverb3/freeverb/src_t.hpp
index 8c51c01..6143a8e 100644
--- a/freeverb3/freeverb/src_t.hpp
+++ b/freeverb3/freeverb/src_t.hpp
@@ -47,7 +47,7 @@ class _FV3_(src)
long overSamplingFactor, src_converter, latency;
_SRC_(SRC_STATE) *src_stateL, *src_stateR, *src_stateLV, *src_stateRV;
_SRC_(SRC_DATA) src_dataL, src_dataR, src_dataLV, src_dataRV;
- long src_errorL, src_errorR;
+ int src_errorL, src_errorR;
_FV3_(iir_1st) up1L, up1R, down1L, down1R;
_FV3_(biquad) up2L, up2R, down2L, down2R;
_fv3_float_t lpf_iir2_bw;
diff --git a/freeverb3/freeverb/zrev.hpp b/freeverb3/freeverb/zrev.hpp
index a58211d..058e0ec 100644
--- a/freeverb3/freeverb/zrev.hpp
+++ b/freeverb3/freeverb/zrev.hpp
@@ -39,6 +39,7 @@ namespace fv3
#undef _FV3_
#undef _fv3_float_t
+/*
#define _fv3_float_t double
#define _FV3_(name) name ## _
#include "freeverb/zrev_t.hpp"
@@ -50,6 +51,7 @@ namespace fv3
#include "freeverb/zrev_t.hpp"
#undef _FV3_
#undef _fv3_float_t
+*/
};
diff --git a/freeverb3/freeverb/zrev2.hpp b/freeverb3/freeverb/zrev2.hpp
index bd111ba..74f1719 100644
--- a/freeverb3/freeverb/zrev2.hpp
+++ b/freeverb3/freeverb/zrev2.hpp
@@ -37,6 +37,7 @@ namespace fv3
#undef _FV3_
#undef _fv3_float_t
+/*
#define _fv3_float_t double
#define _FV3_(name) name ## _
#include "freeverb/zrev2_t.hpp"
@@ -48,6 +49,7 @@ namespace fv3
#include "freeverb/zrev2_t.hpp"
#undef _FV3_
#undef _fv3_float_t
+*/
};
diff --git a/plugins/dragonfly-reverb/Makefile b/plugins/dragonfly-reverb/Makefile
index ba8cf83..050dca0 100644
--- a/plugins/dragonfly-reverb/Makefile
+++ b/plugins/dragonfly-reverb/Makefile
@@ -30,11 +30,13 @@ FILES_UI = \
include ../../dpf/Makefile.plugins.mk
-BUILD_CXX_FLAGS := ../../freeverb3/*.cpp.o ../../freeverb3/*.c.o -I../../freeverb3 $(BUILD_CXX_FLAGS)
+BUILD_CXX_FLAGS := ../../freeverb3/*.cpp.o -I../../freeverb3 $(BUILD_CXX_FLAGS)
# --------------------------------------------------------------
# Link dependencies
+LINK_OPTS += -lsamplerate
+
LINK_OPTS += -lm
ifeq ($(WIN32),true)
@jpcima
Copy link
Author

jpcima commented Jan 4, 2019

@trebmuh la libsamplerate2 de freeverb diffère de la libsamplerate ordinaire : la 2 permet de traiter tous les types de flottants 32/64/80 bits, alors que la première gère le float 32 bits uniquement.

Or, Dragonfly n'utilise que la variante de reverb en type float 32 bits.

  • je désactive 64 et 80 en les commentant ; ces variantes ne servent non seulement à rien, elles font échouer la construction samplerate1.
  • je fais les renommages nécessaires. (notamment les suffixes _f de la samplerate2 qui sont absents en samplerate1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment