@@ -206,7 +206,7 @@ class Processor : public clapeze::InstrumentProcessor<ParamsFeature::ProcessorHa
206206 // filter
207207 // range from 8hz to 12.5khz
208208 float filterNote = kitdsp::lerpf (0 .0f , 127 .0f , params.Get <Params::FilterCutoff>());
209- float res = params.Get <Params::FilterResonance>();
209+ float res = params.Get <Params::FilterResonance>() * 0 . 89f ; // 0.85 acts as cap, experimentally determined
210210 float filterSteepness = 0 .5f ; // steeper means "achieves self-oscillation quicker"
211211 float filterQ = 0 .5f * std::exp (filterSteepness * (res / (1 - res))); // [0, 1] -> [0.5, inf]
212212 float filterModMix = params.Get <Params::FilterModMix>();
@@ -302,15 +302,37 @@ class GuiApp : public kitgui::BaseApp {
302302 mScene ->Load (" assets/kitskeys.glb" );
303303 // TODO: to update all this if the viewport changes
304304 mScene ->SetViewport ({600 .0f , 400 .0f });
305+ mScene ->SetBrightness (0 .0025f ); // idk why magnum is so intense by default, to investigate
305306
306307 struct KnobSetupInfo {
307308 Params param;
308309 std::string node;
309310 };
310311 const std::vector<KnobSetupInfo> knobs{
311- {Params::PolyMode, " knob-mid-Davies-1900h" }, {Params::PolyCount, " knob-mid-Davies-1900h.001" },
312- {Params::OscOctave, " knob-mid-Davies-1900h.003" }, {Params::OscTune, " knob-mid-Davies-1900h.004" },
313- {Params::FilterCutoff, " knob-mid-Davies-1900h.006" }, {Params::FilterResonance, " knob-mid-Davies-1900h.005" },
312+ {Params::PolyMode, " knob-mid-Davies-1900h" },
313+ {Params::PolyCount, " knob-mid-Davies-1900h.001" },
314+ {Params::PolyChordType, " knob-mid-Davies-1900h.002" },
315+ {Params::OscOctave, " knob-mid-Davies-1900h.003" },
316+ {Params::OscTune, " knob-mid-Davies-1900h.004" },
317+ {Params::OscModMix, " knob-small-trimpot-R-0904N-L-25KC" },
318+ {Params::OscModAmount, " knob-small-trimpot-R-0904N-L-25KC.001" },
319+ {Params::FilterCutoff, " knob-mid-Davies-1900h.006" },
320+ {Params::FilterResonance, " knob-mid-Davies-1900h.005" },
321+ {Params::FilterModMix, " knob-small-trimpot-R-0904N-L-25KC.002" },
322+ {Params::FilterModAmount, " knob-small-trimpot-R-0904N-L-25KC.003" },
323+ {Params::LfoRate, " knob-mid-Davies-1900h.008" },
324+ {Params::LfoShape, " knob-mid-Davies-1900h.009" },
325+ {Params::EnvAttack, " knob-mid-Davies-1900h.010" },
326+ {Params::EnvDecay, " knob-mid-Davies-1900h.011" },
327+ {Params::EnvSustain, " knob-mid-Davies-1900h.012" },
328+ {Params::EnvRelease, " knob-mid-Davies-1900h.013" },
329+ {Params::VcaGain, " knob-mid-Davies-1900h.007" },
330+ {Params::VcaLfoAmount, " knob-small-trimpot-R-0904N-L-25KC.004" },
331+ };
332+
333+ // TODO
334+ const std::vector<KnobSetupInfo> toggles{
335+ {Params::VcaEnvDisabled, " switch-toggle" },
314336 };
315337
316338 // TODO: data-driven
@@ -367,6 +389,7 @@ class GuiApp : public kitgui::BaseApp {
367389 kitgui::DebugParam<ParamsFeature, Params::VcaLfoAmount>(mParams );
368390 }
369391 void OnUpdate () override {
392+ mParams .FlushFromAudio ();
370393 mScene ->Update ();
371394 // imgui
372395 if (ImGui::BeginMenuBar ()) {
@@ -379,12 +402,20 @@ class GuiApp : public kitgui::BaseApp {
379402 for (auto & knob : mKnobs ) {
380403 clap_id id = knob->GetParamId ();
381404 double raw = mParams .GetMainHandle ().GetRawValue (id);
405+
406+ auto pos = mScene ->GetObjectScreenPositionByName (knob->GetSceneNode ());
407+ knob->mShowDebug = mShowDebugWindow ;
382408 if (knob->Update (raw)) {
383409 mParams .GetMainHandle ().SetRawValue (id, raw);
384410 }
385411 // we assume the knob is at 12-o-clock, and knobs have 0.75turn(270deg) ranges
412+ auto normalizedValue = kitdsp::clamp ((raw - knob->mMin ) / (knob->mMax - knob->mMin ), 0.0 , 1.0 );
386413 constexpr float maxTurn = kitdsp::kPi * 2 .0f * 0 .75f ;
387- mScene ->SetObjectRotationByName (knob->GetSceneNode (), (static_cast <float >(raw) - 0 .5f ) * -maxTurn);
414+ mScene ->SetObjectRotationByName (knob->GetSceneNode (), (static_cast <float >(normalizedValue) - 0 .5f ) * -maxTurn);
415+ }
416+
417+ if (ImGui::IsKeyPressed (ImGuiKey_GraveAccent)) {
418+ mShowDebugWindow = !mShowDebugWindow ;
388419 }
389420
390421 if (mShowDebugWindow ) {
@@ -401,7 +432,7 @@ class GuiApp : public kitgui::BaseApp {
401432 ParamsFeature& mParams ;
402433 std::unique_ptr<kitgui::Scene> mScene ;
403434 std::vector<std::unique_ptr<kitgui::BaseParamKnob>> mKnobs ;
404- bool mShowDebugWindow = false ;
435+ bool mShowDebugWindow = true ;
405436};
406437#endif
407438
@@ -446,7 +477,7 @@ class Plugin : public InstrumentPlugin {
446477#if KITSBLIPS_ENABLE_GUI
447478 ConfigFeature<clapeze::AssetsFeature>(GetHost ());
448479 // aspect ratio 1.5
449- kitgui::SizeConfig cfg{600 , 400 , true , true };
480+ kitgui::SizeConfig cfg{600 , 400 , false , true };
450481 ConfigFeature<KitguiFeature>(
451482 GetHost (), [¶ms](kitgui::Context& ctx) { return std::make_unique<GuiApp>(ctx, params); }, cfg);
452483#endif
0 commit comments