Signed-off-by: falkTX <falktx@falktx.com>tags/22.07
| @@ -64,6 +64,7 @@ DGL_EXTRA_ARGS = \ | |||||
| NVG_DISABLE_SKIPPING_WHITESPACE=true \ | NVG_DISABLE_SKIPPING_WHITESPACE=true \ | ||||
| NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST \ | NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST \ | ||||
| USE_NANOVG_FBO=true \ | USE_NANOVG_FBO=true \ | ||||
| ASM_EXCEPTIONS=true \ | |||||
| WINDOWS_ICON_ID=401 | WINDOWS_ICON_ID=401 | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit ca15445429d7ff872fd40db23e24840cc6b90436 | |||||
| Subproject commit 1ee091f4cc42fcf25d5064e6b9ebd569038684fe | |||||
| @@ -10,6 +10,7 @@ | |||||
| DISTRHO_NAMESPACE = CardinalDISTRHO | DISTRHO_NAMESPACE = CardinalDISTRHO | ||||
| DGL_NAMESPACE = CardinalDGL | DGL_NAMESPACE = CardinalDGL | ||||
| USE_NANOVG_FBO = true | USE_NANOVG_FBO = true | ||||
| WASM_EXCEPTIONS = true | |||||
| include ../dpf/Makefile.base.mk | include ../dpf/Makefile.base.mk | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -62,10 +63,6 @@ BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| ifeq ($(WASM),true) | |||||
| BUILD_CXX_FLAGS += -fexceptions | |||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # override VCV arch.mk stuff so we can build more architectures | # override VCV arch.mk stuff so we can build more architectures | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit c2938c02994988bd5dde4c4cbba9951709789ee8 | |||||
| Subproject commit b63db742200341b91358c14a7290104cb97d5613 | |||||
| @@ -21,7 +21,6 @@ | |||||
| # include_next <mmintrin.h> | # include_next <mmintrin.h> | ||||
| #elif defined(__EMSCRIPTEN__) | #elif defined(__EMSCRIPTEN__) | ||||
| # include <wasm_simd128.h> | # include <wasm_simd128.h> | ||||
| // # include_next <pmmintrin.h> | |||||
| #else | #else | ||||
| # include "../sse2neon/sse2neon.h" | # include "../sse2neon/sse2neon.h" | ||||
| #endif | #endif | ||||
| @@ -23,16 +23,6 @@ | |||||
| #elif defined(__EMSCRIPTEN__) | #elif defined(__EMSCRIPTEN__) | ||||
| # include_next <pmmintrin.h> | # include_next <pmmintrin.h> | ||||
| // NOTE these have been verified to be unused (included for ValleyAudio builds) | |||||
| // static inline | |||||
| // __m64 _mm_and_si64(__m64 a, __m64 b) { return a; } | |||||
| // | |||||
| // static inline | |||||
| // __m64 _mm_andnot_si64(__m64 a, __m64 b) { return a; } | |||||
| // | |||||
| // static inline | |||||
| // __m64 _mm_or_si64(__m64 a, __m64 b) { return a; } | |||||
| static inline | static inline | ||||
| __m64 _mm_set1_pi16(short w) | __m64 _mm_set1_pi16(short w) | ||||
| { | { | ||||
| @@ -48,25 +38,6 @@ void __builtin_ia32_pause() | |||||
| __asm__ __volatile__("isb\n"); | __asm__ __volatile__("isb\n"); | ||||
| } | } | ||||
| static inline | |||||
| __m64 _mm_and_si64(__m64 a, __m64 b) | |||||
| { | |||||
| return vreinterpret_s64_s32(vand_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b))); | |||||
| } | |||||
| static inline | |||||
| __m64 _mm_andnot_si64(__m64 a, __m64 b) | |||||
| { | |||||
| // *NOTE* argument swap | |||||
| return vreinterpret_s64_s32(vbic_s32(vreinterpret_s32_m64(b), vreinterpret_s32_m64(a))); | |||||
| } | |||||
| static inline | |||||
| __m64 _mm_or_si64(__m64 a, __m64 b) | |||||
| { | |||||
| return vreinterpret_s64_s32(vorr_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b))); | |||||
| } | |||||
| static inline | static inline | ||||
| __m64 _mm_set1_pi16(short w) | __m64 _mm_set1_pi16(short w) | ||||
| { | { | ||||
| @@ -287,7 +287,7 @@ struct SassyScopeWidget : ImGuiWidget { | |||||
| do_show_scope_window(module != nullptr ? &module->scope : getFakeScopeInstance(), scaleFactor); | do_show_scope_window(module != nullptr ? &module->scope : getFakeScopeInstance(), scaleFactor); | ||||
| } | } | ||||
| void onButton(const ButtonEvent& e) | |||||
| void onButton(const ButtonEvent& e) override | |||||
| { | { | ||||
| // if mouse press is over draggable areas, do nothing so event can go to Rack | // if mouse press is over draggable areas, do nothing so event can go to Rack | ||||
| if (e.action == GLFW_PRESS) | if (e.action == GLFW_PRESS) | ||||
| @@ -10,6 +10,7 @@ | |||||
| DISTRHO_NAMESPACE = CardinalDISTRHO | DISTRHO_NAMESPACE = CardinalDISTRHO | ||||
| DGL_NAMESPACE = CardinalDGL | DGL_NAMESPACE = CardinalDGL | ||||
| USE_NANOVG_FBO = true | USE_NANOVG_FBO = true | ||||
| WASM_EXCEPTIONS = true | |||||
| include ../dpf/Makefile.base.mk | include ../dpf/Makefile.base.mk | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -114,10 +115,6 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| ifeq ($(WASM),true) | |||||
| BUILD_CXX_FLAGS += -fexceptions | |||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Rack files to build | # Rack files to build | ||||
| @@ -53,6 +53,7 @@ DGL_NAMESPACE = CardinalDGL | |||||
| NVG_DISABLE_SKIPPING_WHITESPACE = true | NVG_DISABLE_SKIPPING_WHITESPACE = true | ||||
| NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST | NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST | ||||
| USE_NANOVG_FBO = true | USE_NANOVG_FBO = true | ||||
| WASM_EXCEPTIONS = true | |||||
| include ../../dpf/Makefile.base.mk | include ../../dpf/Makefile.base.mk | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -194,10 +195,6 @@ endif | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| ifeq ($(WASM),true) | |||||
| BUILD_CXX_FLAGS += -fexceptions | |||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # FIXME lots of warnings from VCV side | # FIXME lots of warnings from VCV side | ||||
| @@ -210,9 +207,9 @@ BASE_FLAGS += -Wno-unused-variable | |||||
| ifeq ($(WASM),true) | ifeq ($(WASM),true) | ||||
| LINK_FLAGS += --preload-file=./resources | LINK_FLAGS += --preload-file=./resources | ||||
| LINK_FLAGS += -sALLOW_MEMORY_GROWTH | LINK_FLAGS += -sALLOW_MEMORY_GROWTH | ||||
| LINK_FLAGS += -sEXPORTED_RUNTIME_METHODS=FS,ccall | |||||
| LINK_FLAGS += -sEXPORTED_RUNTIME_METHODS=FS,cwrap | |||||
| LINK_FLAGS += -sINITIAL_MEMORY=64Mb | LINK_FLAGS += -sINITIAL_MEMORY=64Mb | ||||
| LINK_FLAGS += -sLZ4=1 | |||||
| # LINK_FLAGS += -sLZ4=1 | |||||
| LINK_FLAGS += --shell-file=../emscripten/shell.html | LINK_FLAGS += --shell-file=../emscripten/shell.html | ||||
| else ifeq ($(HAIKU),true) | else ifeq ($(HAIKU),true) | ||||
| LINK_FLAGS += -lpthread | LINK_FLAGS += -lpthread | ||||
| @@ -3,10 +3,13 @@ | |||||
| <head> | <head> | ||||
| <meta charset="utf-8"> | <meta charset="utf-8"> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
| <meta name="description" content="Cardinal" /> | |||||
| <meta name="theme-color" content="#111111"> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1" user-scalable="no"> | |||||
| <title>Cardinal Synth</title> | <title>Cardinal Synth</title> | ||||
| <style> | <style> | ||||
| html { | html { | ||||
| background-color: #111; | |||||
| background-color: #111111; | |||||
| color: #eee; | color: #eee; | ||||
| } | } | ||||
| body, canvas { | body, canvas { | ||||
| @@ -14,16 +17,36 @@ | |||||
| margin: 0; | margin: 0; | ||||
| } | } | ||||
| #canvas_file_open, | |||||
| #canvas_file_save { | |||||
| #canvas_file_open { | |||||
| display: none; | display: none; | ||||
| } | } | ||||
| #canvas_wrapper { | #canvas_wrapper { | ||||
| display: none; | display: none; | ||||
| image-rendering: pixelated; | |||||
| image-rendering: crisp-edges; | |||||
| position: absolute; | |||||
| width: 100vw; | width: 100vw; | ||||
| height: 100vh; | height: 100vh; | ||||
| } | } | ||||
| @media (min-resolution: 2dppx) { | |||||
| #canvas_wrapper { | |||||
| scale: calc(1/2); | |||||
| width: 200vw; | |||||
| height: 200vh; | |||||
| left: -50vw; | |||||
| top: -50vh; | |||||
| } | |||||
| } | |||||
| @media (min-resolution: 3dppx) { | |||||
| #canvas_wrapper { | |||||
| scale: calc(1/3); | |||||
| width: 300vw; | |||||
| height: 300vh; | |||||
| left: -100vw; | |||||
| top: -100vh; | |||||
| } | |||||
| } | |||||
| .emscripten { | .emscripten { | ||||
| display: block; | display: block; | ||||
| @@ -79,7 +102,6 @@ | |||||
| </div> | </div> | ||||
| <div id="canvas_wrapper"> | <div id="canvas_wrapper"> | ||||
| <input type="file" id="canvas_file_open" ></input> | <input type="file" id="canvas_file_open" ></input> | ||||
| <a href="#" id="canvas_file_save"></a> | |||||
| <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas> | <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas> | ||||
| </div> | </div> | ||||
| @@ -114,6 +114,7 @@ struct FileButton : MenuButton { | |||||
| patchUtils::loadTemplateDialog(); | patchUtils::loadTemplateDialog(); | ||||
| })); | })); | ||||
| #ifndef DISTRHO_OS_WASM | |||||
| menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() { | menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() { | ||||
| patchUtils::loadDialog(); | patchUtils::loadDialog(); | ||||
| })); | })); | ||||
| @@ -126,6 +127,23 @@ struct FileButton : MenuButton { | |||||
| menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() { | menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() { | ||||
| patchUtils::saveAsDialog(); | patchUtils::saveAsDialog(); | ||||
| })); | })); | ||||
| #else | |||||
| menu->addChild(createMenuItem("Import patch...", RACK_MOD_CTRL_NAME "+O", []() { | |||||
| patchUtils::loadDialog(); | |||||
| })); | |||||
| menu->addChild(createMenuItem("Import selection...", "", [=]() { | |||||
| patchUtils::loadSelectionDialog(); | |||||
| }, false, true)); | |||||
| menu->addChild(createMenuItem("Save and download compressed", RACK_MOD_CTRL_NAME "+Shift+S", []() { | |||||
| patchUtils::saveAsDialog(); | |||||
| })); | |||||
| menu->addChild(createMenuItem("Save and download uncompressed", "", []() { | |||||
| patchUtils::saveAsDialogUncompressed(); | |||||
| })); | |||||
| #endif | |||||
| menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() { | menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() { | ||||
| patchUtils::revertDialog(); | patchUtils::revertDialog(); | ||||
| @@ -151,16 +169,18 @@ struct FileButton : MenuButton { | |||||
| } | } | ||||
| #endif | #endif | ||||
| #ifndef DISTRHO_OS_WASM | |||||
| menu->addChild(new ui::MenuSeparator); | menu->addChild(new ui::MenuSeparator); | ||||
| // Load selection | // Load selection | ||||
| menu->addChild(createMenuItem("Import selection", "", [=]() { | |||||
| menu->addChild(createMenuItem("Import selection...", "", [=]() { | |||||
| patchUtils::loadSelectionDialog(); | patchUtils::loadSelectionDialog(); | ||||
| }, false, true)); | }, false, true)); | ||||
| menu->addChild(createMenuItem("Export uncompressed json...", "", []() { | menu->addChild(createMenuItem("Export uncompressed json...", "", []() { | ||||
| patchUtils::saveAsDialogUncompressed(); | patchUtils::saveAsDialogUncompressed(); | ||||
| })); | })); | ||||
| #endif | |||||
| if (!demoPatches.empty()) | if (!demoPatches.empty()) | ||||
| { | { | ||||
| @@ -182,13 +202,15 @@ struct FileButton : MenuButton { | |||||
| })); | })); | ||||
| } | } | ||||
| #ifndef DISTRHO_OS_WASM | |||||
| if (isStandalone) { | if (isStandalone) { | ||||
| menu->addChild(new ui::MenuSeparator); | menu->addChild(new ui::MenuSeparator); | ||||
| menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() { | menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() { | ||||
| APP->window->close(); | APP->window->close(); | ||||
| })); | })); | ||||
| }; | |||||
| } | |||||
| #endif | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -299,11 +299,13 @@ void Scene::onHoverKey(const HoverKeyEvent& e) { | |||||
| patchUtils::revertDialog(); | patchUtils::revertDialog(); | ||||
| e.consume(this); | e.consume(this); | ||||
| } | } | ||||
| #ifndef DISTRHO_OS_WASM | |||||
| if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) { | if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) { | ||||
| // NOTE: will do nothing if path is empty, intentionally | // NOTE: will do nothing if path is empty, intentionally | ||||
| patchUtils::saveDialog(APP->patch->path); | patchUtils::saveDialog(APP->patch->path); | ||||
| e.consume(this); | e.consume(this); | ||||
| } | } | ||||
| #endif | |||||
| if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) { | if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) { | ||||
| patchUtils::saveAsDialog(); | patchUtils::saveAsDialog(); | ||||
| e.consume(this); | e.consume(this); | ||||