Browse Source

fix Win7 mouse lock issue; support file drag'n'drop; sort fav modules by name

pull/1639/head
bsp2 6 years ago
parent
commit
dc870680ce
10 changed files with 223 additions and 574 deletions
  1. +1
    -1
      README.md
  2. BIN
      dep/dep.7z
  3. +43
    -18
      src/app/ModuleBrowser.cpp
  4. +1
    -1
      src/app/PluginManagerWidget.cpp
  5. +15
    -1
      src/vst2_main.cpp
  6. +37
    -433
      src/window.cpp
  7. +6
    -0
      vst2_bin/CHANGELOG_VST.txt
  8. +1
    -1
      vst2_bin/README_vst2.txt
  9. +118
    -118
      vst2_bin/log.txt
  10. +1
    -1
      vst2_bin/settings.json

+ 1
- 1
README.md View File

@@ -27,7 +27,7 @@ Tested in
# Downloads # Downloads
The current release can be found in the [vst2_bin/](vst2_bin/) folder. The current release can be found in the [vst2_bin/](vst2_bin/) folder.


Here's a snapshot of it: [veeseevstrack_0_6_1_win64_bin-06Aug2018.7z](dist/veeseevstrack_0_6_1_win64_bin-06Aug2018.7z) (64bit)
Here's a snapshot of it: [veeseevstrack_0_6_1_win64_bin-07Aug2018.7z](dist/veeseevstrack_0_6_1_win64_bin-07Aug2018.7z) (64bit)


Note: The effect plugin can used be as an instrument, too. You just have to send it MIDI events ! Note: The effect plugin can used be as an instrument, too. You just have to send it MIDI events !




BIN
dep/dep.7z View File


+ 43
- 18
src/app/ModuleBrowser.cpp View File

@@ -349,6 +349,7 @@ struct ModuleBrowser : OpaqueWidget {
} }


void refreshSearch() { void refreshSearch() {
printf("xxx ModuleBrowser::refreshSearch\n");
std::string search = searchField->text; std::string search = searchField->text;
moduleList->clearChildren(); moduleList->clearChildren();
moduleList->selected = 0; moduleList->selected = 0;
@@ -361,13 +362,31 @@ struct ModuleBrowser : OpaqueWidget {
item->setText("Favorites"); item->setText("Favorites");
moduleList->addChild(item); moduleList->addChild(item);
} }
for (Model *model : global_ui->module_browser.sFavoriteModels) {
if (isModelFiltered(model) && isModelMatch(model, search)) {
ModelItem *item = new ModelItem();
item->setModel(model);
moduleList->addChild(item);
}
}
{
std::vector<Model*> sortedModels;

for (Model *model : global_ui->module_browser.sFavoriteModels) {
if (isModelFiltered(model) && isModelMatch(model, search)) {
uint32_t i = 0u;
for(Model *sortedModel : sortedModels) {
if(model->name < sortedModel->name) {
sortedModels.insert(sortedModels.begin() + i, model);
break;
}
i++;
}
if(i == sortedModels.size()) {
sortedModels.push_back(model);
}
}
}

for(Model *model : sortedModels) {
ModelItem *item = new ModelItem();
item->setModel(model);
moduleList->addChild(item);
}
}
// Author items // Author items
{ {
SeparatorItem *item = new SeparatorItem(); SeparatorItem *item = new SeparatorItem();
@@ -497,32 +516,38 @@ void SearchModuleField::onTextChange() {


void SearchModuleField::onKey(EventKey &e) { void SearchModuleField::onKey(EventKey &e) {
switch (e.key) { switch (e.key) {
case LGLW_VKEY_ESCAPE/*GLFW_KEY_ESCAPE*/: {

case LGLW_VKEY_ESCAPE:
global_ui->ui.gScene->setOverlay(NULL); global_ui->ui.gScene->setOverlay(NULL);
e.consumed = true; e.consumed = true;
return; return;
} break;
case LGLW_VKEY_UP/*GLFW_KEY_UP*/: {
break;

case LGLW_VKEY_UP:
moduleBrowser->moduleList->incrementSelection(-1); moduleBrowser->moduleList->incrementSelection(-1);
moduleBrowser->moduleList->scrollSelected(); moduleBrowser->moduleList->scrollSelected();
e.consumed = true; e.consumed = true;
} break;
case LGLW_VKEY_DOWN/*GLFW_KEY_DOWN*/: {
break;

case LGLW_VKEY_DOWN:
moduleBrowser->moduleList->incrementSelection(1); moduleBrowser->moduleList->incrementSelection(1);
moduleBrowser->moduleList->scrollSelected(); moduleBrowser->moduleList->scrollSelected();
e.consumed = true; e.consumed = true;
} break;
case LGLW_VKEY_PAGEUP/*GLFW_KEY_PAGE_UP*/: {
break;

case LGLW_VKEY_PAGEUP:
moduleBrowser->moduleList->incrementSelection(-5); moduleBrowser->moduleList->incrementSelection(-5);
moduleBrowser->moduleList->scrollSelected(); moduleBrowser->moduleList->scrollSelected();
e.consumed = true; e.consumed = true;
} break;
case LGLW_VKEY_PAGEDOWN/*GLFW_KEY_PAGE_DOWN*/: {
break;

case LGLW_VKEY_PAGEDOWN:
moduleBrowser->moduleList->incrementSelection(5); moduleBrowser->moduleList->incrementSelection(5);
moduleBrowser->moduleList->scrollSelected(); moduleBrowser->moduleList->scrollSelected();
e.consumed = true; e.consumed = true;
} break;
case LGLW_VKEY_RETURN/*GLFW_KEY_ENTER*/: {
break;

case LGLW_VKEY_RETURN: {
BrowserListItem *item = moduleBrowser->moduleList->getSelectedItem(); BrowserListItem *item = moduleBrowser->moduleList->getSelectedItem();
if (item) { if (item) {
item->doAction(); item->doAction();


+ 1
- 1
src/app/PluginManagerWidget.cpp View File

@@ -64,7 +64,6 @@ struct SyncButton : Button {
t.detach(); t.detach();
checked = true; checked = true;
} }
#endif // USE_VST2
// Display message if we've completed updates // Display message if we've completed updates
if (completed) { if (completed) {
if (osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, "All plugins have been updated. Close Rack and re-launch it to load new updates.")) { if (osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, "All plugins have been updated. Close Rack and re-launch it to load new updates.")) {
@@ -72,6 +71,7 @@ struct SyncButton : Button {
} }
completed = false; completed = false;
} }
#endif // USE_VST2
} }
void draw(NVGcontext *vg) override { void draw(NVGcontext *vg) override {
Button::draw(vg); Button::draw(vg);


+ 15
- 1
src/vst2_main.cpp View File

@@ -724,6 +724,15 @@ public:
} }
} }


void queueRedraw(void) {
setGlobals();

if(lglw_window_is_visible(rack::global_ui->window.lglw))
{
lglw_redraw(rack::global_ui->window.lglw);
}
}

void redraw(void) { void redraw(void) {
setGlobals(); setGlobals();


@@ -1163,7 +1172,7 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin,
case effEditIdle: case effEditIdle:
if(0 == wrapper->redraw_ival_ms) if(0 == wrapper->redraw_ival_ms)
{ {
wrapper->redraw();
wrapper->queueRedraw();
} }
break; break;


@@ -1370,6 +1379,11 @@ void vst2_refresh_rate_set (float _hz) {
} }


extern "C" void lglw_timer_cbk(lglw_t _lglw) { extern "C" void lglw_timer_cbk(lglw_t _lglw) {
VSTPluginWrapper *wrapper = (VSTPluginWrapper*)lglw_userdata_get(_lglw);
wrapper->queueRedraw();
}

extern "C" void lglw_redraw_cbk(lglw_t _lglw) {
VSTPluginWrapper *wrapper = (VSTPluginWrapper*)lglw_userdata_get(_lglw); VSTPluginWrapper *wrapper = (VSTPluginWrapper*)lglw_userdata_get(_lglw);
wrapper->redraw(); wrapper->redraw();
} }


+ 37
- 433
src/window.cpp View File

@@ -36,268 +36,12 @@
#include "global_ui.hpp" #include "global_ui.hpp"


extern void vst2_set_globals (void *_wrapper); extern void vst2_set_globals (void *_wrapper);
extern "C" extern void lglw_timer_cbk (lglw_t _lglw);
extern "C" extern void lglw_timer_cbk (lglw_t _lglw); // implemented in vst2_main.cpp
extern "C" extern void lglw_redraw_cbk (lglw_t _lglw); // implemented in vst2_main.cpp


namespace rack { namespace rack {




// void windowSizeCallback(GLFWwindow* window, int width, int height) {
// }

// void mouseButtonCallback(GLFWwindow *window, int button, int action, int mods) {
// #ifdef ARCH_MAC
// // Ctrl-left click --> right click
// if (button == GLFW_MOUSE_BUTTON_LEFT) {
// if (glfwGetKey(global_ui->window.gWindow, GLFW_KEY_LEFT_CONTROL) == GLFW_PRESS || glfwGetKey(global_ui->window.gWindow, GLFW_KEY_RIGHT_CONTROL) == GLFW_PRESS) {
// button = GLFW_MOUSE_BUTTON_RIGHT;
// }
// }
// #endif

// if (action == GLFW_PRESS) {
// global_ui->widgets.gTempWidget = NULL;
// // onMouseDown
// {
// EventMouseDown e;
// e.pos = global_ui->window.gMousePos;
// e.button = button;
// global_ui->ui.gScene->onMouseDown(e);
// global_ui->widgets.gTempWidget = e.target;
// }

// if (button == GLFW_MOUSE_BUTTON_LEFT) {
// if (global_ui->widgets.gTempWidget) {
// // onDragStart
// EventDragStart e;
// global_ui->widgets.gTempWidget->onDragStart(e);
// }
// global_ui->widgets.gDraggedWidget = global_ui->widgets.gTempWidget;

// if (global_ui->widgets.gTempWidget != global_ui->widgets.gFocusedWidget) {
// if (global_ui->widgets.gFocusedWidget) {
// // onDefocus
// EventDefocus e;
// global_ui->widgets.gFocusedWidget->onDefocus(e);
// }
// global_ui->widgets.gFocusedWidget = NULL;
// if (global_ui->widgets.gTempWidget) {
// // onFocus
// EventFocus e;
// global_ui->widgets.gTempWidget->onFocus(e);
// if (e.consumed) {
// global_ui->widgets.gFocusedWidget = global_ui->widgets.gTempWidget;
// }
// }
// }
// }
// global_ui->widgets.gTempWidget = NULL;
// }
// else if (action == GLFW_RELEASE) {
// // onMouseUp
// global_ui->widgets.gTempWidget = NULL;
// {
// EventMouseUp e;
// e.pos = global_ui->window.gMousePos;
// e.button = button;
// global_ui->ui.gScene->onMouseUp(e);
// global_ui->widgets.gTempWidget = e.target;
// }

// if (button == GLFW_MOUSE_BUTTON_LEFT) {
// if (global_ui->widgets.gDraggedWidget) {
// // onDragDrop
// EventDragDrop e;
// e.origin = global_ui->widgets.gDraggedWidget;
// global_ui->widgets.gTempWidget->onDragDrop(e);
// }
// // gDraggedWidget might have been set to null in the last event, recheck here
// if (global_ui->widgets.gDraggedWidget) {
// // onDragEnd
// EventDragEnd e;
// global_ui->widgets.gDraggedWidget->onDragEnd(e);
// }
// global_ui->widgets.gDraggedWidget = NULL;
// global_ui->widgets.gDragHoveredWidget = NULL;
// }
// global_ui->widgets.gTempWidget = NULL;
// }
// }

// struct MouseButtonArguments {
// GLFWwindow *window;
// int button;
// int action;
// int mods;
// };

// static std::queue<MouseButtonArguments> mouseButtonQueue;
// void mouseButtonStickyPop() {
// if (!mouseButtonQueue.empty()) {
// MouseButtonArguments args = mouseButtonQueue.front();
// mouseButtonQueue.pop();
// mouseButtonCallback(args.window, args.button, args.action, args.mods);
// }
// }

// void mouseButtonStickyCallback(GLFWwindow *window, int button, int action, int mods) {
// // Defer multiple clicks per frame to future frames
// MouseButtonArguments args = {window, button, action, mods};
// mouseButtonQueue.push(args);
// }

// void cursorPosCallback(GLFWwindow* window, double xpos, double ypos) {
// Vec mousePos = Vec(xpos, ypos).div(global_ui->window.gPixelRatio / global_ui->window.gWindowRatio).round();
// Vec mouseRel = mousePos.minus(global_ui->window.gMousePos);

// int cursorMode = glfwGetInputMode(global_ui->window.gWindow, GLFW_CURSOR);
// (void) cursorMode;

// #ifdef ARCH_MAC
// // Workaround for Mac. We can't use GLFW_CURSOR_DISABLED because it's buggy, so implement it on our own.
// // This is not an ideal implementation. For example, if the user drags off the screen, the new mouse position will be clamped.
// if (cursorMode == GLFW_CURSOR_HIDDEN) {
// // CGSetLocalEventsSuppressionInterval(0.0);
// glfwSetCursorPos(global_ui->window.gWindow, global_ui->window.gMousePos.x, global_ui->window.gMousePos.y);
// CGAssociateMouseAndMouseCursorPosition(true);
// mousePos = global_ui->window.gMousePos;
// }
// // Because sometimes the cursor turns into an arrow when its position is on the boundary of the window
// glfwSetCursor(global_ui->window.gWindow, NULL);
// #endif

// global_ui->window.gMousePos = mousePos;

// global_ui->widgets.gTempWidget = NULL;
// // onMouseMove
// {
// EventMouseMove e;
// e.pos = mousePos;
// e.mouseRel = mouseRel;
// global_ui->ui.gScene->onMouseMove(e);
// global_ui->widgets.gTempWidget = e.target;
// }

// if (global_ui->widgets.gDraggedWidget) {
// // onDragMove
// EventDragMove e;
// e.mouseRel = mouseRel;
// global_ui->widgets.gDraggedWidget->onDragMove(e);

// if (global_ui->widgets.gTempWidget != global_ui->widgets.gDragHoveredWidget) {
// if (global_ui->widgets.gDragHoveredWidget) {
// EventDragEnter e;
// e.origin = global_ui->widgets.gDraggedWidget;
// global_ui->widgets.gDragHoveredWidget->onDragLeave(e);
// }
// global_ui->widgets.gDragHoveredWidget = global_ui->widgets.gTempWidget;
// if (global_ui->widgets.gDragHoveredWidget) {
// EventDragEnter e;
// e.origin = global_ui->widgets.gDraggedWidget;
// global_ui->widgets.gDragHoveredWidget->onDragEnter(e);
// }
// }
// }
// else {
// if (global_ui->widgets.gTempWidget != global_ui->widgets.gHoveredWidget) {
// if (global_ui->widgets.gHoveredWidget) {
// // onMouseLeave
// EventMouseLeave e;
// global_ui->widgets.gHoveredWidget->onMouseLeave(e);
// }
// global_ui->widgets.gHoveredWidget = global_ui->widgets.gTempWidget;
// if (global_ui->widgets.gHoveredWidget) {
// // onMouseEnter
// EventMouseEnter e;
// global_ui->widgets.gHoveredWidget->onMouseEnter(e);
// }
// }
// }
// global_ui->widgets.gTempWidget = NULL;
// if (glfwGetMouseButton(global_ui->window.gWindow, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS) {
// // TODO
// // Define a new global called gScrollWidget, which remembers the widget where middle-click was first pressed
// EventScroll e;
// e.pos = mousePos;
// e.scrollRel = mouseRel;
// global_ui->ui.gScene->onScroll(e);
// }
// }

// void cursorEnterCallback(GLFWwindow* window, int entered) {
// if (!entered) {
// if (global_ui->widgets.gHoveredWidget) {
// // onMouseLeave
// EventMouseLeave e;
// global_ui->widgets.gHoveredWidget->onMouseLeave(e);
// }
// global_ui->widgets.gHoveredWidget = NULL;
// }
// }

// void scrollCallback(GLFWwindow *window, double x, double y) {
// Vec scrollRel = Vec(x, y);
// #if ARCH_LIN || ARCH_WIN
// if (windowIsShiftPressed())
// scrollRel = Vec(y, x);
// #endif
// // onScroll
// EventScroll e;
// e.pos = global_ui->window.gMousePos;
// e.scrollRel = scrollRel.mult(50.0);
// global_ui->ui.gScene->onScroll(e);
// }

// // void charCallback(GLFWwindow *window, unsigned int codepoint) {
// // if (global_ui->widgets.gFocusedWidget) {
// // // onText
// // EventText e;
// // e.codepoint = codepoint;
// // global_ui->widgets.gFocusedWidget->onText(e);
// // }
// // }

// void keyCallback(GLFWwindow *window, int key, int scancode, int action, int mods) {
// if (action == GLFW_PRESS || action == GLFW_REPEAT) {
// if (global_ui->widgets.gFocusedWidget) {
// // onKey
// EventKey e;
// e.key = key;
// global_ui->widgets.gFocusedWidget->onKey(e);
// if (e.consumed)
// return;
// }
// // onHoverKey
// EventHoverKey e;
// e.pos = global_ui->window.gMousePos;
// e.key = key;
// global_ui->ui.gScene->onHoverKey(e);
// }

// // Keyboard MIDI driver
// if (!(mods & (GLFW_MOD_SHIFT | GLFW_MOD_CONTROL | GLFW_MOD_ALT | GLFW_MOD_SUPER))) {
// if (action == GLFW_PRESS) {
// keyboardPress(key);
// }
// else if (action == GLFW_RELEASE) {
// keyboardRelease(key);
// }
// }
// }

// // void dropCallback(GLFWwindow *window, int count, const char **paths) {
// // // onPathDrop
// // EventPathDrop e;
// // e.pos = global_ui->window.gMousePos;
// // for (int i = 0; i < count; i++) {
// // e.paths.push_back(paths[i]);
// // }
// // global_ui->ui.gScene->onPathDrop(e);
// // }

// // void errorCallback(int error, const char *description) {
// // warn("GLFW error %d: %s", error, description);
// // }

extern "C" { extern "C" {


static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _buttonState, uint32_t _changedButtonState) { static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _buttonState, uint32_t _changedButtonState) {
@@ -328,9 +72,6 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
Vec mousePos = Vec(_x, _y);//.div(global_ui->window.gPixelRatio / global_ui->window.gWindowRatio).round(); Vec mousePos = Vec(_x, _y);//.div(global_ui->window.gPixelRatio / global_ui->window.gWindowRatio).round();
Vec mouseRel = mousePos.minus(global_ui->window.gMousePos); Vec mouseRel = mousePos.minus(global_ui->window.gMousePos);


// int cursorMode = glfwGetInputMode(global_ui->window.gWindow, GLFW_CURSOR);
// (void) cursorMode;

// #ifdef ARCH_MAC // #ifdef ARCH_MAC
// // Workaround for Mac. We can't use GLFW_CURSOR_DISABLED because it's buggy, so implement it on our own. // // Workaround for Mac. We can't use GLFW_CURSOR_DISABLED because it's buggy, so implement it on our own.
// // This is not an ideal implementation. For example, if the user drags off the screen, the new mouse position will be clamped. // // This is not an ideal implementation. For example, if the user drags off the screen, the new mouse position will be clamped.
@@ -347,6 +88,7 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
global_ui->window.gMousePos = mousePos; global_ui->window.gMousePos = mousePos;


global_ui->widgets.gTempWidget = NULL; global_ui->widgets.gTempWidget = NULL;

// onMouseMove // onMouseMove
{ {
EventMouseMove e; EventMouseMove e;
@@ -392,7 +134,7 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
} }
} }
global_ui->widgets.gTempWidget = NULL; global_ui->widgets.gTempWidget = NULL;
// // if (glfwGetMouseButton(global_ui->window.gWindow, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS) {
if(0u != (_buttonState & LGLW_MOUSE_MBUTTON)) { if(0u != (_buttonState & LGLW_MOUSE_MBUTTON)) {
// TODO // TODO
// Define a new global called gScrollWidget, which remembers the widget where middle-click was first pressed // Define a new global called gScrollWidget, which remembers the widget where middle-click was first pressed
@@ -415,9 +157,9 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
// } // }
// #endif // #endif
int button = int button =
(0u != (_changedButtonState & LGLW_MOUSE_LBUTTON)) ? 0 :
(0u != (_changedButtonState & LGLW_MOUSE_RBUTTON)) ? 1 :
(0u != (_changedButtonState & LGLW_MOUSE_MBUTTON)) ? 2 :
(0u != (_changedButtonState & LGLW_MOUSE_LBUTTON)) ? RACK_MOUSE_BUTTON_LEFT/*0*/ :
(0u != (_changedButtonState & LGLW_MOUSE_RBUTTON)) ? RACK_MOUSE_BUTTON_RIGHT/*1*/ :
(0u != (_changedButtonState & LGLW_MOUSE_MBUTTON)) ? RACK_MOUSE_BUTTON_MIDDLE/*2*/ :
-1; -1;


bool bPressed = (0u != (_changedButtonState & _buttonState)); bool bPressed = (0u != (_changedButtonState & _buttonState));
@@ -433,7 +175,7 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
global_ui->widgets.gTempWidget = e.target; global_ui->widgets.gTempWidget = e.target;
} }


if (button == 0/*GLFW_MOUSE_BUTTON_LEFT*/) {
if (RACK_MOUSE_BUTTON_LEFT/*0*/ == button) {
if (global_ui->widgets.gTempWidget) { if (global_ui->widgets.gTempWidget) {
// onDragStart // onDragStart
EventDragStart e; EventDragStart e;
@@ -460,7 +202,7 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
} }
global_ui->widgets.gTempWidget = NULL; global_ui->widgets.gTempWidget = NULL;
} }
else { ///if (action == GLFW_RELEASE) {
else {
// onMouseUp // onMouseUp
global_ui->widgets.gTempWidget = NULL; global_ui->widgets.gTempWidget = NULL;
{ {
@@ -471,7 +213,7 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
global_ui->widgets.gTempWidget = e.target; global_ui->widgets.gTempWidget = e.target;
} }


if (button == 0/*GLFW_MOUSE_BUTTON_LEFT*/) {
if (RACK_MOUSE_BUTTON_LEFT/*0*/ == button) {
if (global_ui->widgets.gDraggedWidget) { if (global_ui->widgets.gDraggedWidget) {
// onDragDrop // onDragDrop
EventDragDrop e; EventDragDrop e;
@@ -489,7 +231,6 @@ static void lglw_mouse_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _butto
} }
global_ui->widgets.gTempWidget = NULL; global_ui->widgets.gTempWidget = NULL;
} }

} }


} }
@@ -518,7 +259,7 @@ static void lglw_focus_cbk(lglw_t _lglw, uint32_t _focusState, uint32_t _changed
} }


static void lglw_keyboard_cbk(lglw_t _lglw, uint32_t _vkey, uint32_t _kmod, lglw_bool_t _bPressed) { static void lglw_keyboard_cbk(lglw_t _lglw, uint32_t _vkey, uint32_t _kmod, lglw_bool_t _bPressed) {
printf("xxx lglw_keyboard_cbk: lglw=%p vkey=0x%08x (\'%c\') kmod=0x%08x bPressed=%d\n", _lglw, _vkey, (char)_vkey, _kmod, _bPressed);
// printf("xxx lglw_keyboard_cbk: lglw=%p vkey=0x%08x (\'%c\') kmod=0x%08x bPressed=%d\n", _lglw, _vkey, (char)_vkey, _kmod, _bPressed);


vst2_set_globals(lglw_userdata_get(_lglw)); vst2_set_globals(lglw_userdata_get(_lglw));


@@ -557,12 +298,21 @@ static void lglw_keyboard_cbk(lglw_t _lglw, uint32_t _vkey, uint32_t _kmod, lglw
} }
} }


void lglw_dropfiles_cbk(lglw_t _lglw, int32_t _x, int32_t _y, uint32_t _numFiles, const char **_pathNames) {
// onPathDrop
EventPathDrop e;
e.pos = Vec(_x, _y);
for(uint32_t i = 0u; i < _numFiles; i++) {
e.paths.push_back(_pathNames[i]);
}
global_ui->ui.gScene->onPathDrop(e);
}

} // extern C } // extern C


void renderGui() { void renderGui() {
int width, height; int width, height;
// printf("xxx renderGui: ENTER\n"); // printf("xxx renderGui: ENTER\n");
// glfwGetFramebufferSize(global_ui->window.gWindow, &width, &height);
lglw_window_size_get(global_ui->window.lglw, &width, &height); lglw_window_size_get(global_ui->window.lglw, &width, &height);


// Update and render // Update and render
@@ -578,7 +328,6 @@ void renderGui() {
glClearColor(0.0, 0.0, 0.0, 1.0); glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
nvgEndFrame(global_ui->window.gVg); nvgEndFrame(global_ui->window.gVg);
// // glfwSwapBuffers(global_ui->window.gWindow);
// printf("xxx renderGui: LEAVE\n"); // printf("xxx renderGui: LEAVE\n");
} }


@@ -592,45 +341,17 @@ void windowInit() {


lglw_userdata_set(global_ui->window.lglw, global->vst2.wrapper); lglw_userdata_set(global_ui->window.lglw, global->vst2.wrapper);


// #if defined NANOVG_GL2
// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
// #elif defined NANOVG_GL3
// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
// glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// #endif
// glfwWindowHint(GLFW_MAXIMIZED, GLFW_TRUE);
// glfwWindowHint(GLFW_DOUBLEBUFFER, GLFW_TRUE);
global_ui->window.lastWindowTitle = ""; global_ui->window.lastWindowTitle = "";
// global_ui->window.gWindow = glfwCreateWindow(640, 480, global_ui->window.lastWindowTitle.c_str(), NULL, NULL);
// if (!global_ui->window.gWindow) {
// osdialog_message(OSDIALOG_ERROR, OSDIALOG_OK, "Cannot open window with OpenGL 2.0 renderer. Does your graphics card support OpenGL 2.0 or greater? If so, make sure you have the latest graphics drivers installed.");
// exit(1);
// }

// // glfwMakeContextCurrent(global_ui->window.gWindow);
// // glfwSwapInterval(1);

lglw_glcontext_push(global_ui->window.lglw); lglw_glcontext_push(global_ui->window.lglw);
lglw_swap_interval(global_ui->window.lglw, 1); // can be overridden via settings.json:"vsync" property lglw_swap_interval(global_ui->window.lglw, 1); // can be overridden via settings.json:"vsync" property


// // glfwSetInputMode(global_ui->window.gWindow, GLFW_LOCK_KEY_MODS, 1);

// // glfwSetWindowSizeCallback(global_ui->window.gWindow, windowSizeCallback);
// // glfwSetMouseButtonCallback(global_ui->window.gWindow, mouseButtonStickyCallback);
lglw_mouse_callback_set(global_ui->window.lglw, &lglw_mouse_cbk);
lglw_focus_callback_set(global_ui->window.lglw, &lglw_focus_cbk);
lglw_keyboard_callback_set(global_ui->window.lglw, &lglw_keyboard_cbk);
lglw_timer_callback_set(global_ui->window.lglw, &lglw_timer_cbk);

// Call this ourselves, but on every frame instead of only when the mouse moves
// glfwSetCursorPosCallback(gWindow, cursorPosCallback);
// glfwSetCursorEnterCallback(global_ui->window.gWindow, cursorEnterCallback);
// glfwSetScrollCallback(global_ui->window.gWindow, scrollCallback);
// glfwSetCharCallback(global_ui->window.gWindow, charCallback);
// glfwSetKeyCallback(global_ui->window.gWindow, keyCallback);
// glfwSetDropCallback(global_ui->window.gWindow, dropCallback);
lglw_mouse_callback_set (global_ui->window.lglw, &lglw_mouse_cbk);
lglw_focus_callback_set (global_ui->window.lglw, &lglw_focus_cbk);
lglw_keyboard_callback_set (global_ui->window.lglw, &lglw_keyboard_cbk);
lglw_timer_callback_set (global_ui->window.lglw, &lglw_timer_cbk);
lglw_dropfiles_callback_set (global_ui->window.lglw, &lglw_dropfiles_cbk);
lglw_redraw_callback_set (global_ui->window.lglw, &lglw_redraw_cbk);


// Set up GLEW // Set up GLEW
glewExperimental = GL_TRUE; glewExperimental = GL_TRUE;
@@ -644,8 +365,6 @@ void windowInit() {
// GLEW generates GL error because it calls glGetString(GL_EXTENSIONS), we'll consume it here. // GLEW generates GL error because it calls glGetString(GL_EXTENSIONS), we'll consume it here.
glGetError(); glGetError();


// glfwSetWindowSizeLimits(global_ui->window.gWindow, 640, 480, GLFW_DONT_CARE, GLFW_DONT_CARE);

// Set up NanoVG // Set up NanoVG
int nvgFlags = NVG_ANTIALIAS; int nvgFlags = NVG_ANTIALIAS;
#if defined NANOVG_GL2 #if defined NANOVG_GL2
@@ -710,6 +429,7 @@ void vst2_editor_redraw(void) {


#if 0 #if 0
// Set window title // Set window title
// (note) the VST plugin editor window title is set by the VST host
std::string windowTitle; std::string windowTitle;
windowTitle = global_ui->app.gApplicationName; windowTitle = global_ui->app.gApplicationName;
windowTitle += " "; windowTitle += " ";
@@ -741,144 +461,39 @@ void vst2_editor_redraw(void) {
lglw_swap_buffers(global_ui->window.lglw); lglw_swap_buffers(global_ui->window.lglw);
} }


// #if 0
// void windowRun() {
// printf("xxx vcvrack: windowRun() ENTER\n");
// assert(global_ui->window.gWindow);
// global_ui->window.gGuiFrame = 0;
// while(!glfwWindowShouldClose(global_ui->window.gWindow)
// #ifdef USE_VST2
// && !global_ui->vst2.b_close_window
// #endif // USE_VST2
// ) {

// double startTime = glfwGetTime();
// global_ui->window.gGuiFrame++;
// // printf("xxx vcvrack: windowRun(): startTime=%g\n", startTime);

// // Poll events
// glfwPollEvents();
// {
// double xpos, ypos;
// glfwGetCursorPos(global_ui->window.gWindow, &xpos, &ypos);
// cursorPosCallback(global_ui->window.gWindow, xpos, ypos);
// }
// mouseButtonStickyPop();

// #ifndef USE_VST2
// gamepadStep();
// #endif // !USE_VST2

// // Set window title
// std::string windowTitle;
// windowTitle = global_ui->app.gApplicationName;
// windowTitle += " ";
// windowTitle += global_ui->app.gApplicationVersion;
// if (!global_ui->app.gRackWidget->lastPath.empty()) {
// windowTitle += " - ";
// windowTitle += stringFilename(global_ui->app.gRackWidget->lastPath);
// }
// if (windowTitle != global_ui->window.lastWindowTitle) {
// // // glfwSetWindowTitle(global_ui->window.gWindow, windowTitle.c_str());
// global_ui->window.lastWindowTitle = windowTitle;
// }

// // Get desired scaling
// // // float pixelRatio;
// // // glfwGetWindowContentScale(global_ui->window.gWindow, &pixelRatio, NULL);
// // // pixelRatio = roundf(pixelRatio);
// // // if (pixelRatio != global_ui->window.gPixelRatio) {
// // // EventZoom eZoom;
// // // global_ui->ui.gScene->onZoom(eZoom);
// // // global_ui->window.gPixelRatio = pixelRatio;
// // // }

// // Get framebuffer/window ratio
// int width, height;
// glfwGetFramebufferSize(global_ui->window.gWindow, &width, &height);
// int windowWidth, windowHeight;
// glfwGetWindowSize(global_ui->window.gWindow, &windowWidth, &windowHeight);
// global_ui->window.gWindowRatio = (float)width / windowWidth;

// global_ui->ui.gScene->box.size = Vec(width, height).div(global_ui->window.gPixelRatio);

// // Step scene
// global_ui->ui.gScene->step();

// // Render
// bool visible = glfwGetWindowAttrib(global_ui->window.gWindow, GLFW_VISIBLE) && !glfwGetWindowAttrib(global_ui->window.gWindow, GLFW_ICONIFIED);
// if (visible) {
// renderGui();
// }

// // Limit framerate manually if vsync isn't working
// double endTime = glfwGetTime();
// double frameTime = endTime - startTime;
// double minTime = 1.0 / 90.0;
// if (frameTime < minTime) {
// std::this_thread::sleep_for(std::chrono::duration<double>(minTime - frameTime));
// }
// endTime = glfwGetTime();
// // info("%lf fps", 1.0 / (endTime - startTime));
// }

// printf("xxx vcvrack: windowRun() LEAVE\n");
// }
// #endif

void windowClose() {
// // glfwSetWindowShouldClose(global_ui->window.gWindow, GLFW_TRUE);
}

void windowCursorLock() { void windowCursorLock() {
if (global_ui->window.gAllowCursorLock) { if (global_ui->window.gAllowCursorLock) {
// #ifdef ARCH_MAC
// glfwSetInputMode(global_ui->window.gWindow, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
// #else
// glfwSetInputMode(global_ui->window.gWindow, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
// #endif
lglw_mouse_grab(global_ui->window.lglw, LGLW_MOUSE_GRAB_WARP); lglw_mouse_grab(global_ui->window.lglw, LGLW_MOUSE_GRAB_WARP);
} }
} }


void windowCursorUnlock() { void windowCursorUnlock() {
if (global_ui->window.gAllowCursorLock) { if (global_ui->window.gAllowCursorLock) {
// glfwSetInputMode(global_ui->window.gWindow, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
lglw_mouse_ungrab(global_ui->window.lglw); lglw_mouse_ungrab(global_ui->window.lglw);
} }
} }


bool windowIsModPressed() { bool windowIsModPressed() {
// #ifdef ARCH_MAC
// return glfwGetKey(global_ui->window.gWindow, GLFW_KEY_LEFT_SUPER) == GLFW_PRESS || glfwGetKey(global_ui->window.gWindow, GLFW_KEY_RIGHT_SUPER) == GLFW_PRESS;
// #else
// return glfwGetKey(global_ui->window.gWindow, GLFW_KEY_LEFT_CONTROL) == GLFW_PRESS || glfwGetKey(global_ui->window.gWindow, GLFW_KEY_RIGHT_CONTROL) == GLFW_PRESS;
// #endif
return (0u != (lglw_keyboard_get_modifiers(global_ui->window.lglw) & (LGLW_KMOD_LCTRL | LGLW_KMOD_RCTRL))); return (0u != (lglw_keyboard_get_modifiers(global_ui->window.lglw) & (LGLW_KMOD_LCTRL | LGLW_KMOD_RCTRL)));
} }


bool windowIsShiftPressed() { bool windowIsShiftPressed() {
// return glfwGetKey(global_ui->window.gWindow, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS || glfwGetKey(global_ui->window.gWindow, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS;
return (0u != (lglw_keyboard_get_modifiers(global_ui->window.lglw) & (LGLW_KMOD_LSHIFT | LGLW_KMOD_RSHIFT))); return (0u != (lglw_keyboard_get_modifiers(global_ui->window.lglw) & (LGLW_KMOD_LSHIFT | LGLW_KMOD_RSHIFT)));
} }


Vec windowGetWindowSize() { Vec windowGetWindowSize() {
int width, height; int width, height;
lglw_window_size_get(global_ui->window.lglw, &width, &height); lglw_window_size_get(global_ui->window.lglw, &width, &height);
// glfwGetWindowSize(global_ui->window.gWindow, &width, &height);
return Vec(width, height); return Vec(width, height);
} }


void windowSetWindowSize(Vec size) { void windowSetWindowSize(Vec size) {
int width = size.x;
int height = size.y;
// glfwSetWindowSize(global_ui->window.gWindow, width, height);
(void)size;
// (note) not supported
} }


Vec windowGetWindowPos() { Vec windowGetWindowPos() {
int x, y; int x, y;
// glfwGetWindowPos(global_ui->window.gWindow, &x, &y);
x = 0; x = 0;
y = 0; y = 0;
return Vec(x, y); return Vec(x, y);
@@ -887,14 +502,10 @@ Vec windowGetWindowPos() {
void windowSetWindowPos(Vec pos) { void windowSetWindowPos(Vec pos) {
int x = pos.x; int x = pos.x;
int y = pos.y; int y = pos.y;
// glfwSetWindowPos(global_ui->window.gWindow, x, y);
// (note) not supported
} }


bool windowIsMaximized() { bool windowIsMaximized() {
// if(global_ui->window.gWindow)
// return glfwGetWindowAttrib(global_ui->window.gWindow, GLFW_MAXIMIZED);
// else
// return false;
return true; return true;
} }


@@ -945,24 +556,17 @@ void windowSetTheme(NVGcolor bg, NVGcolor fg) {
} }


void windowSetFullScreen(bool fullScreen) { void windowSetFullScreen(bool fullScreen) {
// if (windowGetFullScreen()) {
// glfwSetWindowMonitor(global_ui->window.gWindow, NULL, global_ui->window.windowX, global_ui->window.windowY, global_ui->window.windowWidth, global_ui->window.windowHeight, GLFW_DONT_CARE);
// }
// else {
// glfwGetWindowPos(global_ui->window.gWindow, &global_ui->window.windowX, &global_ui->window.windowY);
// glfwGetWindowSize(global_ui->window.gWindow, &global_ui->window.windowWidth, &global_ui->window.windowHeight);
// GLFWmonitor *monitor = glfwGetPrimaryMonitor();
// const GLFWvidmode* mode = glfwGetVideoMode(monitor);
// glfwSetWindowMonitor(global_ui->window.gWindow, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
// }
(void)fullScreen;
// (note) not supported
} }


bool windowGetFullScreen() { bool windowGetFullScreen() {
// GLFWmonitor *monitor = glfwGetWindowMonitor(global_ui->window.gWindow);
// return monitor != NULL;
return false; return false;
} }


void windowClose(void) {
// (note) not supported
}


//////////////////// ////////////////////
// resources // resources


+ 6
- 0
vst2_bin/CHANGELOG_VST.txt View File

@@ -1,3 +1,9 @@
** August 7th, 2018
- fix Windows 7 mouse lock issue (no redraw while mouse is locked)
- fix / re-add file drag'n'drop support
- modulebrowser: sort favorite modules by name


** August 6th, 2018 ** August 6th, 2018
- add settings.json "refreshRate" property - add settings.json "refreshRate" property
- <15: use VST host timer - <15: use VST host timer


+ 1
- 1
vst2_bin/README_vst2.txt View File

@@ -1,4 +1,4 @@
VeeSeeVST Rack VST 2.4 Plugin -- August 6th, 2018
VeeSeeVST Rack VST 2.4 Plugin -- August 7th, 2018
================================================= =================================================


!!!------------------------------------------------------------------------------ !!!------------------------------------------------------------------------------


+ 118
- 118
vst2_bin/log.txt View File

@@ -1,121 +1,121 @@
[0.000 info src/main.cpp:59] VeeSeeVST Rack 0.6.1 [0.000 info src/main.cpp:59] VeeSeeVST Rack 0.6.1
[0.000 info src/main.cpp:62] Global directory: f:\git\VeeSeeVSTRack\vst2_bin\/ [0.000 info src/main.cpp:62] Global directory: f:\git\VeeSeeVSTRack\vst2_bin\/
[0.000 info src/main.cpp:63] Local directory: f:\git\VeeSeeVSTRack\vst2_bin\/ [0.000 info src/main.cpp:63] Local directory: f:\git\VeeSeeVSTRack\vst2_bin\/
[0.000 info src/plugin.cpp:673] vcvrack: Loaded static plugin Alikins 0.6.1
[0.000 info src/plugin.cpp:673] vcvrack: Loaded static plugin AS 0.6.1
[0.000 info src/plugin.cpp:673] vcvrack: Loaded static plugin AudibleInstruments 0.6.1
[0.001 info src/plugin.cpp:673] vcvrack: Loaded static plugin BaconMusic 0.6.1
[0.001 info src/plugin.cpp:673] vcvrack: Loaded static plugin Befaco 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin Bidoo 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin Bogaudio 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin cf 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin DHE-Modules 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin DrumKit 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin ErraticInstruments 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin ESeries 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin FrozenWasteland 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin Fundamental 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin Gratrix 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin HetrickCV 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin huaba 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin JW-Modules 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin Koralfx-Modules 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin LindenbergResearch 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin LOGinstruments 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin ML_modules 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin moDllz 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin modular80 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin mscHack 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin mtsch-plugins 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin NauModular 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin Ohmer 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin Qwelk 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin RJModules 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin SerialRacker 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin SonusModular 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin Southpole-parasites 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin squinkylabs-plug1 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin SubmarineFree 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin Template 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin trowaSoft 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin unless_modules 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin Valley 0.6.1
[0.006 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Alikins/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AS/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AudibleInstruments/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BaconMusic/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Befaco/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bidoo/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bogaudio/plugin.dll does not exist
[0.007 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BOKONTEPByteBeatMachine/plugin.dll does not exist
[0.008 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/cf/plugin.dll does not exist
[0.008 info src/plugin.cpp:155] Loaded plugin dBiz 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/dBiz/plugin.dll
[0.008 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DHE-Modules/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DrumKit/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ErraticInstruments/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ESeries/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/FrozenWasteland/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Fundamental/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Gratrix/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/HetrickCV/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/huaba/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/JW-Modules/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Koralfx-Modules/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LindenbergResearch/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LOGinstruments/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ML_modules/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/moDllz/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/modular80/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mscHack/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mtsch-plugins/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/NauModular/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Ohmer/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Qwelk/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/RJModules/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SerialRacker/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SonusModular/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Southpole-parasites/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/squinkylabs-plug1/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SubmarineFree/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template/plugin.dll does not exist
[0.013 info src/plugin.cpp:155] Loaded plugin Template_shared 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template_shared/plugin.dll
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/trowaSoft/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/unless_modules/plugin.dll does not exist
[0.014 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Valley/plugin.dll does not exist
[0.014 info src/settings.cpp:211] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.030 info src/window.cpp:975] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/DejaVuSans.ttf
[0.031 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_146097_cc.svg
[0.031 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_31859_cc.svg
[0.032 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343816_cc.svg
[0.032 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343811_cc.svg
[0.032 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1084369_cc.svg
[0.032 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1745061_cc.svg
[0.033 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1240789_cc.svg
[0.033 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_305536_cc.svg
[0.033 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_468341_cc.svg
[0.033 info src/settings.cpp:211] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.037 info src/app/RackWidget.cpp:196] Loading patch from string
[0.039 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/AudioInterface.svg
[0.039 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/ScrewSilver.svg
[0.040 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/PJ301M.svg
[0.040 info src/window.cpp:975] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/ShareTechMono-Regular.ttf
[0.042 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/MIDIToCVInterface.svg
[0.046 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/XCO.svg
[0.046 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_68px.svg
[0.046 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_16px.svg
[0.047 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_0.svg
[0.047 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_1.svg
[0.047 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_38px.svg
[0.048 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_0.svg
[0.048 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_1.svg
[0.048 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/port.svg
[0.050 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCA.svg
[0.050 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundLargeBlackKnob.svg
[0.052 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCF.svg
[0.052 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundHugeBlackKnob.svg
[0.054 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/ADSR.svg
[0.054 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-hexscrew.svg
[0.055 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePot.svg
[0.055 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePotHandle.svg
[0.056 info src/window.cpp:1030] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-PJ301M.svg
[7.922 info src/app/RackWidget.cpp:158] Saving patch to string
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin Alikins 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin AS 0.6.1
[0.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin AudibleInstruments 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin BaconMusic 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin Befaco 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin Bidoo 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin Bogaudio 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin cf 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin DHE-Modules 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin DrumKit 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin ErraticInstruments 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin ESeries 0.6.1
[0.008 info src/plugin.cpp:673] vcvrack: Loaded static plugin FrozenWasteland 0.6.1
[0.008 info src/plugin.cpp:673] vcvrack: Loaded static plugin Fundamental 0.6.1
[0.009 info src/plugin.cpp:673] vcvrack: Loaded static plugin Gratrix 0.6.1
[0.010 info src/plugin.cpp:673] vcvrack: Loaded static plugin HetrickCV 0.6.1
[0.010 info src/plugin.cpp:673] vcvrack: Loaded static plugin huaba 0.6.1
[0.011 info src/plugin.cpp:673] vcvrack: Loaded static plugin JW-Modules 0.6.1
[0.011 info src/plugin.cpp:673] vcvrack: Loaded static plugin Koralfx-Modules 0.6.1
[0.012 info src/plugin.cpp:673] vcvrack: Loaded static plugin LindenbergResearch 0.6.1
[0.012 info src/plugin.cpp:673] vcvrack: Loaded static plugin LOGinstruments 0.6.1
[0.013 info src/plugin.cpp:673] vcvrack: Loaded static plugin ML_modules 0.6.1
[0.013 info src/plugin.cpp:673] vcvrack: Loaded static plugin moDllz 0.6.1
[0.014 info src/plugin.cpp:673] vcvrack: Loaded static plugin modular80 0.6.1
[0.014 info src/plugin.cpp:673] vcvrack: Loaded static plugin mscHack 0.6.1
[0.015 info src/plugin.cpp:673] vcvrack: Loaded static plugin mtsch-plugins 0.6.1
[0.015 info src/plugin.cpp:673] vcvrack: Loaded static plugin NauModular 0.6.1
[0.016 info src/plugin.cpp:673] vcvrack: Loaded static plugin Ohmer 0.6.1
[0.016 info src/plugin.cpp:673] vcvrack: Loaded static plugin Qwelk 0.6.1
[0.017 info src/plugin.cpp:673] vcvrack: Loaded static plugin RJModules 0.6.1
[0.017 info src/plugin.cpp:673] vcvrack: Loaded static plugin SerialRacker 0.6.1
[0.018 info src/plugin.cpp:673] vcvrack: Loaded static plugin SonusModular 0.6.1
[0.018 info src/plugin.cpp:673] vcvrack: Loaded static plugin Southpole-parasites 0.6.1
[0.019 info src/plugin.cpp:673] vcvrack: Loaded static plugin squinkylabs-plug1 0.6.1
[0.019 info src/plugin.cpp:673] vcvrack: Loaded static plugin SubmarineFree 0.6.1
[0.020 info src/plugin.cpp:673] vcvrack: Loaded static plugin Template 0.6.1
[0.020 info src/plugin.cpp:673] vcvrack: Loaded static plugin trowaSoft 0.6.1
[0.021 info src/plugin.cpp:673] vcvrack: Loaded static plugin unless_modules 0.6.1
[0.021 info src/plugin.cpp:673] vcvrack: Loaded static plugin Valley 0.6.1
[0.022 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Alikins/plugin.dll does not exist
[0.022 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AS/plugin.dll does not exist
[0.023 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AudibleInstruments/plugin.dll does not exist
[0.023 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BaconMusic/plugin.dll does not exist
[0.024 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Befaco/plugin.dll does not exist
[0.024 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bidoo/plugin.dll does not exist
[0.025 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bogaudio/plugin.dll does not exist
[0.025 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BOKONTEPByteBeatMachine/plugin.dll does not exist
[0.026 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/cf/plugin.dll does not exist
[0.027 info src/plugin.cpp:155] Loaded plugin dBiz 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/dBiz/plugin.dll
[0.027 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DHE-Modules/plugin.dll does not exist
[0.027 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DrumKit/plugin.dll does not exist
[0.028 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ErraticInstruments/plugin.dll does not exist
[0.029 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ESeries/plugin.dll does not exist
[0.029 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/FrozenWasteland/plugin.dll does not exist
[0.030 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Fundamental/plugin.dll does not exist
[0.030 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Gratrix/plugin.dll does not exist
[0.031 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/HetrickCV/plugin.dll does not exist
[0.031 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/huaba/plugin.dll does not exist
[0.032 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/JW-Modules/plugin.dll does not exist
[0.032 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Koralfx-Modules/plugin.dll does not exist
[0.033 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LindenbergResearch/plugin.dll does not exist
[0.033 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LOGinstruments/plugin.dll does not exist
[0.034 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ML_modules/plugin.dll does not exist
[0.034 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/moDllz/plugin.dll does not exist
[0.035 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/modular80/plugin.dll does not exist
[0.035 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mscHack/plugin.dll does not exist
[0.036 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mtsch-plugins/plugin.dll does not exist
[0.036 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/NauModular/plugin.dll does not exist
[0.037 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Ohmer/plugin.dll does not exist
[0.037 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Qwelk/plugin.dll does not exist
[0.038 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/RJModules/plugin.dll does not exist
[0.038 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SerialRacker/plugin.dll does not exist
[0.039 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SonusModular/plugin.dll does not exist
[0.039 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Southpole-parasites/plugin.dll does not exist
[0.040 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/squinkylabs-plug1/plugin.dll does not exist
[0.040 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SubmarineFree/plugin.dll does not exist
[0.041 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template/plugin.dll does not exist
[0.042 info src/plugin.cpp:155] Loaded plugin Template_shared 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template_shared/plugin.dll
[0.043 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/trowaSoft/plugin.dll does not exist
[0.043 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/unless_modules/plugin.dll does not exist
[0.044 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Valley/plugin.dll does not exist
[0.044 info src/settings.cpp:211] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.062 info src/window.cpp:579] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/DejaVuSans.ttf
[0.063 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_146097_cc.svg
[0.064 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_31859_cc.svg
[0.065 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343816_cc.svg
[0.066 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343811_cc.svg
[0.067 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1084369_cc.svg
[0.068 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1745061_cc.svg
[0.069 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1240789_cc.svg
[0.070 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_305536_cc.svg
[0.071 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_468341_cc.svg
[0.071 info src/settings.cpp:211] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.085 info src/app/RackWidget.cpp:196] Loading patch from string
[0.090 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/AudioInterface.svg
[0.091 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/ScrewSilver.svg
[0.092 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/PJ301M.svg
[0.093 info src/window.cpp:579] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/ShareTechMono-Regular.ttf
[0.098 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/MIDIToCVInterface.svg
[0.105 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/XCO.svg
[0.106 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_68px.svg
[0.106 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_16px.svg
[0.107 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_0.svg
[0.108 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_1.svg
[0.109 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_38px.svg
[0.110 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_0.svg
[0.111 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_1.svg
[0.112 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/port.svg
[0.117 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCA.svg
[0.119 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundLargeBlackKnob.svg
[0.124 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCF.svg
[0.125 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundHugeBlackKnob.svg
[0.131 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/ADSR.svg
[0.131 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-hexscrew.svg
[0.132 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePot.svg
[0.133 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePotHandle.svg
[0.134 info src/window.cpp:634] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-PJ301M.svg
[18.319 info src/app/RackWidget.cpp:158] Saving patch to string

+ 1
- 1
vst2_bin/settings.json View File

@@ -11,7 +11,7 @@
"wireOpacity": 50.0, "wireOpacity": 50.0,
"wireTension": 0.97, "wireTension": 0.97,
"zoom": 1.0, "zoom": 1.0,
"refreshRate": 0,
"refreshRate": 30,
"vsync": true, "vsync": true,
"allowCursorLock": true, "allowCursorLock": true,
"sampleRate": 44100.0, "sampleRate": 44100.0,


Loading…
Cancel
Save