Browse Source

add oversampled I/O channel limit

pull/1639/head
bsp2 6 years ago
parent
commit
4d74da5639
8 changed files with 310 additions and 142 deletions
  1. +1
    -0
      README.md
  2. +41
    -0
      src/app/RackWidget.cpp
  3. +49
    -4
      src/app/Toolbar.cpp
  4. +24
    -0
      src/settings.cpp
  5. +76
    -23
      src/vst2_main.cpp
  6. +2
    -0
      vst2_bin/CHANGELOG_VST.txt
  7. +115
    -115
      vst2_bin/log.txt
  8. +2
    -0
      vst2_bin/settings.json

+ 1
- 0
README.md View File

@@ -13,6 +13,7 @@
- the plugin.dll files are _not_ binary compatible with the VCV Rack plugins !
- there's a [plugin SDK](#dynamically-loaded-plugins-via-plugin-sdk) (for Microsoft Visual Studio 2017 Community Edition) which can be used to build new plugins without checking out this entire GIT repository
+ supports internal oversampling (up to 16x with configurable quality)
- the number of oversampled I/O channels can be limited to save CPU time

Tested in
- Eureka (my own work-in-progress VST host)


+ 41
- 0
src/app/RackWidget.cpp View File

@@ -18,6 +18,8 @@ extern void vst2_set_shared_plugin_tls_globals(void);
#ifdef RACK_HOST
extern void vst2_oversample_set (int _factor, int _quality);
extern void vst2_oversample_get (int *_factor, int *_quality);
extern void vst2_oversample_channels_set (int _numIn, int _numOut);
extern void vst2_oversample_channels_get (int *_numIn, int *_numOut);
#endif // RACK_HOST

#endif // USE_VST2
@@ -276,6 +278,23 @@ json_t *RackWidget::toJson() {
json_object_set_new(rootJ, "oversampleQuality", oversampleJ);
}
}
{
int oversampleNumIn;
int oversampleNumOut;
vst2_oversample_channels_get(&oversampleNumIn, &oversampleNumOut);
// Oversample input channel limit
{
json_t *oversampleJ = json_real(oversampleNumIn);
json_object_set_new(rootJ, "oversampleNumIn", oversampleJ);
}

// Oversample output channel limit
{
json_t *oversampleJ = json_real(oversampleNumOut);
json_object_set_new(rootJ, "oversampleNumOut", oversampleJ);
}
}
#endif // RACK_HOST
#endif // USE_VST2

@@ -373,6 +392,28 @@ void RackWidget::fromJson(json_t *rootJ) {
}

vst2_oversample_set(oversampleFactor, oversampleQuality);

// Oversample channel limit
int oversampleNumIn = -1;
int oversampleNumOut = -1;

// Oversample input channel limit
{
json_t *oversampleJ = json_object_get(rootJ, "oversampleNumIn");
if (oversampleJ) {
oversampleNumIn = int(json_number_value(oversampleJ));
}
}

// Oversample output channel limit
{
json_t *oversampleJ = json_object_get(rootJ, "oversampleNumOut");
if (oversampleJ) {
oversampleNumOut = int(json_number_value(oversampleJ));
}
}

vst2_oversample_channels_set(oversampleNumIn, oversampleNumOut);
#endif // RACK_HOST

// modules


+ 49
- 4
src/app/Toolbar.cpp View File

@@ -9,6 +9,8 @@
#ifdef RACK_HOST
extern void vst2_oversample_set (int _factor, int _quality);
extern void vst2_oversample_get (int *_factor, int *_quality);
extern void vst2_oversample_channels_set (int _numIn, int _numOut);
extern void vst2_oversample_channels_get (int *_numIn, int *_numOut);
#endif // RACK_HOST

namespace rack {
@@ -158,6 +160,33 @@ struct OversampleItem : MenuItem {
global->gPaused = false;
}
};

struct OversampleChannelSetting {
const char *name;
int num_in;
int num_out;
};

static OversampleChannelSetting oversample_channel_settings[] = {
/* 0 */ { "Oversample: 0 in, 1 out", 0, 1 },
/* 1 */ { "Oversample: 0 in, 2 out", 0, 2 },
/* 2 */ { "Oversample: 0 in, 4 out", 0, 4 },
/* 3 */ { "Oversample: 0 in, 8 out", 8, 8 },
/* 4 */ { "Oversample: 2 in, 2 out", 2, 2 },
/* 5 */ { "Oversample: 2 in, 4 out", 2, 4 },
/* 6 */ { "Oversample: 4 in, 8 out", 4, 8 },
/* 7 */ { "Oversample: 8 in, 8 out", 8, 8 },
};
#define NUM_OVERSAMPLE_CHANNEL_SETTINGS (sizeof(oversample_channel_settings) / sizeof(OversampleChannelSetting))

struct OversampleChannelItem : MenuItem {
const OversampleChannelSetting *setting;

void onAction(EventAction &e) override {
vst2_oversample_channels_set(setting->num_in, setting->num_out);
global->gPaused = false;
}
};
#endif // RACK_HOST


@@ -185,12 +214,28 @@ struct SampleRateButton : TooltipIconButton {

for(unsigned int overIdx = 0u; overIdx < NUM_OVERSAMPLE_SETTINGS; overIdx++)
{
const OversampleSetting *overSetting = &oversample_settings[overIdx];
const OversampleSetting *setting = &oversample_settings[overIdx];

OversampleItem *item = new OversampleItem();
item->text = overSetting->name;
item->rightText = CHECKMARK( (overSetting->factor == factor) && (overSetting->quality == quality) );
item->setting = overSetting;
item->text = setting->name;
item->rightText = CHECKMARK( (setting->factor == factor) && (setting->quality == quality) );
item->setting = setting;
menu->addChild(item);
}
}
{
int numIn;
int numOut;
vst2_oversample_channels_get(&numIn, &numOut);

for(unsigned int overIdx = 0u; overIdx < NUM_OVERSAMPLE_CHANNEL_SETTINGS; overIdx++)
{
const OversampleChannelSetting *setting = &oversample_channel_settings[overIdx];

OversampleChannelItem *item = new OversampleChannelItem();
item->text = setting->name;
item->rightText = CHECKMARK( (setting->num_in == numIn) && (setting->num_out == numOut) );
item->setting = setting;
menu->addChild(item);
}
}


+ 24
- 0
src/settings.cpp View File

@@ -14,6 +14,7 @@ extern void vst2_refresh_rate_set (float _hz);

#ifdef RACK_HOST
extern void vst2_oversample_set (int _factor, int _quality);
extern void vst2_oversample_channels_set (int _numIn, int _numOut);
#endif // RACK_HOST

namespace rack {
@@ -195,6 +196,7 @@ static void settingsFromJson(json_t *rootJ, bool bWindowSizeOnly) {
#endif // USE_VST2

#ifdef RACK_HOST
// Oversample factor and quality
int oversampleFactor = -1;
int oversampleQuality = -1;

@@ -215,6 +217,28 @@ static void settingsFromJson(json_t *rootJ, bool bWindowSizeOnly) {
}

vst2_oversample_set(oversampleFactor, oversampleQuality);

// Oversample channel limit
int oversampleNumIn = -1;
int oversampleNumOut = -1;

// Oversample input channel limit
{
json_t *oversampleJ = json_object_get(rootJ, "oversampleNumIn");
if (oversampleJ) {
oversampleNumIn = int(json_number_value(oversampleJ));
}
}

// Oversample output channel limit
{
json_t *oversampleJ = json_object_get(rootJ, "oversampleNumOut");
if (oversampleJ) {
oversampleNumOut = int(json_number_value(oversampleJ));
}
}

vst2_oversample_channels_set(oversampleNumIn, oversampleNumOut);
#endif // RACK_HOST

// lastPath


+ 76
- 23
src/vst2_main.cpp View File

@@ -405,6 +405,8 @@ public:
struct {
sSI factor; // 1=no SR conversion, 2=oversample x2, 4=oversample x4, ..
int quality; // SPEEX_RESAMPLER_QUALITY_xxx
sUI num_in; // hack that limits oversampling to "n" input channels. default = NUM_INPUTS
sUI num_out; // hack that limits oversampling to "n" input channels. default = NUM_OUTPUTS
SpeexResamplerState *srs_in;
SpeexResamplerState *srs_out;
sF32 in_buffers[NUM_INPUTS * MAX_BLOCK_SIZE * MAX_OVERSAMPLE_FACTOR];
@@ -652,6 +654,29 @@ public:
setSampleRate(sample_rate);
}

void setOversampleChannels(int _numIn, int _numOut) {
if(_numIn < 0)
_numIn = int(oversample.num_in); // keep

if(_numOut < 0)
_numOut = int(oversample.num_out); // keep

if(_numIn < 0)
_numIn = 0;
else if(_numIn > NUM_INPUTS)
_numIn = NUM_INPUTS;

if(_numOut < 1)
_numOut = 1;
else if(_numOut > NUM_OUTPUTS)
_numOut = NUM_OUTPUTS;

lockAudio();
oversample.num_in = sUI(_numIn);
oversample.num_out = sUI(_numOut);
unlockAudio();
}

bool setSampleRate(float _rate) {
bool r = false;

@@ -907,15 +932,23 @@ void VSTPluginProcessReplacingFloat32(VSTPlugin *vstPlugin,

for(chIdx = 0u; chIdx < NUM_INPUTS; chIdx++)
{
sF32 *s = _inputs[chIdx];

int err = speex_resampler_process_float(wrapper->oversample.srs_in,
chIdx,
s,
&inNumFrames,
d,
&outNumFrames
);
if(chIdx < wrapper->oversample.num_in)
{
sF32 *s = _inputs[chIdx];

int err = speex_resampler_process_float(wrapper->oversample.srs_in,
chIdx,
s,
&inNumFrames,
d,
&outNumFrames
);
}
else
{
// Skip channel
::memset(d, 0, sizeof(sF32) * outNumFrames);
}

inputs[chIdx] = d;

@@ -928,7 +961,7 @@ void VSTPluginProcessReplacingFloat32(VSTPlugin *vstPlugin,
// (note) AudioInterface instances accumulate samples in the output buffer
{
sF32 *d = wrapper->oversample.out_buffers;
::memset((void*)d, 0, (sizeof(sF32) * NUM_OUTPUTS * overNumFrames));
::memset((void*)d, 0, (sizeof(sF32) * wrapper->oversample.num_out * overNumFrames));

for(chIdx = 0u; chIdx < NUM_OUTPUTS; chIdx++)
{
@@ -950,20 +983,28 @@ void VSTPluginProcessReplacingFloat32(VSTPlugin *vstPlugin,
sUI inNumFrames = overNumFrames;
sUI outNumFrames = hostNumFrames;

for(chIdx = 0u; chIdx < NUM_INPUTS; chIdx++)
for(chIdx = 0u; chIdx < NUM_OUTPUTS; chIdx++)
{
sF32 *d = _outputs[chIdx];

int err = speex_resampler_process_float(wrapper->oversample.srs_out,
chIdx,
s,
&inNumFrames,
d,
&outNumFrames
);

// Next output channel
s += inNumFrames;
if(chIdx < wrapper->oversample.num_out)
{
int err = speex_resampler_process_float(wrapper->oversample.srs_out,
chIdx,
s,
&inNumFrames,
d,
&outNumFrames
);

// Next output channel
s += inNumFrames;
}
else
{
// Skip output
::memset((void*)d, 0, sizeof(sF32) * outNumFrames);
}
}
}
}
@@ -1535,10 +1576,13 @@ VSTPluginWrapper::VSTPluginWrapper(audioMasterCallback vstHostCallback,
// report latency
_vstPlugin.initialDelay = 0;

oversample.factor = 1;
oversample.factor = 1;
oversample.quality = SPEEX_RESAMPLER_QUALITY_DEFAULT;
oversample.srs_in = NULL;
oversample.srs_in = NULL;
oversample.srs_out = NULL;
oversample.num_in = NUM_INPUTS;
oversample.num_out = NUM_OUTPUTS;

sample_rate = 44100.0f;
block_size = 64u;
b_processing = true;
@@ -1621,6 +1665,15 @@ void vst2_oversample_get(int *_factor, int *_quality) {
*_quality = int(rack::global->vst2.wrapper->oversample.quality);
}

void vst2_oversample_channels_set(int _numIn, int _numOut) {
rack::global->vst2.wrapper->setOversampleChannels(_numIn, _numOut);
}

void vst2_oversample_channels_get(int *_numIn, int *_numOut) {
*_numIn = int(rack::global->vst2.wrapper->oversample.num_in);
*_numOut = int(rack::global->vst2.wrapper->oversample.num_out);
}


/**
* Implementation of the main entry point of the plugin


+ 2
- 0
vst2_bin/CHANGELOG_VST.txt View File

@@ -1,6 +1,8 @@
** August 11th, 2018
- add settings.json:"oversampleFactor" option (1..16)
- add settings.json:"oversampleQuality" option (0..10)
- add settings.json:"oversampleNumIn" option (0..8)
- add settings.json:"oversampleNumOut" option (1..8)
- oversample settings are also saved / restored with the patch
- oversample settings can be configured via toolbar button menu



+ 115
- 115
vst2_bin/log.txt View File

@@ -3,122 +3,122 @@
[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.001 info src/plugin.cpp:673] vcvrack: Loaded static plugin AudibleInstruments 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.002 info src/plugin.cpp:673] vcvrack: Loaded static plugin Befaco 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.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin cf 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin DHE-Modules 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin DrumKit 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin ErraticInstruments 0.6.1
[0.003 info src/plugin.cpp:673] vcvrack: Loaded static plugin ESeries 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.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin Fundamental 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin Gratrix 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin HetrickCV 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin huaba 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin JW-Modules 0.6.1
[0.004 info src/plugin.cpp:673] vcvrack: Loaded static plugin Koralfx-Modules 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin LindenbergResearch 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin LOGinstruments 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin ML_modules 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin moDllz 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin modular80 0.6.1
[0.005 info src/plugin.cpp:673] vcvrack: Loaded static plugin mscHack 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin mtsch-plugins 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin NauModular 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin Ohmer 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin Qwelk 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin RJModules 0.6.1
[0.006 info src/plugin.cpp:673] vcvrack: Loaded static plugin SerialRacker 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin SonusModular 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin Southpole-parasites 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin squinkylabs-plug1 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin SubmarineFree 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin Template 0.6.1
[0.007 info src/plugin.cpp:673] vcvrack: Loaded static plugin trowaSoft 0.6.1
[0.008 info src/plugin.cpp:673] vcvrack: Loaded static plugin unless_modules 0.6.1
[0.008 info src/plugin.cpp:673] vcvrack: Loaded static plugin Valley 0.6.1
[0.008 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Alikins/plugin.dll does not exist
[0.008 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AS/plugin.dll does not exist
[0.008 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/AudibleInstruments/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BaconMusic/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Befaco/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bidoo/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Bogaudio/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/BOKONTEPByteBeatMachine/plugin.dll does not exist
[0.009 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/cf/plugin.dll does not exist
[0.010 info src/plugin.cpp:155] Loaded plugin dBiz 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/dBiz/plugin.dll
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DHE-Modules/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/DrumKit/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ErraticInstruments/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ESeries/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/FrozenWasteland/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Fundamental/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Gratrix/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/HetrickCV/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/huaba/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/JW-Modules/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Koralfx-Modules/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LindenbergResearch/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/LOGinstruments/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/ML_modules/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/moDllz/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/modular80/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mscHack/plugin.dll does not exist
[0.012 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/mtsch-plugins/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/NauModular/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Ohmer/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Qwelk/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/RJModules/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SerialRacker/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SonusModular/plugin.dll does not exist
[0.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Southpole-parasites/plugin.dll does not exist
[0.014 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/squinkylabs-plug1/plugin.dll does not exist
[0.014 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SubmarineFree/plugin.dll does not exist
[0.014 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template/plugin.dll does not exist
[0.015 info src/plugin.cpp:155] Loaded plugin Template_shared 0.6.1 from f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Template_shared/plugin.dll
[0.015 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/trowaSoft/plugin.dll does not exist
[0.015 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/unless_modules/plugin.dll does not exist
[0.015 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Valley/plugin.dll does not exist
[0.015 info src/settings.cpp:262] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.033 info src/window.cpp:599] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/DejaVuSans.ttf
[0.033 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_146097_cc.svg
[0.033 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_31859_cc.svg
[0.034 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343816_cc.svg
[0.034 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343811_cc.svg
[0.034 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1084369_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1745061_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1240789_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_305536_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_468341_cc.svg
[0.035 info src/settings.cpp:262] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.038 info src/app/RackWidget.cpp:203] Loading patch from string
[0.039 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/AudioInterface.svg
[0.040 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/ScrewSilver.svg
[0.040 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/PJ301M.svg
[0.040 info src/window.cpp:599] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/ShareTechMono-Regular.ttf
[0.042 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/MIDIToCVInterface.svg
[0.046 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/XCO.svg
[0.046 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_68px.svg
[0.046 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_16px.svg
[0.047 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_0.svg
[0.047 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_1.svg
[0.047 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_38px.svg
[0.047 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_0.svg
[0.048 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_1.svg
[0.048 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/port.svg
[0.050 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCA.svg
[0.050 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundLargeBlackKnob.svg
[0.052 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCF.svg
[0.052 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundHugeBlackKnob.svg
[0.054 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/ADSR.svg
[0.054 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-hexscrew.svg
[0.054 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePot.svg
[0.055 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePotHandle.svg
[0.055 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-PJ301M.svg
[0.058 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCO-1.svg
[0.058 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/CKSS_0.svg
[0.059 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/CKSS_1.svg
[32.846 info src/app/RackWidget.cpp:165] Saving patch to string
[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.004 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.008 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.009 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.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/moDllz/plugin.dll does not exist
[0.010 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/modular80/plugin.dll does not exist
[0.010 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.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/RJModules/plugin.dll does not exist
[0.011 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/SerialRacker/plugin.dll does not exist
[0.011 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.013 warn src/plugin.cpp:86] Plugin file f:\git\VeeSeeVSTRack\vst2_bin\/plugins/Valley/plugin.dll does not exist
[0.013 info src/settings.cpp:286] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.034 info src/window.cpp:599] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/DejaVuSans.ttf
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_146097_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_31859_cc.svg
[0.035 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343816_cc.svg
[0.036 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1343811_cc.svg
[0.036 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1084369_cc.svg
[0.036 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1745061_cc.svg
[0.037 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_1240789_cc.svg
[0.037 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_305536_cc.svg
[0.037 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/icons/noun_468341_cc.svg
[0.037 info src/settings.cpp:286] Loading settings f:\git\VeeSeeVSTRack\vst2_bin\/settings.json
[0.039 info src/app/RackWidget.cpp:205] Loading patch from string
[0.041 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/AudioInterface.svg
[0.042 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/ScrewSilver.svg
[0.042 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/PJ301M.svg
[0.042 info src/window.cpp:599] Loaded font f:\git\VeeSeeVSTRack\vst2_bin\/res/fonts/ShareTechMono-Regular.ttf
[0.044 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/Core/MIDIToCVInterface.svg
[0.047 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/XCO.svg
[0.048 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_68px.svg
[0.048 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_16px.svg
[0.048 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_0.svg
[0.049 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/button_9px_1.svg
[0.049 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/knob_38px.svg
[0.049 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_0.svg
[0.049 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/slider_switch_2_14px_1.svg
[0.050 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Bogaudio/res/port.svg
[0.051 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCA.svg
[0.052 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundLargeBlackKnob.svg
[0.053 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCF.svg
[0.054 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/RoundHugeBlackKnob.svg
[0.055 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/ADSR.svg
[0.056 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-hexscrew.svg
[0.056 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePot.svg
[0.056 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-SlidePotHandle.svg
[0.057 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/AS/res/as-PJ301M.svg
[0.060 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\plugins/Fundamental/res/VCO-1.svg
[0.060 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/CKSS_0.svg
[0.060 info src/window.cpp:654] Loaded SVG f:\git\VeeSeeVSTRack\vst2_bin\/res/ComponentLibrary/CKSS_1.svg
[14.606 info src/app/RackWidget.cpp:167] Saving patch to string

+ 2
- 0
vst2_bin/settings.json View File

@@ -19,6 +19,8 @@
"sampleRate": 44100.0,
"oversampleFactor": 1.0,
"oversampleQuality": 7.0,
"oversampleNumIn": 8.0,
"oversampleNumOut": 8.0,
"lastPath": "",
"moduleBrowser": {
"favorites": [


Loading…
Cancel
Save