diff --git a/.gitignore b/.gitignore index f0ad36b..e2579c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # ignore build artifacts build-*/* +*.o # user config *.codekit @@ -7,3 +8,4 @@ build-*/* *.pro.user.* *.stash *.autosave + diff --git a/xybrid/audio/audioengine.h b/xybrid/audio/audioengine.h index 140130f..83f5433 100644 --- a/xybrid/audio/audioengine.h +++ b/xybrid/audio/audioengine.h @@ -6,7 +6,7 @@ #include #include #include - +#include #include #include #include diff --git a/xybrid/data/pattern.h b/xybrid/data/pattern.h index 0eed5f1..2a60764 100644 --- a/xybrid/data/pattern.h +++ b/xybrid/data/pattern.h @@ -7,7 +7,7 @@ #include #include #include - +#include #include namespace Xybrid::Data { diff --git a/xybrid/main.cpp b/xybrid/main.cpp index 261234a..c7d8dd6 100644 --- a/xybrid/main.cpp +++ b/xybrid/main.cpp @@ -13,13 +13,15 @@ int main(int argc, char *argv[]) { qRegisterMetaType(); - - QApplication a(argc, argv); - // enable antialiasing on accelerated graphicsview QSurfaceFormat fmt; fmt.setSamples(10); + QSurfaceFormat::setDefaultFormat(fmt); + QApplication a(argc, argv); + + + // make sure bundled fonts are loaded QFontDatabase::addApplicationFont(":/fonts/iosevka-term-light.ttf"); diff --git a/xybrid/mainwindow.cpp b/xybrid/mainwindow.cpp index e7a82d3..8364478 100644 --- a/xybrid/mainwindow.cpp +++ b/xybrid/mainwindow.cpp @@ -320,8 +320,11 @@ MainWindow::MainWindow(QWidget *parent) : view->setViewport(vp); // enable hardware acceleration } view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); + // Under OSX these cause Xybrid to crash. + #ifndef __APPLE__ glEnable(GL_MULTISAMPLE); glEnable(GL_LINE_SMOOTH); + #endif //QGL::FormatOption::Rgba diff --git a/xybrid/nodelib/instrumentcore.h b/xybrid/nodelib/instrumentcore.h index 8036924..b537262 100644 --- a/xybrid/nodelib/instrumentcore.h +++ b/xybrid/nodelib/instrumentcore.h @@ -3,7 +3,7 @@ #include #include #include - +#include #include "nodelib/basics.h" #include "data/node.h" diff --git a/xybrid/nodelib/resampler.cpp b/xybrid/nodelib/resampler.cpp index 6d433e0..b7772f8 100644 --- a/xybrid/nodelib/resampler.cpp +++ b/xybrid/nodelib/resampler.cpp @@ -1,8 +1,17 @@ #include "resampler.h" using namespace Xybrid::NodeLib; -#include + #include +#include + +#ifdef WITH_BOOST +#include +#define cyl_bessel_i boost::math::cyl_bessel_i +#else +#include +#define cyl_bessel_i std::cyl_bessel_i +#endif namespace { const constexpr double PI = 3.141592653589793238462643383279502884197169399375105820974; @@ -17,9 +26,12 @@ namespace { } } + + // generate const std::array, LUT_STEPS> Xybrid::NodeLib::resamplerLUT = [] { - double denom = std::cyl_bessel_i(0, KAISER_BETA); + + double denom = cyl_bessel_i(0, KAISER_BETA); std::array, LUT_STEPS> t; t[0] = {0, 0, 0, 1, 0, 0, 0, 0}; // we already know the ideal integer step @@ -27,7 +39,7 @@ const std::array, LUT_STEPS> Xybrid::NodeLib::resam double sv = static_cast(step) / LUT_STEPS; for (size_t tap = 0; tap < LUT_TAPS; tap++) { double x = static_cast(tap) - sv; - t[step][tap] = sinc(x-(LUT_TAPS/2-1)) * (std::cyl_bessel_i(0, KAISER_BETA * std::sqrt(1 - std::pow(((2 * (x+1)) / (LUT_TAPS)) - 1, 2))) / denom); + t[step][tap] = sinc(x-(LUT_TAPS/2-1)) * (cyl_bessel_i(0, KAISER_BETA * std::sqrt(1 - std::pow(((2 * (x+1)) / (LUT_TAPS)) - 1, 2))) / denom); if (t[step][tap] != t[step][tap]) t[step][tap] = 0; // NaN guard //std::cout << "tap " << tap << ": " << t[step][tap] << " "; } diff --git a/xybrid/xybrid.pro b/xybrid/xybrid.pro index 3b66d63..6805bda 100644 --- a/xybrid/xybrid.pro +++ b/xybrid/xybrid.pro @@ -17,6 +17,7 @@ TEMPLATE = app # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS + # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. @@ -36,6 +37,24 @@ HEADERS += $$files(*.h, true) \ FORMS += $$files(*.ui, true) RESOURCES += res/resources.qrc +unix:!macx { + +} + +macx: { + DEFINES += WITH_BOOST + LIBS += -L/usr/local/Cellar/boost/1.70.0/lib/ -lboost_math_tr1 + LIBS += -framework OpenGL + QMAKE_CXXFLAGS += -I/usr/local/Cellar/boost/1.70.0/include/ +} + +# TODO: make this work. +CONFIG (boost) { + DEFINES += WITH_BOOST + LIBS += -L$${BOOSTPATH} + QMAKE_CXXFLAGS += -I$${BOOSTINCLUDE} +} + # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin