From b993d4b58dc42a4dcb510239adc5b1c879cea672 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:01:39 +0400 Subject: [PATCH] improve audio settings --- src/gui/settings.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 60d1b4d92..2b34596fb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -720,10 +720,15 @@ void FurnaceGUI::drawSettings() { CONFIG_SECTION("Audio") { // SUBSECTION OUTPUT CONFIG_SUBSECTION("Output"); + if (ImGui::BeginTable("##Output",2)) { + ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); #ifdef HAVE_JACK + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Backend"); - ImGui::SameLine(); + ImGui::TableNextColumn(); int prevAudioEngine=settings.audioEngine; if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { if (settings.audioEngine!=prevAudioEngine) { @@ -732,10 +737,12 @@ void FurnaceGUI::drawSettings() { } #endif + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (settings.audioEngine==DIV_AUDIO_SDL) { ImGui::AlignTextToFramePadding(); ImGui::Text("Driver"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { settings.sdlAudioDriver=""; @@ -752,9 +759,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Device"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { if (ImGui::Selectable("",settings.audioDevice.empty())) { @@ -768,9 +777,11 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Sample rate"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String sr=fmt::sprintf("%d",settings.audioRate); if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { SAMPLE_RATE_SELECTABLE(8000); @@ -785,9 +796,12 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (isProAudio[settings.audioEngine]) { + ImGui::AlignTextToFramePadding(); ImGui::Text("Outputs"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { if (settings.audioChans<1) settings.audioChans=1; if (settings.audioChans>16) settings.audioChans=16; @@ -795,7 +809,7 @@ void FurnaceGUI::drawSettings() { } else { ImGui::AlignTextToFramePadding(); ImGui::Text("Channels"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { CHANS_SELECTABLE(1); @@ -807,9 +821,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Buffer size"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { BUFFER_SIZE_SELECTABLE(64); @@ -820,6 +836,8 @@ void FurnaceGUI::drawSettings() { BUFFER_SIZE_SELECTABLE(2048); ImGui::EndCombo(); } + ImGui::EndTable(); + } bool lowLatencyB=settings.lowLatency; if (ImGui::Checkbox("Low-latency mode (experimental!)",&lowLatencyB)) {