From a7afe8bc52728b6ab40677105ee6655e7694e187 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Wed, 14 Feb 2018 23:28:04 -0500 Subject: [PATCH] Update to Rack API --- src/8vert.cpp | 12 ++++-- src/ADSR.cpp | 20 +++++----- src/Delay.cpp | 20 +++++----- src/Fundamental.cpp | 32 ++++++++-------- src/Fundamental.hpp | 83 ++++++++-------------------------------- src/LFO.cpp | 37 ++++++++---------- src/Mutes.cpp | 12 ++++-- src/SEQ3.cpp | 21 +++++----- src/Scope.cpp | 18 ++++----- src/SequentialSwitch.cpp | 22 ++++++++--- src/Unity.cpp | 12 ++++-- src/VCA.cpp | 18 ++++----- src/VCF.cpp | 20 +++++----- src/VCMixer.cpp | 18 ++++----- src/VCO.cpp | 38 ++++++++---------- 15 files changed, 168 insertions(+), 215 deletions(-) diff --git a/src/8vert.cpp b/src/8vert.cpp index 9aa95f6..7777e2e 100644 --- a/src/8vert.cpp +++ b/src/8vert.cpp @@ -31,10 +31,11 @@ void _8vert::step() { } -_8vertWidget::_8vertWidget() { - _8vert *module = new _8vert(); - setModule(module); - box.size = Vec(8 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT); +struct _8vertWidget : ModuleWidget { + _8vertWidget(_8vert *module); +}; + +_8vertWidget::_8vertWidget(_8vert *module) : ModuleWidget(module) { setPanel(SVG::load(assetPlugin(plugin, "res/8vert.svg"))); addChild(Widget::create(Vec(15, 0))); @@ -78,3 +79,6 @@ _8vertWidget::_8vertWidget() { addChild(ModuleLightWidget::create>(Vec(107.702, 281.076), module, 12)); addChild(ModuleLightWidget::create>(Vec(107.702, 319.521), module, 14)); } + + +Model *model_8vertWidget = Model::create<_8vert, _8vertWidget>("Fundamental", "8vert", "8vert", ATTENUATOR_TAG); diff --git a/src/ADSR.cpp b/src/ADSR.cpp index 264631d..2bc6aca 100644 --- a/src/ADSR.cpp +++ b/src/ADSR.cpp @@ -102,17 +102,12 @@ void ADSR::step() { } -ADSRWidget::ADSRWidget() { - ADSR *module = new ADSR(); - setModule(module); - box.size = Vec(15*8, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/ADSR.svg"))); - addChild(panel); - } +struct ADSRWidget : ModuleWidget { + ADSRWidget(ADSR *module); +}; + +ADSRWidget::ADSRWidget(ADSR *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/ADSR.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -138,3 +133,6 @@ ADSRWidget::ADSRWidget() { addChild(ModuleLightWidget::create>(Vec(94, 175), module, ADSR::SUSTAIN_LIGHT)); addChild(ModuleLightWidget::create>(Vec(94, 242), module, ADSR::RELEASE_LIGHT)); } + + +Model *modelADSRWidget = Model::create("Fundamental", "ADSR", "ADSR", ENVELOPE_GENERATOR_TAG); diff --git a/src/Delay.cpp b/src/Delay.cpp index fc1dc9b..2c4c836 100644 --- a/src/Delay.cpp +++ b/src/Delay.cpp @@ -107,17 +107,12 @@ void Delay::step() { } -DelayWidget::DelayWidget() { - Delay *module = new Delay(); - setModule(module); - box.size = Vec(15*8, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/Delay.svg"))); - addChild(panel); - } +struct DelayWidget : ModuleWidget { + DelayWidget(Delay *module); +}; + +DelayWidget::DelayWidget(Delay *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/Delay.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -136,3 +131,6 @@ DelayWidget::DelayWidget() { addInput(Port::create(Vec(14, 320), Port::INPUT, module, Delay::IN_INPUT)); addOutput(Port::create(Vec(73, 320), Port::OUTPUT, module, Delay::OUT_OUTPUT)); } + + +Model *modelDelayWidget = Model::create("Fundamental", "Delay", "Delay", DELAY_TAG); diff --git a/src/Fundamental.cpp b/src/Fundamental.cpp index f4c1ba3..3b3b361 100644 --- a/src/Fundamental.cpp +++ b/src/Fundamental.cpp @@ -8,20 +8,20 @@ void init(rack::Plugin *p) { p->slug = TOSTRING(SLUG); p->version = TOSTRING(VERSION); - p->addModel(createModel("Fundamental", "VCO", "VCO-1", OSCILLATOR_TAG)); - p->addModel(createModel("Fundamental", "VCO2", "VCO-2", OSCILLATOR_TAG)); - p->addModel(createModel("Fundamental", "VCF", "VCF", FILTER_TAG)); - p->addModel(createModel("Fundamental", "VCA", "VCA", AMPLIFIER_TAG)); - p->addModel(createModel("Fundamental", "LFO", "LFO-1", LFO_TAG)); - p->addModel(createModel("Fundamental", "LFO2", "LFO-2", LFO_TAG)); - p->addModel(createModel("Fundamental", "Delay", "Delay", DELAY_TAG)); - p->addModel(createModel("Fundamental", "ADSR", "ADSR", ENVELOPE_GENERATOR_TAG)); - p->addModel(createModel("Fundamental", "VCMixer", "VC Mixer", MIXER_TAG, AMPLIFIER_TAG)); - p->addModel(createModel<_8vertWidget>("Fundamental", "8vert", "8vert", ATTENUATOR_TAG)); - p->addModel(createModel("Fundamental", "Unity", "Unity", MIXER_TAG, UTILITY_TAG)); - p->addModel(createModel("Fundamental", "Mutes", "Mutes", SWITCH_TAG)); - p->addModel(createModel("Fundamental", "Scope", "Scope", VISUAL_TAG)); - p->addModel(createModel("Fundamental", "SEQ3", "SEQ-3", SEQUENCER_TAG)); - p->addModel(createModel("Fundamental", "SequentialSwitch1", "Sequential Switch 1", UTILITY_TAG)); - p->addModel(createModel("Fundamental", "SequentialSwitch2", "Sequential Switch 2", UTILITY_TAG)); + p->addModel(modelVCOWidget); + p->addModel(modelVCO2Widget); + p->addModel(modelVCFWidget); + p->addModel(modelVCAWidget); + p->addModel(modelLFOWidget); + p->addModel(modelLFO2Widget); + p->addModel(modelDelayWidget); + p->addModel(modelADSRWidget); + p->addModel(modelVCMixerWidget); + p->addModel(model_8vertWidget); + p->addModel(modelUnityWidget); + p->addModel(modelMutesWidget); + p->addModel(modelScopeWidget); + p->addModel(modelSEQ3Widget); + p->addModel(modelSequentialSwitch1Widget); + p->addModel(modelSequentialSwitch2Widget); } diff --git a/src/Fundamental.hpp b/src/Fundamental.hpp index 014ad74..b4ebf59 100644 --- a/src/Fundamental.hpp +++ b/src/Fundamental.hpp @@ -6,72 +6,21 @@ using namespace rack; extern Plugin *plugin; -//////////////////// -// module widgets -//////////////////// +extern Model *modelVCOWidget; +extern Model *modelVCO2Widget; +extern Model *modelVCFWidget; +extern Model *modelVCAWidget; +extern Model *modelLFOWidget; +extern Model *modelLFO2Widget; +extern Model *modelDelayWidget; +extern Model *modelADSRWidget; +extern Model *modelVCMixerWidget; +extern Model *model_8vertWidget; +extern Model *modelUnityWidget; +extern Model *modelMutesWidget; +extern Model *modelScopeWidget; +extern Model *modelSEQ3Widget; +extern Model *modelSequentialSwitch1Widget; +extern Model *modelSequentialSwitch2Widget; -struct VCOWidget : ModuleWidget { - VCOWidget(); -}; -struct VCO2Widget : ModuleWidget { - VCO2Widget(); -}; - -struct VCFWidget : ModuleWidget { - VCFWidget(); -}; - -struct VCAWidget : ModuleWidget { - VCAWidget(); -}; - -struct LFOWidget : ModuleWidget { - LFOWidget(); -}; - -struct LFO2Widget : ModuleWidget { - LFO2Widget(); -}; - -struct DelayWidget : ModuleWidget { - DelayWidget(); -}; - -struct ADSRWidget : ModuleWidget { - ADSRWidget(); -}; - -struct VCMixerWidget : ModuleWidget { - VCMixerWidget(); -}; - -struct _8vertWidget : ModuleWidget { - _8vertWidget(); -}; - -struct UnityWidget : ModuleWidget { - UnityWidget(); - Menu *createContextMenu() override; -}; - -struct MutesWidget : ModuleWidget { - MutesWidget(); -}; - -struct ScopeWidget : ModuleWidget { - ScopeWidget(); -}; - -struct SEQ3Widget : ModuleWidget { - SEQ3Widget(); - Menu *createContextMenu() override; -}; - -struct SequentialSwitch1Widget : ModuleWidget { - SequentialSwitch1Widget(); -}; - -struct SequentialSwitch2Widget : ModuleWidget { - SequentialSwitch2Widget(); -}; diff --git a/src/LFO.cpp b/src/LFO.cpp index 73b464f..dc94c01 100644 --- a/src/LFO.cpp +++ b/src/LFO.cpp @@ -120,17 +120,12 @@ void LFO::step() { } -LFOWidget::LFOWidget() { - LFO *module = new LFO(); - setModule(module); - box.size = Vec(15*10, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/LFO-1.svg"))); - addChild(panel); - } +struct LFOWidget : ModuleWidget { + LFOWidget(LFO *module); +}; + +LFOWidget::LFOWidget(LFO *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/LFO-1.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -160,6 +155,8 @@ LFOWidget::LFOWidget() { } +Model *modelLFOWidget = Model::create("Fundamental", "LFO", "LFO-1", LFO_TAG); + struct LFO2 : Module { enum ParamIds { @@ -216,17 +213,12 @@ void LFO2::step() { } -LFO2Widget::LFO2Widget() { - LFO2 *module = new LFO2(); - setModule(module); - box.size = Vec(15*6, 380); +struct LFO2Widget : ModuleWidget { + LFO2Widget(LFO2 *module); +}; - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/LFO-2.svg"))); - addChild(panel); - } +LFO2Widget::LFO2Widget(LFO2 *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/LFO-2.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -248,3 +240,6 @@ LFO2Widget::LFO2Widget() { addChild(ModuleLightWidget::create>(Vec(68, 42.5f), module, LFO2::PHASE_POS_LIGHT)); } + + +Model *modelLFO2Widget = Model::create("Fundamental", "LFO2", "LFO-2", LFO_TAG); diff --git a/src/Mutes.cpp b/src/Mutes.cpp index bbb99f9..b7d7261 100644 --- a/src/Mutes.cpp +++ b/src/Mutes.cpp @@ -86,9 +86,12 @@ struct MuteLight : BASE { } }; -MutesWidget::MutesWidget() { - Mutes *module = new Mutes(); - setModule(module); + +struct MutesWidget : ModuleWidget { + MutesWidget(Mutes *module); +}; + +MutesWidget::MutesWidget(Mutes *module) : ModuleWidget(module) { setPanel(SVG::load(assetPlugin(plugin, "res/Mutes.svg"))); addChild(Widget::create(Vec(15, 0))); @@ -140,3 +143,6 @@ MutesWidget::MutesWidget() { addChild(ModuleLightWidget::create>(mm2px(Vec(17.32, 98.915)), module, Mutes::MUTE_LIGHT + 8)); addChild(ModuleLightWidget::create>(mm2px(Vec(17.32, 108.915)), module, Mutes::MUTE_LIGHT + 9)); } + + +Model *modelMutesWidget = Model::create("Fundamental", "Mutes", "Mutes", SWITCH_TAG); diff --git a/src/SEQ3.cpp b/src/SEQ3.cpp index 686ab8c..da93f5f 100644 --- a/src/SEQ3.cpp +++ b/src/SEQ3.cpp @@ -211,17 +211,13 @@ void SEQ3::step() { } -SEQ3Widget::SEQ3Widget() { - SEQ3 *module = new SEQ3(); - setModule(module); - box.size = Vec(15*22, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/SEQ3.svg"))); - addChild(panel); - } +struct SEQ3Widget : ModuleWidget { + SEQ3Widget(SEQ3 *module); + Menu *createContextMenu() override; +}; + +SEQ3Widget::SEQ3Widget(SEQ3 *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/SEQ3.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -303,3 +299,6 @@ Menu *SEQ3Widget::createContextMenu() { return menu; } + + +Model *modelSEQ3Widget = Model::create("Fundamental", "SEQ3", "SEQ-3", SEQUENCER_TAG); diff --git a/src/Scope.cpp b/src/Scope.cpp index 59c8b56..6bc0a9c 100644 --- a/src/Scope.cpp +++ b/src/Scope.cpp @@ -299,17 +299,12 @@ struct ScopeDisplay : TransparentWidget { }; -ScopeWidget::ScopeWidget() { - Scope *module = new Scope(); - setModule(module); - box.size = Vec(15*13, 380); +struct ScopeWidget : ModuleWidget { + ScopeWidget(Scope *module); +}; - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/Scope.svg"))); - addChild(panel); - } +ScopeWidget::ScopeWidget(Scope *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/Scope.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -342,3 +337,6 @@ ScopeWidget::ScopeWidget() { addChild(ModuleLightWidget::create>(Vec(150, 251), module, Scope::INTERNAL_LIGHT)); addChild(ModuleLightWidget::create>(Vec(150, 296), module, Scope::EXTERNAL_LIGHT)); } + + +Model *modelScopeWidget = Model::create("Fundamental", "Scope", "Scope", VISUAL_TAG); diff --git a/src/SequentialSwitch.cpp b/src/SequentialSwitch.cpp index ac2780b..0a1eb27 100644 --- a/src/SequentialSwitch.cpp +++ b/src/SequentialSwitch.cpp @@ -75,10 +75,12 @@ struct SequentialSwitch : Module { }; -SequentialSwitch1Widget::SequentialSwitch1Widget() { +struct SequentialSwitch1Widget : ModuleWidget { + SequentialSwitch1Widget(SequentialSwitch<1> *module); +}; + +SequentialSwitch1Widget::SequentialSwitch1Widget(SequentialSwitch<1> *module) : ModuleWidget(module) { typedef SequentialSwitch<1> TSequentialSwitch; - TSequentialSwitch *module = new TSequentialSwitch(); - setModule(module); setPanel(SVG::load(assetPlugin(plugin, "res/SequentialSwitch1.svg"))); addChild(Widget::create(Vec(RACK_GRID_WIDTH, 0))); @@ -102,10 +104,15 @@ SequentialSwitch1Widget::SequentialSwitch1Widget() { } -SequentialSwitch2Widget::SequentialSwitch2Widget() { +Model *modelSequentialSwitch1Widget = Model::create, SequentialSwitch1Widget>("Fundamental", "SequentialSwitch1", "Sequential Switch 1", UTILITY_TAG); + + +struct SequentialSwitch2Widget : ModuleWidget { + SequentialSwitch2Widget(SequentialSwitch<2> *module); +}; + +SequentialSwitch2Widget::SequentialSwitch2Widget(SequentialSwitch<2> *module) : ModuleWidget(module) { typedef SequentialSwitch<2> TSequentialSwitch; - TSequentialSwitch *module = new TSequentialSwitch(); - setModule(module); setPanel(SVG::load(assetPlugin(plugin, "res/SequentialSwitch2.svg"))); addChild(Widget::create(Vec(RACK_GRID_WIDTH, 0))); @@ -127,3 +134,6 @@ SequentialSwitch2Widget::SequentialSwitch2Widget() { addChild(ModuleLightWidget::create>(mm2px(Vec(10.7321, 82.6285)), module, TSequentialSwitch::CHANNEL_LIGHT + 2)); addChild(ModuleLightWidget::create>(mm2px(Vec(10.7321, 92.6276)), module, TSequentialSwitch::CHANNEL_LIGHT + 3)); } + + +Model *modelSequentialSwitch2Widget = Model::create, SequentialSwitch2Widget>("Fundamental", "SequentialSwitch2", "Sequential Switch 2", UTILITY_TAG); diff --git a/src/Unity.cpp b/src/Unity.cpp index 648a871..ca87eac 100644 --- a/src/Unity.cpp +++ b/src/Unity.cpp @@ -90,9 +90,12 @@ void Unity::step() { } -UnityWidget::UnityWidget() { - Unity *module = new Unity(); - setModule(module); +struct UnityWidget : ModuleWidget { + UnityWidget(Unity *module); + Menu *createContextMenu() override; +}; + +UnityWidget::UnityWidget(Unity *module) : ModuleWidget(module) { setPanel(SVG::load(assetPlugin(plugin, "res/Unity.svg"))); addChild(Widget::create(Vec(15, 0))); @@ -160,3 +163,6 @@ Menu *UnityWidget::createContextMenu() { return menu; } + + +Model *modelUnityWidget = Model::create("Fundamental", "Unity", "Unity", MIXER_TAG, UTILITY_TAG); diff --git a/src/VCA.cpp b/src/VCA.cpp index 30e505b..4a186f1 100644 --- a/src/VCA.cpp +++ b/src/VCA.cpp @@ -43,17 +43,12 @@ void VCA::step() { } -VCAWidget::VCAWidget() { - VCA *module = new VCA(); - setModule(module); - box.size = Vec(15*6, 380); +struct VCAWidget : ModuleWidget { + VCAWidget(VCA *module); +}; - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/VCA.svg"))); - addChild(panel); - } +VCAWidget::VCAWidget(VCA *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/VCA.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -73,3 +68,6 @@ VCAWidget::VCAWidget() { addOutput(Port::create(Vec(54, 156), Port::OUTPUT, module, VCA::OUT1_OUTPUT)); addOutput(Port::create(Vec(54, 320), Port::OUTPUT, module, VCA::OUT2_OUTPUT)); } + + +Model *modelVCAWidget = Model::create("Fundamental", "VCA", "VCA", AMPLIFIER_TAG); diff --git a/src/VCF.cpp b/src/VCF.cpp index 6ea924e..f2a3448 100644 --- a/src/VCF.cpp +++ b/src/VCF.cpp @@ -144,17 +144,12 @@ void VCF::step() { } -VCFWidget::VCFWidget() { - VCF *module = new VCF(); - setModule(module); - box.size = Vec(15*8, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/VCF.svg"))); - addChild(panel); - } +struct VCFWidget : ModuleWidget { + VCFWidget(VCF *module); +}; + +VCFWidget::VCFWidget(VCF *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/VCF.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -175,3 +170,6 @@ VCFWidget::VCFWidget() { addOutput(Port::create(Vec(48, 320), Port::OUTPUT, module, VCF::LPF_OUTPUT)); addOutput(Port::create(Vec(85, 320), Port::OUTPUT, module, VCF::HPF_OUTPUT)); } + + +Model *modelVCFWidget = Model::create("Fundamental", "VCF", "VCF", FILTER_TAG); diff --git a/src/VCMixer.cpp b/src/VCMixer.cpp index 22e72da..596f9bd 100644 --- a/src/VCMixer.cpp +++ b/src/VCMixer.cpp @@ -46,17 +46,12 @@ void VCMixer::step() { } -VCMixerWidget::VCMixerWidget() { - VCMixer *module = new VCMixer(); - setModule(module); - box.size = Vec(15*10, 380); +struct VCMixerWidget : ModuleWidget { + VCMixerWidget(VCMixer *module); +}; - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/VCMixer.svg"))); - addChild(panel); - } +VCMixerWidget::VCMixerWidget(VCMixer *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/VCMixer.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -81,3 +76,6 @@ VCMixerWidget::VCMixerWidget() { addOutput(Port::create(Vec(110, 225), Port::OUTPUT, module, VCMixer::CH2_OUTPUT)); addOutput(Port::create(Vec(110, 306), Port::OUTPUT, module, VCMixer::CH3_OUTPUT)); } + + +Model *modelVCMixerWidget = Model::create("Fundamental", "VCMixer", "VC Mixer", MIXER_TAG, AMPLIFIER_TAG); diff --git a/src/VCO.cpp b/src/VCO.cpp index dc581b7..07c5f32 100644 --- a/src/VCO.cpp +++ b/src/VCO.cpp @@ -230,17 +230,12 @@ void VCO::step() { } -VCOWidget::VCOWidget() { - VCO *module = new VCO(); - setModule(module); - box.size = Vec(15*10, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/VCO-1.svg"))); - addChild(panel); - } +struct VCOWidget : ModuleWidget { + VCOWidget(VCO *module); +}; + +VCOWidget::VCOWidget(VCO *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/VCO-1.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -270,6 +265,9 @@ VCOWidget::VCOWidget() { } +Model *modelVCOWidget = Model::create("Fundamental", "VCO", "VCO-1", OSCILLATOR_TAG); + + struct VCO2 : Module { enum ParamIds { MODE_PARAM, @@ -328,17 +326,12 @@ void VCO2::step() { } -VCO2Widget::VCO2Widget() { - VCO2 *module = new VCO2(); - setModule(module); - box.size = Vec(15*6, 380); +struct VCO2Widget : ModuleWidget { + VCO2Widget(VCO2 *module); +}; - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/VCO-2.svg"))); - addChild(panel); - } +VCO2Widget::VCO2Widget(VCO2 *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/VCO-2.svg"))); addChild(Widget::create(Vec(15, 0))); addChild(Widget::create(Vec(box.size.x-30, 0))); @@ -362,6 +355,9 @@ VCO2Widget::VCO2Widget() { } +Model *modelVCO2Widget = Model::create("Fundamental", "VCO2", "VCO-2", OSCILLATOR_TAG); + + float sawTable[2048] = { 0.00221683, 0.00288535, 0.00382874, 0.00493397, 0.006088, 0.00717778, 0.0080962, 0.00887097, 0.00957292, 0.0102536, 0.0109644, 0.0117569, 0.0126765, 0.0137091, 0.014811, 0.0159388, 0.0170492, 0.0180987, 0.0190781, 0.0200243, 0.0209441, 0.0218439, 0.0227299, 0.023608, 0.0244664, 0.0253042, 0.0261303, 0.0269533, 0.0277823, 0.0286234, 0.0294678, 0.0303142, 0.0311635, 0.0320168, 0.0328749, 0.0337369, 0.0346001, 0.0354672, 0.0363411, 0.0372246, 0.0381206, 0.0390346, 0.039964, 0.0409017, 0.0418407, 0.042774, 0.0436961, 0.0446189, 0.0455409, 0.0464563, 0.047359, 0.0482433, 0.0491029, 0.049938, 0.0507563, 0.0515658, 0.0523744, 0.0531901, 0.0540067, 0.0548165, 0.0556269, 0.0564456, 0.0572799, 0.0581378, 0.0590252, 0.059934, 0.0608529, 0.0617707, 0.0626761, 0.0635623, 0.0644415, 0.0653142, 0.0661789, 0.0670339, 0.0678778, 0.0687058, 0.0695165, 0.070317, 0.0711147, 0.0719168, 0.0727304, 0.0735539, 0.0743828, 0.075215, 0.0760485, 0.0768811, 0.07771, 0.0785292, 0.0793449, 0.0801652, 0.080998, 0.0818513, 0.082737, 0.0836581, 0.0845968, 0.0855346, 0.0864532, 0.0873342, 0.0881769, 0.0889945, 0.0897932, 0.0905797, 0.0913603, 0.0921398, 0.0929034, 0.0936544, 0.0944023, 0.0951566, 0.0959267, 0.0967196, 0.0975297, 0.0983516, 0.09918, 0.10001, 0.100836, 0.101666, 0.102504, 0.103342, 0.104172, 0.104985, 0.105773, 0.106533, 0.107272, 0.107999, 0.108722, 0.109449, 0.110184, 0.110909, 0.11163, 0.112359, 0.113107, 0.113883, 0.114701, 0.115559, 0.116438, 0.117321, 0.118187, 0.119019, 0.11982, 0.120602, 0.121371, 0.122131, 0.122889, 0.123648, 0.124405, 0.125157, 0.125905, 0.126649, 0.127387, 0.128116, 0.128828, 0.129533, 0.130244, 0.130971, 0.131727, 0.132522, 0.133348, 0.134189, 0.13503, 0.135856, 0.136654, 0.137426, 0.138182, 0.13893, 0.13968, 0.140439, 0.141215, 0.142006, 0.142805, 0.143602, 0.144389, 0.145159, 0.145905, 0.146633, 0.147351, 0.148066, 0.148785, 0.149516, 0.150256, 0.151, 0.151747, 0.152495, 0.153242, 0.15399, 0.154742, 0.155496, 0.156248, 0.156992, 0.157725, 0.158443, 0.15915, 0.159849, 0.160542, 0.16123, 0.161916, 0.162592, 0.163258, 0.163921, 0.164589, 0.165267, 0.165962, 0.166664, 0.167374, 0.168094, 0.168827, 0.169575, 0.170347, 0.171149, 0.171967, 0.172788, 0.173595, 0.174376, 0.175127, 0.17586, 0.17658, 0.177293, 0.178003, 0.178717, 0.179439, 0.180163, 0.180879, 0.181579, 0.182254, 0.182887, 0.183461, 0.184006, 0.184553, 0.185136, 0.185786, 0.186519, 0.187312, 0.188146, 0.189001, 0.189859, 0.190701, 0.191556, 0.192426, 0.193296, 0.194149, 0.194968, 0.195739, 0.19647, 0.197172, 0.197852, 0.198518, 0.199177, 0.199827, 0.200455, 0.20107, 0.201683, 0.202303, 0.202941, 0.203594, 0.204255, 0.204924, 0.205599, 0.206279, 0.206967, 0.207672, 0.208389, 0.209106, 0.209812, 0.210497, 0.211154, 0.211791, 0.212413, 0.213022, 0.213622, 0.214216, 0.214789, 0.215338, 0.21588, 0.216432, 0.21701, 0.217632, 0.218309, 0.219022, 0.219748, 0.220466, 0.221152, 0.221789, 0.222391, 0.22297, 0.223536, 0.224097, 0.224665, 0.225227, 0.225769, 0.22631, 0.226866, 0.227457, 0.2281, 0.228809, 0.229566, 0.230349, 0.231134, 0.231897, 0.232619, 0.233316, 0.233998, 0.234672, 0.235345, 0.236023, 0.236715, 0.237415, 0.238118, 0.238815, 0.239499, 0.240162, 0.240802, 0.241424, 0.242035, 0.242638, 0.24324, 0.243846, 0.244452, 0.245055, 0.245654, 0.24625, 0.246841, 0.247425, 0.248001, 0.248572, 0.249141, 0.249711, 0.250285, 0.250867, 0.251454, 0.252043, 0.252627, 0.253202, 0.253762, 0.254314, 0.254859, 0.255395, 0.255918, 0.256428, 0.256916, 0.257372, 0.257809, 0.258245, 0.258695, 0.259177, 0.259689, 0.260217, 0.260762, 0.26133, 0.261924, 0.262549, 0.263221, 0.263934, 0.264667, 0.2654, 0.266114, 0.266792, 0.267451, 0.268097, 0.268732, 0.269357, 0.269973, 0.270576, 0.271158, 0.271729, 0.2723, 0.272879, 0.273479, 0.274107, 0.274757, 0.275414, 0.276063, 0.27669, 0.277282, 0.277837, 0.278368, 0.278887, 0.279406, 0.279937, 0.280489, 0.281057, 0.281633, 0.282207, 0.282772, 0.283319, 0.283845, 0.284355, 0.284855, 0.285351, 0.285848, 0.286353, 0.286861, 0.287368, 0.287877, 0.288389, 0.288904, 0.289424, 0.289941, 0.290461, 0.290987, 0.291524, 0.292076, 0.292648, 0.293238, 0.293841, 0.294449, 0.295058, 0.295663, 0.296276, 0.296899, 0.297519, 0.298127, 0.29871, 0.299257, 0.299765, 0.300247, 0.300716, 0.301185, 0.301669, 0.302178, 0.302707, 0.303244, 0.303774, 0.304286, 0.304765, 0.305192, 0.305574, 0.305941, 0.306323, 0.306748, 0.307245, 0.307827, 0.308466, 0.309123, 0.309764, 0.310351, 0.310859, 0.311312, 0.311727, 0.312122, 0.312512, 0.312915, 0.313329, 0.313739, 0.314148, 0.314558, 0.314972, 0.315393, 0.315812, 0.316231, 0.316656, 0.317095, 0.317554, 0.318043, 0.318572, 0.319125, 0.319683, 0.320227, 0.320739, 0.321207, 0.321641, 0.322057, 0.322467, 0.322886, 0.323327, 0.32378, 0.324239, 0.324707, 0.325188, 0.325686, 0.326205, 0.326755, 0.327327, 0.327907, 0.328484, 0.329045, 0.329585, 0.330116, 0.33064, 0.331156, 0.331664, 0.332165, 0.332653, 0.33313, 0.3336, 0.334068, 0.334539, 0.33502, 0.33552, 0.33603, 0.336536, 0.337024, 0.337481, 0.337893, 0.338261, 0.3386, 0.338927, 0.339258, 0.33961, 0.339982, 0.340358, 0.340742, 0.341136, 0.341541, 0.34196, 0.342407, 0.342874, 0.343348, 0.343815, 0.344261, 0.344675, 0.345061, 0.345429, 0.345787, 0.346144, 0.346507, 0.346879, 0.347253, 0.347628, 0.348002, 0.348377, 0.34875, 0.349118, 0.349481, 0.349845, 0.350216, 0.350597, 0.350995, 0.351411, 0.351838, 0.352273, 0.352708, 0.353139, 0.353563, 0.353984, 0.354404, 0.354824, 0.355243, 0.355661, 0.356077, 0.356489, 0.356901, 0.357316, 0.357737, 0.358168, 0.358608, 0.359055, 0.359506, 0.35996, 0.360414, 0.360869, 0.361328, 0.361789, 0.36225, 0.362706, 0.363154, 0.363596, 0.364034, 0.364466, 0.364893, 0.365313, 0.365724, 0.366133, 0.366538, 0.366935, 0.367317, 0.367681, 0.36802, 0.368324, 0.368606, 0.36888, 0.369159, 0.369458, 0.369786, 0.370135, 0.370494, 0.370854, 0.371206, 0.371541, 0.371852, 0.372145, 0.372432, 0.372726, 0.373037, 0.373377, 0.373753, 0.374151, 0.374555, 0.374948, 0.375316, 0.375645, 0.375944, 0.376225, 0.376497, 0.376772, 0.377061, 0.377367, 0.377681, 0.377998, 0.378314, 0.378622, 0.378916, 0.379197, 0.379469, 0.379735, 0.380002, 0.380274, 0.380552, 0.380831, 0.38111, 0.381395, 0.381687, 0.381992, 0.382311, 0.382642, 0.382983, 0.383329, 0.383676, 0.384021, 0.384367, 0.384716, 0.385066, 0.385417, 0.385767, 0.386116, 0.38647, 0.386824, 0.387177, 0.387522, 0.387858, 0.388187, 0.388517, 0.388841, 0.389149, 0.389433, 0.389684, 0.389883, 0.390037, 0.390171, 0.39031, 0.390476, 0.390693, 0.390945, 0.391221, 0.391516, 0.391825, 0.392141, 0.392465, 0.392808, 0.393164, 0.393524, 0.393881, 0.394226, 0.39456, 0.394891, 0.395217, 0.395538, 0.395851, 0.396157, 0.396451, 0.396736, 0.397016, 0.397296, 0.39758, 0.397874, 0.39818, 0.39849, 0.398797, 0.399095, 0.399375, 0.399634, 0.399877, 0.400107, 0.400331, 0.400554, 0.40078, 0.401001, 0.401216, 0.401431, 0.401652, 0.401885, 0.402136, 0.402411, 0.402699, 0.402992, 0.403279, 0.403551, 0.403804, 0.404051, 0.404289, 0.404515, 0.404728, 0.404924, 0.405086, 0.405215, 0.405334, 0.405465, 0.405629, 0.405848, 0.406118, 0.406424, 0.406751, 0.407085, 0.407412, 0.407728, 0.408054, 0.408384, 0.408707, 0.409011, 0.409286, 0.40952, 0.409718, 0.409896, 0.410074, 0.410268, 0.410495, 0.410756, 0.411038, 0.411329, 0.411618, 0.411891, 0.412139, 0.41237, 0.412589, 0.412802, 0.413013, 0.413229, 0.413447, 0.413663, 0.413878, 0.414097, 0.414321, 0.414556, 0.4148, 0.415051, 0.415309, 0.41557, 0.415834, 0.416101, 0.416385, 0.416677, 0.416965, 0.417238, 0.417483, 0.417691, 0.417871, 0.418029, 0.418173, 0.418311, 0.418451, 0.418583, 0.418702, 0.418816, 0.418934, 0.419064, 0.419214, 0.419382, 0.419563, 0.419752, 0.419942, 0.42013, 0.420312, 0.420491, 0.420669, 0.420849, 0.42103, 0.421215, 0.421399, 0.421577, 0.421758, 0.421949, 0.42216, 0.422397, 0.422673, 0.422978, 0.423295, 0.423607, 0.4239, 0.424162, 0.424418, 0.424664, 0.424892, 0.425091, 0.425255, 0.425365, 0.425417, 0.425437, 0.425453, 0.425491, 0.425579, 0.425726, 0.425913, 0.426116, 0.426313, 0.426481, 0.426598, 0.42666, 0.426688, 0.426709, 0.426745, 0.42682, 0.426953, 0.427125, 0.427325, 0.427539, 0.427754, 0.427957, 0.428158, 0.428365, 0.428571, 0.42877, 0.428954, 0.429116, 0.429254, 0.429373, 0.429483, 0.429592, 0.429707, 0.429833, 0.429956, 0.43008, 0.430211, 0.430356, 0.43052, 0.430711, 0.430923, 0.431151, 0.431385, 0.431618, 0.431843, 0.432075, 0.432315, 0.43255, 0.432772, 0.432969, 0.43313, 0.43326, 0.433365, 0.433455, 0.433539, 0.433624, 0.4337, 0.433748, 0.43379, 0.433848, 0.433947, 0.434111, 0.434373, 0.434713, 0.435083, 0.435437, 0.435726, 0.435907, 0.435996, 0.436022, 0.436011, 0.435989, 0.435982, 0.435999, 0.436012, 0.436022, 0.436035, 0.436054, 0.436083, 0.436125, 0.436177, 0.436234, 0.436294, 0.436352, 0.436403, 0.436434, 0.436453, 0.436478, 0.436526, 0.436614, 0.43676, 0.436966, 0.437211, 0.43747, 0.43772, 0.437936, 0.438113, 0.438274, 0.43842, 0.438554, 0.438679, 0.438796, 0.438898, 0.438986, 0.439067, 0.439145, 0.439229, 0.439323, 0.439421, 0.439522, 0.439625, 0.43973, 0.439836, 0.439943, 0.440053, 0.440164, 0.440277, 0.440389, 0.440502, 0.440621, 0.440748, 0.440873, 0.440989, 0.441088, 0.441163, 0.441213, 0.441245, 0.441266, 0.441282, 0.441302, 0.441323, 0.441334, 0.441341, 0.441354, 0.441383, 0.441436, 0.44152, 0.441628, 0.441752, 0.441883, 0.442013, 0.442135, 0.44226, 0.44239, 0.442518, 0.442638, 0.442745, 0.44283, 0.442892, 0.442939, 0.442982, 0.443033, 0.4431, 0.443186, 0.443279, 0.443381, 0.443494, 0.443621, 0.443764, 0.443936, 0.444132, 0.444338, 0.444539, 0.44472, 0.444871, 0.445005, 0.445125, 0.445231, 0.445322, 0.445397, 0.445451, 0.445479, 0.445491, 0.445496, 0.445505, 0.445526, 0.445556, 0.445586, 0.445621, 0.445663, 0.445715, 0.445779, 0.445858, 0.445947, 0.446044, 0.446145, 0.446248, 0.44635, 0.446452, 0.446557, 0.446667, 0.446784, 0.446909, 0.447046, 0.447194, 0.447348, 0.447505, 0.447661, 0.447814, 0.447987, 0.448173, 0.448351, 0.4485, 0.448599, 0.448623, 0.448552, 0.448426, 0.448289, 0.448186, 0.448161, 0.448239, 0.448392, 0.44859, 0.448805, 0.449007, 0.449168, 0.449302, 0.449424, 0.449536, 0.449637, 0.449728, 0.44981, 0.449878, 0.449934, 0.449982, 0.450025, 0.450064, 0.450101, 0.45013, 0.450154, 0.450176, 0.450199, 0.450225, 0.450252, 0.450279, 0.450307, 0.450338, 0.450373, 0.450413, 0.450461, 0.450514, 0.45057, 0.450625, 0.450677, 0.450725, 0.450775, 0.450825, 0.45087, 0.450906, 0.450929, 0.450938, 0.450934, 0.450921, 0.450901, 0.450877, 0.45085, 0.450811, 0.450761, 0.45071, 0.450664, 0.450633, 0.450621, 0.45062, 0.450628, 0.450649, 0.450683, 0.450732, 0.450802, 0.450892, 0.450997, 0.45111, 0.451225, 0.451334, 0.451451, 0.451579, 0.451705, 0.451819, 0.451909, 0.451964, 0.451985, 0.451981, 0.451963, 0.451939, 0.451919, 0.451906, 0.451887, 0.451865, 0.451845, 0.451832, 0.45183, 0.451841, 0.451861, 0.451888, 0.451919, 0.451949, 0.451977, 0.452007, 0.452039, 0.452071, 0.452102, 0.452129, 0.452153, 0.452177, 0.452199, 0.452217, 0.452231, 0.452237, 0.452233, 0.452219, 0.452199, 0.452179, 0.452163, 0.452155, 0.452151, 0.452149, 0.452152, 0.452159, 0.452173, 0.452194, 0.452227, 0.452267, 0.45231, 0.452352, 0.452388, 0.452422, 0.45246, 0.452497, 0.452525, 0.452538, 0.452531, 0.452507, 0.452471, 0.45242, 0.452351, 0.452262, 0.452146, 0.451988, 0.451802, 0.451605, 0.451418, 0.45126, 0.451143, 0.451054, 0.450984, 0.450924, 0.450866, 0.450801, 0.450725, 0.450645, 0.450566, 0.450496, 0.45044, 0.450406, 0.450404, 0.450422, 0.450449, 0.450469, 0.450469, 0.450438, 0.450381, 0.450308, 0.450229, 0.450154, 0.450093, 0.450049, 0.450013, 0.449983, 0.449957, 0.449933, 0.449908, 0.449892, 0.449885, 0.449877, 0.449858, 0.449822, 0.44976, 0.449688, 0.449602, 0.449498, 0.449371, 0.449217, 0.449034, 0.448826, 0.448593, 0.448337, 0.448059, 0.447758, 0.447436, 0.44709, 0.446721, 0.446331, 0.445918, 0.445483, 0.445027, 0.444548, 0.444047, 0.443524, 0.44298, 0.442413, 0.441818, 0.441202, 0.440567, 0.439919, 0.439262, 0.438614, 0.437974, 0.437319, 0.436626, 0.43587, 0.435049, 0.434402, 0.433835, 0.433123, 0.432039, 0.430358, 0.428368, 0.427503, 0.426601, 0.424216, 0.418905, 0.409225, 0.396402, 0.382576, 0.365547, 0.34307, 0.312906, 0.272788, 0.221013, 0.159633, 0.091601, 0.0198945, -0.0525338, -0.124172, -0.201123, -0.28145, -0.361514, -0.437677, -0.506323, -0.565947, -0.61981, -0.668566, -0.712743, -0.752877, -0.789483, -0.821637, -0.849041, -0.872562, -0.893078, -0.911459, -0.928371, -0.94253, -0.953999, -0.963373, -0.971244, -0.978205, -0.984408, -0.988963, -0.992177, -0.994451, -0.996186, -0.997786, -0.999106, -0.999791, -1.0, -0.999892, -0.999627, -0.99935, -0.998924, -0.998293, -0.997489, -0.996544, -0.99549, -0.994324, -0.992938, -0.9914, -0.989797, -0.988217, -0.98675, -0.985459, -0.984295, -0.983177, -0.982026, -0.98076, -0.9793, -0.977576, -0.975661, -0.973667, -0.971707, -0.969891, -0.968331, -0.967043, -0.965911, -0.964815, -0.963632, -0.962241, -0.960532, -0.958548, -0.956417, -0.954273, -0.952245, -0.950466, -0.948995, -0.947739, -0.946587, -0.94543, -0.944156, -0.942662, -0.940966, -0.939147, -0.937271, -0.935407, -0.933622, -0.931964, -0.930389, -0.928864, -0.927356, -0.925834, -0.924266, -0.922637, -0.920969, -0.919284, -0.917603, -0.915947, -0.914338, -0.912774, -0.91124, -0.909724, -0.908215, -0.9067, -0.905174, -0.903657, -0.902144, -0.900623, -0.899085, -0.897519, -0.895907, -0.894246, -0.892562, -0.890886, -0.889245, -0.887668, -0.886183, -0.884763, -0.883367, -0.881952, -0.880476, -0.878893, -0.877185, -0.875402, -0.873605, -0.871856, -0.870213, -0.868734, -0.867403, -0.866151, -0.864909, -0.863607, -0.862175, -0.86057, -0.85884, -0.857056, -0.855289, -0.853607, -0.852081, -0.850725, -0.849477, -0.848268, -0.847031, -0.845696, -0.844208, -0.842597, -0.840914, -0.839205, -0.83752, -0.835907, -0.834385, -0.83292, -0.831484, -0.830055, -0.828605, -0.827111, -0.825575, -0.824013, -0.82244, -0.820868, -0.81931, -0.817777, -0.816267, -0.814769, -0.813273, -0.811771, -0.810251, -0.808705, -0.807134, -0.805552, -0.803974, -0.802414, -0.800886, -0.799393, -0.797924, -0.796471, -0.795025, -0.793575, -0.792118, -0.790676, -0.78924, -0.787798, -0.786332, -0.784828, -0.78326, -0.781618, -0.77994, -0.778267, -0.776639, -0.775098, -0.773676, -0.772344, -0.771056, -0.769763, -0.768417, -0.766973, -0.765427, -0.763815, -0.762179, -0.760556, -0.758986, -0.757505, -0.756108, -0.754755, -0.753405, -0.752018, -0.750554, -0.748967, -0.747275, -0.745539, -0.743822, -0.742186, -0.740694, -0.739378, -0.738183, -0.737041, -0.735882, -0.734639, -0.73325, -0.731736, -0.730147, -0.728531, -0.726936, -0.725409, -0.723977, -0.722606, -0.721272, -0.719951, -0.718621, -0.717259, -0.715868, -0.714464, -0.713052, -0.711638, -0.710226, -0.708824, -0.707431, -0.706042, -0.704652, -0.703255, -0.701847, -0.700422, -0.698983, -0.697535, -0.696081, -0.694629, -0.693182, -0.691736, -0.690286, -0.688838, -0.687396, -0.685967, -0.684557, -0.683176, -0.681815, -0.680459, -0.679094, -0.677703, -0.676271, -0.674794, -0.673291, -0.671787, -0.670306, -0.668872, -0.66751, -0.666213, -0.664942, -0.663664, -0.66234, -0.660935, -0.659418, -0.657823, -0.656203, -0.654607, -0.653087, -0.651693, -0.650422, -0.649228, -0.648061, -0.64687, -0.645608, -0.64424, -0.642798, -0.641314, -0.639821, -0.638352, -0.636938, -0.635586, -0.634273, -0.63298, -0.631688, -0.630378, -0.629033, -0.627661, -0.626273, -0.624876, -0.623477, -0.622085, -0.620705, -0.619334, -0.617966, -0.616596, -0.615218, -0.613827, -0.612416, -0.61099, -0.609555, -0.608122, -0.606697, -0.60529, -0.603898, -0.602516, -0.60114, -0.599766, -0.598392, -0.597014, -0.595638, -0.594262, -0.592886, -0.59151, -0.590132, -0.588747, -0.587351, -0.585953, -0.584565, -0.583196, -0.581857, -0.580561, -0.579296, -0.578045, -0.576789, -0.575509, -0.574187, -0.572823, -0.571433, -0.570038, -0.568655, -0.567304, -0.566, -0.564732, -0.563486, -0.562244, -0.560992, -0.559712, -0.558394, -0.557048, -0.555694, -0.55435, -0.553035, -0.551767, -0.550554, -0.549377, -0.548213, -0.547039, -0.545833, -0.544579, -0.543296, -0.541991, -0.540673, -0.539347, -0.538023, -0.536698, -0.535368, -0.534033, -0.532691, -0.531345, -0.529992, -0.528625, -0.527247, -0.525867, -0.524493, -0.523133, -0.521796, -0.520479, -0.519176, -0.517878, -0.51658, -0.515273, -0.513957, -0.512638, -0.511316, -0.509991, -0.508665, -0.507338, -0.506007, -0.504673, -0.503337, -0.502003, -0.500672, -0.499347, -0.498028, -0.496714, -0.495401, -0.494085, -0.492762, -0.491429, -0.490084, -0.488734, -0.487386, -0.486047, -0.484726, -0.483416, -0.482114, -0.480822, -0.479543, -0.478281, -0.477039, -0.475822, -0.474626, -0.473441, -0.47226, -0.471073, -0.469878, -0.468688, -0.467499, -0.466305, -0.465101, -0.463881, -0.462642, -0.461385, -0.460117, -0.458846, -0.457581, -0.456327, -0.455092, -0.453867, -0.452643, -0.451408, -0.450154, -0.448868, -0.447541, -0.44619, -0.444838, -0.443506, -0.442214, -0.44098, -0.439791, -0.438628, -0.437473, -0.436306, -0.43511, -0.433885, -0.432645, -0.431396, -0.430143, -0.428894, -0.427652, -0.426416, -0.425183, -0.423949, -0.422711, -0.421466, -0.420212, -0.418951, -0.417684, -0.416414, -0.415141, -0.413868, -0.412589, -0.411302, -0.410015, -0.408732, -0.407459, -0.406204, -0.404969, -0.403749, -0.402535, -0.401316, -0.400084, -0.398829, -0.397551, -0.396262, -0.394973, -0.393697, -0.392445, -0.391224, -0.390027, -0.388843, -0.387665, -0.386484, -0.385291, -0.384089, -0.382883, -0.381676, -0.380469, -0.379266, -0.378068, -0.37687, -0.375674, -0.374482, -0.373293, -0.372111, -0.370936, -0.369768, -0.368605, -0.367445, -0.366287, -0.365128, -0.36397, -0.362812, -0.361657, -0.360503, -0.359351, -0.358203, -0.357061, -0.355922, -0.354784, -0.353643, -0.352495, -0.351336, -0.350168, -0.348994, -0.34782, -0.346649, -0.345486, -0.344334, -0.343189, -0.342048, -0.340906, -0.339762, -0.338611, -0.337458, -0.336305, -0.335148, -0.333984, -0.33281, -0.331624, -0.330426, -0.329218, -0.328005, -0.326791, -0.32558, -0.324371, -0.323158, -0.321945, -0.320736, -0.319535, -0.318345, -0.317165, -0.315991, -0.314825, -0.313666, -0.312516, -0.311376, -0.310249, -0.309132, -0.30802, -0.30691, -0.305796, -0.304683, -0.30358, -0.302479, -0.301367, -0.300236, -0.299074, -0.297859, -0.296599, -0.295325, -0.294068, -0.292855, -0.291717, -0.290659, -0.289654, -0.28867, -0.287676, -0.286641, -0.28555, -0.284431, -0.28329, -0.282128, -0.280946, -0.279746, -0.278513, -0.277246, -0.27596, -0.274674, -0.273405, -0.272167, -0.270948, -0.26974, -0.268546, -0.26737, -0.266215, -0.265084, -0.263983, -0.262904, -0.261837, -0.260774, -0.259706, -0.258637, -0.257578, -0.256522, -0.255458, -0.254379, -0.253276, -0.252151, -0.251008, -0.249851, -0.248684, -0.247511, -0.246333, -0.245133, -0.243922, -0.242709, -0.241508, -0.240329, -0.239178, -0.238042, -0.236921, -0.235815, -0.234725, -0.233651, -0.232605, -0.231587, -0.230582, -0.229575, -0.228551, -0.227496, -0.226409, -0.225303, -0.22419, -0.223083, -0.221996, -0.22094, -0.219911, -0.218897, -0.217885, -0.216863, -0.215818, -0.214744, -0.213651, -0.212546, -0.211438, -0.210337, -0.209249, -0.208177, -0.207112, -0.20605, -0.204984, -0.203909, -0.202819, -0.201716, -0.200605, -0.19949, -0.198377, -0.197271, -0.196173, -0.195078, -0.193985, -0.192896, -0.191809, -0.190725, -0.189653, -0.188591, -0.187529, -0.186458, -0.185368, -0.18425, -0.183097, -0.181922, -0.180741, -0.179569, -0.17842, -0.1773, -0.17619, -0.175094, -0.174015, -0.172958, -0.171927, -0.170938, -0.169986, -0.169054, -0.168122, -0.167172, -0.166186, -0.165179, -0.164157, -0.163123, -0.162077, -0.161021, -0.159952, -0.158857, -0.157749, -0.15664, -0.155542, -0.15447, -0.153432, -0.152424, -0.151428, -0.150429, -0.149413, -0.148364, -0.147283, -0.146183, -0.145069, -0.14395, -0.142834, -0.141724, -0.140608, -0.139489, -0.138373, -0.137265, -0.136171, -0.135093, -0.134025, -0.132968, -0.131919, -0.130878, -0.129844, -0.128821, -0.127809, -0.126804, -0.125801, -0.124797, -0.123787, -0.122773, -0.121758, -0.120744, -0.119733, -0.118728, -0.117733, -0.11675, -0.115771, -0.114792, -0.113806, -0.112807, -0.111794, -0.110771, -0.109741, -0.108707, -0.107672, -0.106636, -0.105591, -0.104541, -0.103491, -0.102448, -0.10142, -0.100412, -0.0994198, -0.0984399, -0.0974673, -0.0964976, -0.0955265, -0.0945581, -0.0935982, -0.0926402, -0.0916777, -0.0907045, -0.0897139, -0.0887001, -0.0876694, -0.0866321, -0.0855982, -0.0845778, -0.0835811, -0.0826095, -0.0816517, -0.0806952, -0.0797277, -0.0787369, -0.0777107, -0.0766526, -0.075579, -0.0745061, -0.0734503, -0.0724281, -0.0714473, -0.0704955, -0.0695569, -0.0686153, -0.067655, -0.0666595, -0.0656228, -0.0645626, -0.0634995, -0.0624539, -0.0614458, -0.0604904, -0.0595764, -0.0586898, -0.0578174, -0.0569453, -0.0560601, -0.0551719, -0.0542917, -0.0534099, -0.0525163, -0.0516014, -0.0506555, -0.0496757, -0.0486708, -0.0476511, -0.0466261, -0.0456061, -0.044596, -0.0435836, -0.0425703, -0.0415587, -0.040552, -0.0395533, -0.0385637, -0.0375815, -0.0366045, -0.0356314, -0.0346604, -0.0336902, -0.0327247, -0.0317635, -0.0308037, -0.0298422, -0.0288762, -0.0279032, -0.026925, -0.025943, -0.0249582, -0.0239714, -0.0229839, -0.0219896, -0.0209822, -0.0199722, -0.0189704, -0.0179881, -0.0170357, -0.0161152, -0.0152188, -0.0143404, -0.0134736, -0.0126123, -0.0117534, -0.0109179, -0.0100977, -0.00927668, -0.00843894, -0.0075681, -0.00664104, -0.0056472, -0.00462252, -0.00360524, -0.00263304, -0.00174417 };