summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-12-06 19:29:16 -0800
committerMichael Pavone <pavone@retrodev.com>2017-12-06 19:29:16 -0800
commit1cfa6057ad6cd25422c68132584a948c1ae7c05c (patch)
tree3b202cef4afec768096a0f2e15636d9715f75509
parent3dd1634466078dab5cc65fdd0f78215a2cbea591 (diff)
Fleshed out audio settings menu
--HG-- branch : nuklear_ui
-rw-r--r--nuklear_ui/blastem_nuklear.c67
1 files changed, 66 insertions, 1 deletions
diff --git a/nuklear_ui/blastem_nuklear.c b/nuklear_ui/blastem_nuklear.c
index 7087d42..5eb75f2 100644
--- a/nuklear_ui/blastem_nuklear.c
+++ b/nuklear_ui/blastem_nuklear.c
@@ -416,7 +416,72 @@ void view_video_settings(struct nk_context *context)
}
void view_audio_settings(struct nk_context *context)
{
-
+ const char *rates[] = {
+ "192000",
+ "96000",
+ "48000",
+ "44100",
+ "22050"
+ };
+ const char *sizes[] = {
+ "1024",
+ "512",
+ "256",
+ "128",
+ "64"
+ };
+ const uint32_t num_rates = sizeof(rates)/sizeof(*rates);
+ const uint32_t num_sizes = sizeof(sizes)/sizeof(*sizes);
+ static int32_t selected_rate = -1;
+ static int32_t selected_size = -1;
+ if (selected_rate < 0 || selected_size < 0) {
+ char *rate = tern_find_path_default(config, "audio\0rate\0", (tern_val){.ptrval = "48000"}, TVAL_PTR).ptrval;
+ for (uint32_t i = 0; i < num_rates; i++)
+ {
+ if (!strcmp(rate, rates[i])) {
+ selected_rate = i;
+ break;
+ }
+ }
+ if (selected_rate < 0) {
+ //better solution would be to add the custom rate to the rate list, but this is probably sufficient for now
+ selected_rate = 2;
+ }
+ char *size = tern_find_path_default(config, "audio\0buffer\0", (tern_val){.ptrval = "512"}, TVAL_PTR).ptrval;
+ for (uint32_t i = 0; i < num_sizes; i++)
+ {
+ if (!strcmp(size, sizes[i])) {
+ selected_size = i;
+ break;
+ }
+ }
+ if (selected_size < 0) {
+ //better solution would be to add the custom rate to the rate list, but this is probably sufficient for now
+ selected_size = 2;
+ }
+ }
+ uint32_t width = render_width();
+ uint32_t height = render_height();
+ if (nk_begin(context, "Audio Settings", nk_rect(0, 0, width, height), 0)) {
+ nk_layout_row_static(context, 30, width > 300 ? 300 : width, 2);
+ nk_label(context, "Rate in Hz", NK_TEXT_LEFT);
+ int32_t next_selected = nk_combo(context, rates, num_rates, selected_rate, 30, nk_vec2(300, 300));
+ if (next_selected != selected_rate) {
+ config = tern_insert_path(config, "audio\0rate\0", (tern_val){.ptrval = strdup(rates[next_selected])}, TVAL_PTR);
+ selected_rate = next_selected;
+ }
+ nk_label(context, "Buffer Samples", NK_TEXT_LEFT);
+ next_selected = nk_combo(context, sizes, num_sizes, selected_size, 30, nk_vec2(300, 300));
+ if (next_selected != selected_size) {
+ config = tern_insert_path(config, "audio\0buffer\0", (tern_val){.ptrval = strdup(sizes[next_selected])}, TVAL_PTR);
+ selected_size = next_selected;
+ }
+ settings_int_input(context, "Lowpass Cutoff Hz", "audio\0lowpass_cutoff\0", "3390");
+ if (nk_button_label(context, "Back")) {
+ pop_view();
+ }
+ nk_end(context);
+ }
}
void view_system_settings(struct nk_context *context)
{