feat: log-scale frequency control
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Filter.h"
|
|
||||||
#include "ADSR.h"
|
#include "ADSR.h"
|
||||||
|
#include "Filter.h"
|
||||||
#include "Synth.h"
|
#include "Synth.h"
|
||||||
#include "SynthGuiState.h"
|
#include "SynthGuiState.h"
|
||||||
#include "raylib.h"
|
#include "raylib.h"
|
||||||
@@ -21,7 +21,9 @@ class Renderer {
|
|||||||
void draw_adsr_panel(ADSR* adsr, ADSRGuiState& gui_adsr,
|
void draw_adsr_panel(ADSR* adsr, ADSRGuiState& gui_adsr,
|
||||||
const Rectangle& panel_bounds, float panel_y_offset);
|
const Rectangle& panel_bounds, float panel_y_offset);
|
||||||
void draw_second_panel(Rectangle& bounds);
|
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:
|
public:
|
||||||
Renderer(/* args */);
|
Renderer(/* args */);
|
||||||
~Renderer();
|
~Renderer();
|
||||||
|
|||||||
@@ -190,7 +190,8 @@ void Renderer::draw_second_panel(Rectangle& bounds) {
|
|||||||
GuiPanel(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;
|
float panel_y_offset = 0;
|
||||||
|
|
||||||
// Draw Filter Panel
|
// Draw Filter Panel
|
||||||
@@ -211,11 +212,11 @@ float Renderer::draw_filter_panel(Filter* filter, FilterGuiState& gui_filter, co
|
|||||||
.height = 25.f};
|
.height = 25.f};
|
||||||
|
|
||||||
// Frequency slider
|
// Frequency slider
|
||||||
float freq = gui_filter.freq;
|
float freq = log10f(gui_filter.freq);
|
||||||
char freq_slider_label[32];
|
char freq_slider_label[32];
|
||||||
snprintf(freq_slider_label, 10, "%.1f hz", freq);
|
snprintf(freq_slider_label, 10, "%.1f hz", powf(10.f, freq));
|
||||||
freq = GuiSlider(el_rect, freq_slider_label, "", freq, 0.0f, 16000.f);
|
freq = GuiSlider(el_rect, freq_slider_label, "", freq, 0.f, 4.f);
|
||||||
gui_filter.freq = freq;
|
gui_filter.freq = powf(10.f, freq);
|
||||||
el_rect.y += el_rect.height + el_spacing;
|
el_rect.y += el_rect.height + el_spacing;
|
||||||
|
|
||||||
// Resonance slider
|
// Resonance slider
|
||||||
|
|||||||
Reference in New Issue
Block a user