diff --git a/inc/Renderer.h b/inc/Renderer.h index c3906ad..e2e65dd 100644 --- a/inc/Renderer.h +++ b/inc/Renderer.h @@ -1,6 +1,6 @@ #pragma once -#include "Filter.h" #include "ADSR.h" +#include "Filter.h" #include "Synth.h" #include "SynthGuiState.h" #include "raylib.h" @@ -21,7 +21,9 @@ class Renderer { void draw_adsr_panel(ADSR* adsr, ADSRGuiState& gui_adsr, const Rectangle& panel_bounds, float panel_y_offset); void draw_second_panel(Rectangle& bounds); - float draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, const Rectangle& panel_bounds); + float draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, + const Rectangle& panel_bounds); + public: Renderer(/* args */); ~Renderer(); diff --git a/src/Renderer.cpp b/src/Renderer.cpp index 1360e62..393d784 100644 --- a/src/Renderer.cpp +++ b/src/Renderer.cpp @@ -190,7 +190,8 @@ void Renderer::draw_second_panel(Rectangle& bounds) { GuiPanel(bounds, ""); } -float Renderer::draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, const Rectangle& panel_bounds) { +float Renderer::draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, + const Rectangle& panel_bounds) { float panel_y_offset = 0; // Draw Filter Panel @@ -211,11 +212,11 @@ float Renderer::draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, co .height = 25.f}; // Frequency slider - float freq = gui_filter.freq; + float freq = log10f(gui_filter.freq); char freq_slider_label[32]; - snprintf(freq_slider_label, 10, "%.1f hz", freq); - freq = GuiSlider(el_rect, freq_slider_label, "", freq, 0.0f, 16000.f); - gui_filter.freq = freq; + snprintf(freq_slider_label, 10, "%.1f hz", powf(10.f, freq)); + freq = GuiSlider(el_rect, freq_slider_label, "", freq, 0.f, 4.f); + gui_filter.freq = powf(10.f, freq); el_rect.y += el_rect.height + el_spacing; // Resonance slider