@@ -34,8 +34,8 @@ namespace Kaixo::Gui {
3434 .graphics = g,
3535 .bounds = localDimensions (),
3636 .text = {
37- { " $setting- name" , settings.name },
38- { " $setting- value" , settings.value }
37+ { " $name" , settings.name },
38+ { " $value" , settings.value }
3939 },
4040 .state = state ()
4141 });
@@ -61,15 +61,65 @@ namespace Kaixo::Gui {
6161
6262 // ------------------------------------------------
6363
64+ std::size_t y = 0 ;
6465 // Entry& theme = add<Entry>({ 4, 32 + 0 * 24, Width - 8, 22 }, {
6566 // .name = "Theme",
6667 // .value = std::string(T.name()),
6768 // .click = [&theme] {
6869 // // Open theme
6970 // }
7071 // });
71-
72- add<Entry>({ 4 , 32 + 0 * 24 , Width - 8 , 22 }, {
72+
73+ add<Knob>({ 4 , 32 + (y++) * 24 , Width - 8 , 22 }, {
74+ .onchange = [&](ParamValue val) {
75+ constexpr int fftSizes[]{ 32 , 64 , 128 , 256 , 512 , 1024 , 2048 , 4096 , 8192 };
76+ int index = Math::clamp (normalToIndex (val, 9 ), 0 , 8 );
77+ Storage::set<int >(" fft-size" , index);
78+ settings.fftSizeChanged (fftSizes[index]);
79+ },
80+ .graphics = T.settings .entry ,
81+ .tooltipName = false ,
82+ .tooltipValue = false ,
83+ .name = " FFT Size" ,
84+ .steps = 9 ,
85+ .format = Formatters::Group<" 32" , " 64" , " 128" , " 256" , " 512" , " 1024" , " 2048" , " 4096" , " 8192" >,
86+ .transform = Transformers::Group<9 >,
87+ .resetValue = 6 .f / 8 .f
88+ }).value (Math::clamp (Storage::getOrDefault<int >(" fft-size" , 6 ), 0 , 8 ) / 8 .f );
89+
90+ add<Knob>({ 4 , 32 + (y++) * 24 , Width - 8 , 22 }, {
91+ .onchange = [&](ParamValue val) {
92+ constexpr int fftSizes[]{ 32 , 64 , 128 , 256 , 512 , 1024 , 2048 , 4096 , 8192 };
93+ int index = Math::clamp (normalToIndex (val, 9 ), 0 , 8 );
94+ Storage::set<int >(" fft-resolution" , index);
95+ settings.fftResolutionChanged (fftSizes[index]);
96+ },
97+ .graphics = T.settings .entry ,
98+ .tooltipName = false ,
99+ .tooltipValue = false ,
100+ .name = " FFT Resolution" ,
101+ .steps = 9 ,
102+ .format = Formatters::Group<" 32" , " 64" , " 128" , " 256" , " 512" , " 1024" , " 2048" , " 4096" , " 8192" >,
103+ .transform = Transformers::Group<9 >,
104+ .resetValue = 6 .f / 8 .f
105+ }).value (Math::clamp (Storage::getOrDefault<int >(" fft-resolution" , 6 ), 0 , 8 ) / 8 .f );
106+
107+ add<Knob>({ 4 , 32 + (y++) * 24 , Width - 8 , 22 }, {
108+ .onchange = [&](ParamValue val) {
109+ auto range = Transformers::Range<48 .f , 144 .f >.transform (val);
110+ Storage::set<float >(" fft-range" , range);
111+ settings.fftDbDepthChanged (range);
112+ },
113+ .graphics = T.settings .entry ,
114+ .tooltipName = false ,
115+ .tooltipValue = false ,
116+ .name = " FFT Range" ,
117+ .format = Formatters::Decibels,
118+ .transform = Transformers::Range<48 .f , 144 .f >,
119+ .resetValue = Transformers::Range<48 .f , 144 .f >.normalize (100 .f )
120+ }).value (Transformers::Range<48 .f , 144 .f >.normalize (Storage::getOrDefault<float >(" fft-range" , 100 .f )));
121+
122+ add<Entry>({ 4 , 32 + (y++) * 24 , Width - 8 , 22 }, {
73123 .name = " Output Folder" ,
74124 .value = AudioFile::generationLocation ().string (),
75125 .click = [] {
@@ -78,11 +128,11 @@ namespace Kaixo::Gui {
78128 }
79129 });
80130
81- add<Entry>({ 4 , 32 + 1 * 24 , Width - 8 , 22 }, {
131+ add<Entry>({ 4 , 32 + (y++) * 24 , Width - 8 , 22 }, {
82132 .name = " Version" ,
83133 .value = SYNTH_FullVersion,
84134 });
85-
135+
86136 // ------------------------------------------------
87137
88138 }
0 commit comments