diff --git a/.gitignore b/.gitignore
index cab7d60928..2c13e8117f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,5 +39,9 @@ interface/resources/visage/*
# Ignore interfaceCache for Linux users
interface/interfaceCache/
+# ignore audio-client externals
+libraries/audio-client/external/*/*
+!libraries/audio-client/external/*/readme.txt
+
gvr-interface/assets/oculussig*
gvr-interface/libs/*
\ No newline at end of file
diff --git a/BUILD.md b/BUILD.md
index d98ac99246..846ed1e44e 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -1,7 +1,7 @@
###Dependencies
* [cmake](http://www.cmake.org/cmake/resources/software.html) ~> 2.8.12.2
-* [Qt](http://qt-project.org/downloads) ~> 5.3.0
+* [Qt](http://qt-project.org/downloads) ~> 5.4.0
* [glm](http://glm.g-truc.net/0.9.5/index.html) ~> 0.9.5.4
* [OpenSSL](https://www.openssl.org/related/binaries.html) ~> 1.0.1g
* IMPORTANT: OpenSSL 1.0.1g is critical to avoid a security vulnerability.
@@ -22,12 +22,12 @@ Hifi uses CMake to generate build files and project files for your platform.
####Qt
In order for CMake to find the Qt5 find modules, you will need to set an ENV variable pointing to your Qt installation.
-For example, a Qt5 5.3.2 installation to /usr/local/qt5 would require that QT_CMAKE_PREFIX_PATH be set with the following command. This can either be entered directly into your shell session before you build or in your shell profile (e.g.: ~/.bash_profile, ~/.bashrc, ~/.zshrc - this depends on your shell and environment).
+For example, a Qt5 5.4.0 installation to /usr/local/qt5 would require that QT_CMAKE_PREFIX_PATH be set with the following command. This can either be entered directly into your shell session before you build or in your shell profile (e.g.: ~/.bash_profile, ~/.bashrc, ~/.zshrc - this depends on your shell and environment).
The path it needs to be set to will depend on where and how Qt5 was installed. e.g.
- export QT_CMAKE_PREFIX_PATH=/usr/local/qt/5.3.2/clang_64/lib/cmake/
- export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.3.2/lib/cmake
+ export QT_CMAKE_PREFIX_PATH=/usr/local/qt/5.4.0/clang_64/lib/cmake/
+ export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.4.0/lib/cmake
export QT_CMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake
####Generating build files
@@ -42,7 +42,7 @@ Any variables that need to be set for CMake to find dependencies can be set as E
For example, to pass the QT_CMAKE_PREFIX_PATH variable during build file generation:
- cmake .. -DQT_CMAKE_PREFIX_PATH=/usr/local/qt/5.3.2/lib/cmake
+ cmake .. -DQT_CMAKE_PREFIX_PATH=/usr/local/qt/5.4.0/lib/cmake
####Finding Dependencies
You can point our [Cmake find modules](cmake/modules/) to the correct version of dependencies by setting one of the three following variables to the location of the correct version of the dependency.
diff --git a/BUILD_WIN.md b/BUILD_WIN.md
index 85ddcd48ed..3c0ece7f6d 100644
--- a/BUILD_WIN.md
+++ b/BUILD_WIN.md
@@ -27,7 +27,7 @@ NOTE: Qt does not support 64-bit builds on Windows 7, so you must use the 32-bit
* [Download the online installer](http://qt-project.org/downloads)
* When it asks you to select components, ONLY select the following:
- * Qt > Qt 5.3.2 > **msvc2013 32-bit OpenGL**
+ * Qt > Qt 5.4.0 > **msvc2013 32-bit OpenGL**
* [Download the offline installer](http://download.qt-project.org/official_releases/qt/5.3/5.3.2/qt-opensource-windows-x86-msvc2013_opengl-5.3.2.exe)
diff --git a/cmake/android/AndroidManifest.xml.in b/cmake/android/AndroidManifest.xml.in
index f6ce914148..ea11d81cff 100755
--- a/cmake/android/AndroidManifest.xml.in
+++ b/cmake/android/AndroidManifest.xml.in
@@ -8,12 +8,14 @@
-
+
+
@@ -42,17 +44,19 @@
+
+ ${ANDROID_EXTRA_ACTIVITY_XML}
-
+
- ${HOCKEY_APP_ACTIVITY}
-
+ ${ANDROID_EXTRA_APPLICATION_XML}
diff --git a/gvr-interface/CMakeLists.txt b/gvr-interface/CMakeLists.txt
index 450914da75..bd0eb07e87 100644
--- a/gvr-interface/CMakeLists.txt
+++ b/gvr-interface/CMakeLists.txt
@@ -1,6 +1,21 @@
set(TARGET_NAME gvr-interface)
if (ANDROID)
+ set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build")
+ set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk")
+
+ set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME})
+ set(ANDROID_APP_DISPLAY_NAME Interface)
+ set(ANDROID_API_LEVEL 19)
+ set(ANDROID_APK_PACKAGE io.highfidelity.gvrinterface)
+ set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceActivity)
+ set(ANDROID_APK_VERSION_NAME "0.1")
+ set(ANDROID_APK_VERSION_CODE 1)
+ set(ANDROID_DEPLOY_QT_INSTALL "--install")
+
+ set(BUILD_SHARED_LIBS ON)
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
+
setup_hifi_library(Gui Widgets AndroidExtras)
else ()
setup_hifi_project(Gui Widgets)
@@ -13,25 +28,6 @@ include_glm()
link_hifi_libraries(shared networking audio-client avatars)
include_dependency_includes()
-if (ANDROID)
-
- set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build")
- set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk")
-
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
- set(BUILD_SHARED_LIBS ON)
-
- set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME})
- set(ANDROID_APP_DISPLAY_NAME Interface)
- set(ANDROID_API_LEVEL 19)
- set(ANDROID_APK_PACKAGE io.highfidelity.gvrinterface)
- set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceActivity)
- set(ANDROID_APK_VERSION_NAME "0.1")
- set(ANDROID_APK_VERSION_CODE 1)
- set(ANDROID_DEPLOY_QT_INSTALL "--install")
-
-endif ()
-
find_package(LibOVR)
if (LIBOVR_FOUND)
add_definitions(-DHAVE_LIBOVR)
@@ -50,7 +46,7 @@ endif ()
# the presence of a HOCKEY_APP_ID means we are making a beta build
if (ANDROID AND HOCKEY_APP_ID)
set(HOCKEY_APP_ENABLED true)
- set(HOCKEY_APP_ACTIVITY "")
+ set(HOCKEY_APP_ACTIVITY "\n")
set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceBetaActivity)
set(ANDROID_DEPLOY_QT_INSTALL "")
set(ANDROID_APK_CUSTOM_NAME "Interface-beta.apk")
@@ -71,9 +67,19 @@ elseif (ANDROID)
endif ()
if (ANDROID)
+
+ set(HIFI_URL_INTENT "\
+ \n \
+ \n \
+ \n \
+ \n \
+ \n "
+ )
+
+ set(ANDROID_EXTRA_APPLICATION_XML "${HOCKEY_APP_ACTIVITY}")
+ set(ANDROID_EXTRA_ACTIVITY_XML "${HIFI_URL_INTENT}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/hockeyapp.xml.in" "${ANDROID_APK_BUILD_DIR}/res/values/hockeyapp.xml")
-
qt_create_apk()
endif (ANDROID)
\ No newline at end of file
diff --git a/gvr-interface/src/GVRInterface.cpp b/gvr-interface/src/GVRInterface.cpp
index 57907ee752..2517af91f6 100644
--- a/gvr-interface/src/GVRInterface.cpp
+++ b/gvr-interface/src/GVRInterface.cpp
@@ -9,7 +9,7 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
-#ifdef Q_OS_ANDROID
+#ifdef Q_WS_ANDROID
#include
#include
@@ -42,7 +42,7 @@ GVRInterface::GVRInterface(int argc, char* argv[]) :
connect(this, &QGuiApplication::applicationStateChanged, this, &GVRInterface::handleApplicationStateChange);
-#if defined(Q_OS_ANDROID) && defined(HAVE_LIBOVR)
+#if defined(Q_WS_ANDROID) && defined(HAVE_LIBOVR)
QAndroidJniEnvironment jniEnv;
QPlatformNativeInterface* interface = QApplication::platformNativeInterface();
@@ -59,7 +59,7 @@ GVRInterface::GVRInterface(int argc, char* argv[]) :
}
void GVRInterface::idle() {
-#if defined(Q_OS_ANDROID) && defined(HAVE_LIBOVR)
+#if defined(Q_WS_ANDROID) && defined(HAVE_LIBOVR)
if (!_inVRMode && ovr_IsHeadsetDocked()) {
qDebug() << "The headset just got docked - assume we are in VR mode.";
_inVRMode = true;
diff --git a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java
index be4d42e725..2b35c19960 100644
--- a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java
+++ b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java
@@ -11,8 +11,11 @@
package io.highfidelity.gvrinterface;
+import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.view.WindowManager;
+import android.util.Log;
import org.qtproject.qt5.android.bindings.QtActivity;
public class InterfaceActivity extends QtActivity {
@@ -21,5 +24,16 @@ public class InterfaceActivity extends QtActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+ // Get the intent that started this activity in case we have a hifi:// URL to parse
+ Intent intent = getIntent();
+ if (intent.getAction() == Intent.ACTION_VIEW) {
+ Uri data = intent.getData();
+
+ if (data.getScheme().equals("hifi")) {
+
+ }
+ }
+
}
}
\ No newline at end of file
diff --git a/interface/external/gverb/readme.txt b/interface/external/gverb/readme.txt
deleted file mode 100644
index 2f8991b1d4..0000000000
--- a/interface/external/gverb/readme.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Instructions for adding the Gverb library to Interface
-(This is a required library)
-Clément Brisset, October 22nd, 2014
-
-1. Go to https://github.com/highfidelity/gverb
- Or download the sources directly via this link:
- https://github.com/highfidelity/gverb/archive/master.zip
-
-2. Extract the archive
-
-3. Place the directories “include” and “src” in interface/external/gverb
- (Normally next to this readme)
-
-4. Clear your build directory, run cmake, build and you should be all set.
diff --git a/libraries/audio-client/external/gverb/include/gverb.h b/libraries/audio-client/external/gverb/include/gverb.h
deleted file mode 100755
index cd9c1a893d..0000000000
--- a/libraries/audio-client/external/gverb/include/gverb.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-
- Copyright (C) 1999 Juhana Sadeharju
- kouhia at nic.funet.fi
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- */
-
-#ifndef GVERB_H
-#define GVERB_H
-
-#include
-#include
-#include
-#include "gverbdsp.h"
-#include "gverb.h"
-#include "ladspa-util.h"
-
-#define FDNORDER 4
-
-typedef struct {
- int rate;
- float inputbandwidth;
- float taillevel;
- float earlylevel;
- ty_damper *inputdamper;
- float maxroomsize;
- float roomsize;
- float revtime;
- float maxdelay;
- float largestdelay;
- ty_fixeddelay **fdndels;
- float *fdngains;
- int *fdnlens;
- ty_damper **fdndamps;
- float fdndamping;
- ty_diffuser **ldifs;
- ty_diffuser **rdifs;
- ty_fixeddelay *tapdelay;
- int *taps;
- float *tapgains;
- float *d;
- float *u;
- float *f;
- double alpha;
-} ty_gverb;
-
-
-ty_gverb *gverb_new(int, float, float, float, float, float, float, float, float);
-void gverb_free(ty_gverb *);
-void gverb_flush(ty_gverb *);
-static void gverb_do(ty_gverb *, float, float *, float *);
-static void gverb_set_roomsize(ty_gverb *, float);
-static void gverb_set_revtime(ty_gverb *, float);
-static void gverb_set_damping(ty_gverb *, float);
-static void gverb_set_inputbandwidth(ty_gverb *, float);
-static void gverb_set_earlylevel(ty_gverb *, float);
-static void gverb_set_taillevel(ty_gverb *, float);
-
-/*
- * This FDN reverb can be made smoother by setting matrix elements at the
- * diagonal and near of it to zero or nearly zero. By setting diagonals to zero
- * means we remove the effect of the parallel comb structure from the
- * reverberation. A comb generates uniform impulse stream to the reverberation
- * impulse response, and thus it is not good. By setting near diagonal elements
- * to zero means we remove delay sequences having consequtive delays of the
- * similar lenths, when the delays are in sorted in length with respect to
- * matrix element index. The matrix described here could be generated by
- * differencing Rocchesso's circulant matrix at max diffuse value and at low
- * diffuse value (approaching parallel combs).
- *
- * Example 1:
- * Set a(k,k), for all k, equal to 0.
- *
- * Example 2:
- * Set a(k,k), a(k,k-1) and a(k,k+1) equal to 0.
- *
- * Example 3: The transition to zero gains could be smooth as well.
- * a(k,k-1) and a(k,k+1) could be 0.3, and a(k,k-2) and a(k,k+2) could
- * be 0.5, say.
- */
-
-static __inline void gverb_fdnmatrix(float *a, float *b)
-{
- const float dl0 = a[0], dl1 = a[1], dl2 = a[2], dl3 = a[3];
-
- b[0] = 0.5f*(+dl0 + dl1 - dl2 - dl3);
- b[1] = 0.5f*(+dl0 - dl1 - dl2 + dl3);
- b[2] = 0.5f*(-dl0 + dl1 - dl2 + dl3);
- b[3] = 0.5f*(+dl0 + dl1 + dl2 + dl3);
-}
-
-static __inline void gverb_do(ty_gverb *p, float x, float *yl, float *yr)
-{
- float z;
- unsigned int i;
- float lsum,rsum,sum,sign;
-
- if ((x != x) || fabsf(x) > 100000.0f) {
- x = 0.0f;
- }
-
- z = damper_do(p->inputdamper, x);
-
- z = diffuser_do(p->ldifs[0],z);
-
- for(i = 0; i < FDNORDER; i++) {
- p->u[i] = p->tapgains[i]*fixeddelay_read(p->tapdelay,p->taps[i]);
- }
- fixeddelay_write(p->tapdelay,z);
-
- for(i = 0; i < FDNORDER; i++) {
- p->d[i] = damper_do(p->fdndamps[i],
- p->fdngains[i]*fixeddelay_read(p->fdndels[i],
- p->fdnlens[i]));
- }
-
- sum = 0.0f;
- sign = 1.0f;
- for(i = 0; i < FDNORDER; i++) {
- sum += sign*(p->taillevel*p->d[i] + p->earlylevel*p->u[i]);
- sign = -sign;
- }
- sum += x*p->earlylevel;
- lsum = sum;
- rsum = sum;
-
- gverb_fdnmatrix(p->d,p->f);
-
- for(i = 0; i < FDNORDER; i++) {
- fixeddelay_write(p->fdndels[i],p->u[i]+p->f[i]);
- }
-
- lsum = diffuser_do(p->ldifs[1],lsum);
- lsum = diffuser_do(p->ldifs[2],lsum);
- lsum = diffuser_do(p->ldifs[3],lsum);
- rsum = diffuser_do(p->rdifs[1],rsum);
- rsum = diffuser_do(p->rdifs[2],rsum);
- rsum = diffuser_do(p->rdifs[3],rsum);
-
- *yl = lsum;
- *yr = rsum;
-}
-
-static __inline void gverb_set_roomsize(ty_gverb *p, const float a)
-{
- unsigned int i;
-
- if (a <= 1.0 || (a != a)) {
- p->roomsize = 1.0;
- } else {
- p->roomsize = a;
- }
- p->largestdelay = p->rate * p->roomsize * 0.00294f;
-
- p->fdnlens[0] = f_round(1.000000f*p->largestdelay);
- p->fdnlens[1] = f_round(0.816490f*p->largestdelay);
- p->fdnlens[2] = f_round(0.707100f*p->largestdelay);
- p->fdnlens[3] = f_round(0.632450f*p->largestdelay);
- for(i = 0; i < FDNORDER; i++) {
- p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]);
- }
-
- p->taps[0] = 5+f_round(0.410f*p->largestdelay);
- p->taps[1] = 5+f_round(0.300f*p->largestdelay);
- p->taps[2] = 5+f_round(0.155f*p->largestdelay);
- p->taps[3] = 5+f_round(0.000f*p->largestdelay);
-
- for(i = 0; i < FDNORDER; i++) {
- p->tapgains[i] = powf((float)p->alpha, p->taps[i]);
- }
-
-}
-
-static __inline void gverb_set_revtime(ty_gverb *p,float a)
-{
- float ga,gt;
- double n;
- unsigned int i;
-
- p->revtime = a;
-
- ga = 60.0;
- gt = p->revtime;
- ga = powf(10.0f,-ga/20.0f);
- n = p->rate*gt;
- p->alpha = (double)powf(ga,1.0f/n);
-
- for(i = 0; i < FDNORDER; i++) {
- p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]);
- }
-
-}
-
-static __inline void gverb_set_damping(ty_gverb *p,float a)
-{
- unsigned int i;
-
- p->fdndamping = a;
- for(i = 0; i < FDNORDER; i++) {
- damper_set(p->fdndamps[i],p->fdndamping);
- }
-}
-
-static __inline void gverb_set_inputbandwidth(ty_gverb *p,float a)
-{
- p->inputbandwidth = a;
- damper_set(p->inputdamper,1.0 - p->inputbandwidth);
-}
-
-static __inline void gverb_set_earlylevel(ty_gverb *p,float a)
-{
- p->earlylevel = a;
-}
-
-static __inline void gverb_set_taillevel(ty_gverb *p,float a)
-{
- p->taillevel = a;
-}
-
-#endif
diff --git a/libraries/audio-client/external/gverb/include/gverbdsp.h b/libraries/audio-client/external/gverb/include/gverbdsp.h
deleted file mode 100755
index df228868d7..0000000000
--- a/libraries/audio-client/external/gverb/include/gverbdsp.h
+++ /dev/null
@@ -1,85 +0,0 @@
-
-#ifndef GVERBDSP_H
-#define GVERBDSP_H
-
-#include "ladspa-util.h"
-
-typedef struct {
- int size;
- int idx;
- float *buf;
-} ty_fixeddelay;
-
-typedef struct {
- int size;
- float coeff;
- int idx;
- float *buf;
-} ty_diffuser;
-
-typedef struct {
- float damping;
- float delay;
-} ty_damper;
-
-ty_diffuser *diffuser_make(int, float);
-void diffuser_free(ty_diffuser *);
-void diffuser_flush(ty_diffuser *);
-//float diffuser_do(ty_diffuser *, float);
-
-ty_damper *damper_make(float);
-void damper_free(ty_damper *);
-void damper_flush(ty_damper *);
-//void damper_set(ty_damper *, float);
-//float damper_do(ty_damper *, float);
-
-ty_fixeddelay *fixeddelay_make(int);
-void fixeddelay_free(ty_fixeddelay *);
-void fixeddelay_flush(ty_fixeddelay *);
-//float fixeddelay_read(ty_fixeddelay *, int);
-//void fixeddelay_write(ty_fixeddelay *, float);
-
-int isprime(int);
-int nearest_prime(int, float);
-
-static __inline float diffuser_do(ty_diffuser *p, float x)
-{
- float y,w;
-
- w = x - p->buf[p->idx]*p->coeff;
- w = flush_to_zero(w);
- y = p->buf[p->idx] + w*p->coeff;
- p->buf[p->idx] = w;
- p->idx = (p->idx + 1) % p->size;
- return(y);
-}
-
-static __inline float fixeddelay_read(ty_fixeddelay *p, int n)
-{
- int i;
-
- i = (p->idx - n + p->size) % p->size;
- return(p->buf[i]);
-}
-
-static __inline void fixeddelay_write(ty_fixeddelay *p, float x)
-{
- p->buf[p->idx] = x;
- p->idx = (p->idx + 1) % p->size;
-}
-
-static __inline void damper_set(ty_damper *p, float damping)
-{
- p->damping = damping;
-}
-
-static __inline float damper_do(ty_damper *p, float x)
-{
- float y;
-
- y = x*(1.0-p->damping) + p->delay*p->damping;
- p->delay = y;
- return(y);
-}
-
-#endif
diff --git a/libraries/audio-client/external/gverb/include/ladspa-util.h b/libraries/audio-client/external/gverb/include/ladspa-util.h
deleted file mode 100755
index ac7cad28ab..0000000000
--- a/libraries/audio-client/external/gverb/include/ladspa-util.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/* Some misc util functions for audio DSP work, written by Steve Harris,
- * December 2000
- *
- * steve@plugin.org.uk
- */
-
-#ifndef LADSPA_UTIL_H
-#define LADSPA_UTIL_H
-
-#include
-#include
-#include
-
-#define buffer_write(a, b) a=(b)
-
-// 16.16 fixpoint
-typedef union {
- int32_t all;
- struct {
-#ifdef WORDS_BIGENDIAN
- int16_t in;
- uint16_t fr;
-#else
- uint16_t fr;
- int16_t in;
-#endif
- } part;
-} fixp16;
-
-// 32.32 fixpoint
-typedef union {
- int64_t all;
- struct {
-#ifdef WORDS_BIGENDIAN
- int32_t in;
- uint32_t fr;
-#else
- uint32_t fr;
- int32_t in;
-#endif
- } part;
-} fixp32;
-
-/* 32 bit "pointer cast" union */
-typedef union {
- float f;
- int32_t i;
-} ls_pcast32;
-
-// Sometimes it doesn't get defined, even though it eists and C99 is declared
-long int lrintf (float x);
-
-// 1.0 / ln(2)
-#define LN2R 1.442695041f
-
-/* detet floating point denormal numbers by comparing them to the smallest
- * normal, crap, but reliable */
-#define DN_CHECK(x, l) if (fabs(x) < 1e-38) printf("DN: " l"\n")
-
-// Denormalise floats, only actually needed for PIII and recent PowerPC
-//#define FLUSH_TO_ZERO(fv) (((*(unsigned int*)&(fv))&0x7f800000)==0)?0.0f:(fv)
-
-static __inline float flush_to_zero(float f)
-{
- ls_pcast32 v;
-
- v.f = f;
-
- // original: return (v.i & 0x7f800000) == 0 ? 0.0f : f;
- // version from Tim Blechmann
- return (v.i & 0x7f800000) < 0x08000000 ? 0.0f : f;
-}
-
-static __inline void round_to_zero(volatile float *f)
-{
- *f += 1e-18;
- *f -= 1e-18;
-}
-
-/* A set of branchless clipping operations from Laurent de Soras */
-
-static __inline float f_max(float x, float a)
-{
- x -= a;
- x += fabs(x);
- x *= 0.5;
- x += a;
-
- return x;
-}
-
-static __inline float f_min(float x, float b)
-{
- x = b - x;
- x += fabs(x);
- x *= 0.5;
- x = b - x;
-
- return x;
-}
-
-static __inline float f_clamp(float x, float a, float b)
-{
- const float x1 = fabs(x - a);
- const float x2 = fabs(x - b);
-
- x = x1 + a + b;
- x -= x2;
- x *= 0.5;
-
- return x;
-}
-
-// Limit a value to be l<=v<=u
-#define LIMIT(v,l,u) ((v)<(l)?(l):((v)>(u)?(u):(v)))
-
-// Truncate-to-zero modulo (ANSI C doesn't specify) will only work
-// if -m < v < 2m
-#define MOD(v,m) (v<0?v+m:(v>=m?v-m:v))
-
-// Truncate-to-zero modulo (ANSI C doesn't specify) will only work
-// if v > -m and v < m
-#define NEG_MOD(v,m) ((v)<0?((v)+(m)):(v))
-
-// Convert a value in dB's to a coefficent
-#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f)
-#define CO_DB(v) (20.0f * log10f(v))
-
-// Linearly interpolate [ = a * (1 - f) + b * f]
-#define LIN_INTERP(f,a,b) ((a) + (f) * ((b) - (a)))
-
-// Cubic interpolation function
-static __inline float cube_interp(const float fr, const float inm1, const float
- in, const float inp1, const float inp2)
-{
- return in + 0.5f * fr * (inp1 - inm1 +
- fr * (4.0f * inp1 + 2.0f * inm1 - 5.0f * in - inp2 +
- fr * (3.0f * (in - inp1) - inm1 + inp2)));
-}
-
-/* fast sin^2 aproxiamtion, adapted from jan AT rpgfan's posting to the
- * music-dsp list */
-static __inline float f_sin_sq(float angle)
-{
- const float asqr = angle * angle;
- float result = -2.39e-08f;
-
- result *= asqr;
- result += 2.7526e-06f;
- result *= asqr;
- result -= 1.98409e-04f;
- result *= asqr;
- result += 8.3333315e-03f;
- result *= asqr;
- result -= 1.666666664e-01f;
- result *= asqr;
- result += 1.0f;
- result *= angle;
-
- return result * result;
-}
-
-#ifdef HAVE_LRINTF
-
-#define f_round(f) lrintf(f)
-
-#else
-
-// Round float to int using IEEE int* hack
-static __inline int f_round(float f)
-{
- ls_pcast32 p;
-
- p.f = f;
- p.f += (3<<22);
-
- return p.i - 0x4b400000;
-}
-
-#endif
-
-// Truncate float to int
-static __inline int f_trunc(float f)
-{
- return f_round(floorf(f));
-}
-
-/* Andrew Simper's pow(2, x) aproximation from the music-dsp list */
-
-#if 0
-
-/* original */
-static __inline float f_pow2(float x)
-{
- long *px = (long*)(&x); // store address of float as long pointer
- const float tx = (x-0.5f) + (3<<22); // temporary value for truncation
- const long lx = *((long*)&tx) - 0x4b400000; // integer power of 2
- const float dx = x-(float)(lx); // float remainder of power of 2
-
- x = 1.0f + dx*(0.6960656421638072f + // cubic apporoximation of 2^x
- dx*(0.224494337302845f + // for x in the range [0, 1]
- dx*(0.07944023841053369f)));
- *px += (lx<<23); // add integer power of 2 to exponent
-
- return x;
-}
-
-#else
-
-/* union version */
-static __inline float f_pow2(float x)
-{
- ls_pcast32 *px, tx, lx;
- float dx;
-
- px = (ls_pcast32 *)&x; // store address of float as long pointer
- tx.f = (x-0.5f) + (3<<22); // temporary value for truncation
- lx.i = tx.i - 0x4b400000; // integer power of 2
- dx = x - (float)lx.i; // float remainder of power of 2
-
- x = 1.0f + dx * (0.6960656421638072f + // cubic apporoximation of 2^x
- dx * (0.224494337302845f + // for x in the range [0, 1]
- dx * (0.07944023841053369f)));
- (*px).i += (lx.i << 23); // add integer power of 2 to exponent
-
- return (*px).f;
-}
-
-#endif
-
-/* Fast exponentiation function, y = e^x */
-#define f_exp(x) f_pow2(x * LN2R)
-
-#endif
diff --git a/libraries/audio-client/external/gverb/readme.txt b/libraries/audio-client/external/gverb/readme.txt
index 29e10eb125..bb01e48a74 100644
--- a/libraries/audio-client/external/gverb/readme.txt
+++ b/libraries/audio-client/external/gverb/readme.txt
@@ -1,4 +1,4 @@
-Instructions for adding the Gverb library to Interface
+Instructions for adding the Gverb library to audio-client
(This is a required library)
Clément Brisset, October 22nd, 2014
diff --git a/libraries/audio-client/external/gverb/src/gverb.c b/libraries/audio-client/external/gverb/src/gverb.c
deleted file mode 100755
index e3980232bc..0000000000
--- a/libraries/audio-client/external/gverb/src/gverb.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
-
- Copyright (C) 1999 Juhana Sadeharju
- kouhia at nic.funet.fi
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- */
-
-
-#include
-#include
-#include
-#include
-#include "gverbdsp.h"
-#include "gverb.h"
-#include "../include/ladspa-util.h"
-
-ty_gverb *gverb_new(int srate, float maxroomsize, float roomsize,
- float revtime,
- float damping, float spread,
- float inputbandwidth, float earlylevel,
- float taillevel)
-{
- ty_gverb *p;
- float ga,gb,gt;
- int i,n;
- float r;
- float diffscale;
- int a,b,c,cc,d,dd,e;
- float spread1,spread2;
-
- p = (ty_gverb *)malloc(sizeof(ty_gverb));
- p->rate = srate;
- p->fdndamping = damping;
- p->maxroomsize = maxroomsize;
- p->roomsize = roomsize;
- p->revtime = revtime;
- p->earlylevel = earlylevel;
- p->taillevel = taillevel;
-
- p->maxdelay = p->rate*p->maxroomsize/340.0;
- p->largestdelay = p->rate*p->roomsize/340.0;
-
-
- /* Input damper */
-
- p->inputbandwidth = inputbandwidth;
- p->inputdamper = damper_make(1.0 - p->inputbandwidth);
-
-
- /* FDN section */
-
-
- p->fdndels = (ty_fixeddelay **)calloc(FDNORDER, sizeof(ty_fixeddelay *));
- for(i = 0; i < FDNORDER; i++) {
- p->fdndels[i] = fixeddelay_make((int)p->maxdelay+1000);
- }
- p->fdngains = (float *)calloc(FDNORDER, sizeof(float));
- p->fdnlens = (int *)calloc(FDNORDER, sizeof(int));
-
- p->fdndamps = (ty_damper **)calloc(FDNORDER, sizeof(ty_damper *));
- for(i = 0; i < FDNORDER; i++) {
- p->fdndamps[i] = damper_make(p->fdndamping);
- }
-
- ga = 60.0;
- gt = p->revtime;
- ga = powf(10.0f,-ga/20.0f);
- n = p->rate*gt;
- p->alpha = pow((double)ga, 1.0/(double)n);
-
- gb = 0.0;
- for(i = 0; i < FDNORDER; i++) {
- if (i == 0) gb = 1.000000*p->largestdelay;
- if (i == 1) gb = 0.816490*p->largestdelay;
- if (i == 2) gb = 0.707100*p->largestdelay;
- if (i == 3) gb = 0.632450*p->largestdelay;
-
-#if 0
- p->fdnlens[i] = nearest_prime((int)gb, 0.5);
-#else
- p->fdnlens[i] = f_round(gb);
-#endif
- p->fdngains[i] = -powf((float)p->alpha,p->fdnlens[i]);
- }
-
- p->d = (float *)calloc(FDNORDER, sizeof(float));
- p->u = (float *)calloc(FDNORDER, sizeof(float));
- p->f = (float *)calloc(FDNORDER, sizeof(float));
-
- /* Diffuser section */
-
- diffscale = (float)p->fdnlens[3]/(210+159+562+410);
- spread1 = spread;
- spread2 = 3.0*spread;
-
- b = 210;
- r = 0.125541;
- a = spread1*r;
- c = 210+159+a;
- cc = c-b;
- r = 0.854046;
- a = spread2*r;
- d = 210+159+562+a;
- dd = d-c;
- e = 1341-d;
-
- p->ldifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *));
- p->ldifs[0] = diffuser_make((int)(diffscale*b),0.75);
- p->ldifs[1] = diffuser_make((int)(diffscale*cc),0.75);
- p->ldifs[2] = diffuser_make((int)(diffscale*dd),0.625);
- p->ldifs[3] = diffuser_make((int)(diffscale*e),0.625);
-
- b = 210;
- r = -0.568366;
- a = spread1*r;
- c = 210+159+a;
- cc = c-b;
- r = -0.126815;
- a = spread2*r;
- d = 210+159+562+a;
- dd = d-c;
- e = 1341-d;
-
- p->rdifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *));
- p->rdifs[0] = diffuser_make((int)(diffscale*b),0.75);
- p->rdifs[1] = diffuser_make((int)(diffscale*cc),0.75);
- p->rdifs[2] = diffuser_make((int)(diffscale*dd),0.625);
- p->rdifs[3] = diffuser_make((int)(diffscale*e),0.625);
-
-
-
- /* Tapped delay section */
-
- p->tapdelay = fixeddelay_make(44000);
- p->taps = (int *)calloc(FDNORDER, sizeof(int));
- p->tapgains = (float *)calloc(FDNORDER, sizeof(float));
-
- p->taps[0] = 5+0.410*p->largestdelay;
- p->taps[1] = 5+0.300*p->largestdelay;
- p->taps[2] = 5+0.155*p->largestdelay;
- p->taps[3] = 5+0.000*p->largestdelay;
-
- for(i = 0; i < FDNORDER; i++) {
- p->tapgains[i] = pow(p->alpha,(double)p->taps[i]);
- }
-
- return(p);
-}
-
-void gverb_free(ty_gverb *p)
-{
- int i;
-
- damper_free(p->inputdamper);
- for(i = 0; i < FDNORDER; i++) {
- fixeddelay_free(p->fdndels[i]);
- damper_free(p->fdndamps[i]);
- diffuser_free(p->ldifs[i]);
- diffuser_free(p->rdifs[i]);
- }
- free(p->fdndels);
- free(p->fdngains);
- free(p->fdnlens);
- free(p->fdndamps);
- free(p->d);
- free(p->u);
- free(p->f);
- free(p->ldifs);
- free(p->rdifs);
- free(p->taps);
- free(p->tapgains);
- fixeddelay_free(p->tapdelay);
- free(p);
-}
-
-void gverb_flush(ty_gverb *p)
-{
- int i;
-
- damper_flush(p->inputdamper);
- for(i = 0; i < FDNORDER; i++) {
- fixeddelay_flush(p->fdndels[i]);
- damper_flush(p->fdndamps[i]);
- diffuser_flush(p->ldifs[i]);
- diffuser_flush(p->rdifs[i]);
- }
- memset(p->d, 0, FDNORDER * sizeof(float));
- memset(p->u, 0, FDNORDER * sizeof(float));
- memset(p->f, 0, FDNORDER * sizeof(float));
- fixeddelay_flush(p->tapdelay);
-}
-
-/* swh: other functions are now in the .h file for inlining */
diff --git a/libraries/audio-client/external/gverb/src/gverbdsp.c b/libraries/audio-client/external/gverb/src/gverbdsp.c
deleted file mode 100755
index 05a90f897e..0000000000
--- a/libraries/audio-client/external/gverb/src/gverbdsp.c
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-/*
-
- Copyright (C) 1999 Juhana Sadeharju
- kouhia at nic.funet.fi
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- */
-
-#include
-#include
-#include
-#include
-
-#include "gverbdsp.h"
-
-#define TRUE 1
-#define FALSE 0
-
-ty_diffuser *diffuser_make(int size, float coeff)
-{
- ty_diffuser *p;
- int i;
-
- p = (ty_diffuser *)malloc(sizeof(ty_diffuser));
- p->size = size;
- p->coeff = coeff;
- p->idx = 0;
- p->buf = (float *)malloc(size*sizeof(float));
- for (i = 0; i < size; i++) p->buf[i] = 0.0;
- return(p);
-}
-
-void diffuser_free(ty_diffuser *p)
-{
- free(p->buf);
- free(p);
-}
-
-void diffuser_flush(ty_diffuser *p)
-{
- memset(p->buf, 0, p->size * sizeof(float));
-}
-
-ty_damper *damper_make(float damping)
-{
- ty_damper *p;
-
- p = (ty_damper *)malloc(sizeof(ty_damper));
- p->damping = damping;
- p->delay = 0.0f;
- return(p);
-}
-
-void damper_free(ty_damper *p)
-{
- free(p);
-}
-
-void damper_flush(ty_damper *p)
-{
- p->delay = 0.0f;
-}
-
-ty_fixeddelay *fixeddelay_make(int size)
-{
- ty_fixeddelay *p;
- int i;
-
- p = (ty_fixeddelay *)malloc(sizeof(ty_fixeddelay));
- p->size = size;
- p->idx = 0;
- p->buf = (float *)malloc(size*sizeof(float));
- for (i = 0; i < size; i++) p->buf[i] = 0.0;
- return(p);
-}
-
-void fixeddelay_free(ty_fixeddelay *p)
-{
- free(p->buf);
- free(p);
-}
-
-void fixeddelay_flush(ty_fixeddelay *p)
-{
- memset(p->buf, 0, p->size * sizeof(float));
-}
-
-int isprime(int n)
-{
- unsigned int i;
- const unsigned int lim = (int)sqrtf((float)n);
-
- if (n == 2) return(TRUE);
- if ((n & 1) == 0) return(FALSE);
- for(i = 3; i <= lim; i += 2)
- if ((n % i) == 0) return(FALSE);
- return(TRUE);
-}
-
-int nearest_prime(int n, float rerror)
- /* relative error; new prime will be in range
- * [n-n*rerror, n+n*rerror];
- */
-{
- int bound,k;
-
- if (isprime(n)) return(n);
- /* assume n is large enough and n*rerror enough smaller than n */
- bound = n*rerror;
- for(k = 1; k <= bound; k++) {
- if (isprime(n+k)) return(n+k);
- if (isprime(n-k)) return(n-k);
- }
- return(-1);
-}