diff --git a/Source/ChannelGroupsView.cpp b/Source/ChannelGroupsView.cpp index 5a7bd6172..3cf8e46f4 100644 --- a/Source/ChannelGroupsView.cpp +++ b/Source/ChannelGroupsView.cpp @@ -932,12 +932,6 @@ ChannelGroupsView::ChannelGroupsView(SonobusAudioProcessor& proc, bool peerMode, //bgColor = Colour::fromFloatRGBA(0.045f, 0.045f, 0.05f, 1.0f); bgColor = Colour::fromFloatRGBA(0.08f, 0.045f, 0.08f, 1.0f); - mInGainSlider = std::make_unique(Slider::LinearHorizontal, Slider::TextBoxAbove); - mInGainSlider->setName("ingain"); - mInGainSlider->setSliderSnapsToMousePosition(processor.getSlidersSnapToMousePosition()); - mInGainSlider->setTextBoxIsEditable(true); - mInGainSlider->setScrollWheelEnabled(false); - mAddButton = std::make_unique("+"); mAddButton->setTitle(TRANS("Add Input Group")); mAddButton->onClick = [this] { addGroupPressed(); }; diff --git a/Source/ChannelGroupsView.h b/Source/ChannelGroupsView.h index f3fe3bb3a..86e138f3c 100644 --- a/Source/ChannelGroupsView.h +++ b/Source/ChannelGroupsView.h @@ -435,7 +435,6 @@ public MultiTimer - std::unique_ptr mInGainSlider; std::unique_ptr mAddButton; std::unique_ptr mClearButton; std::unique_ptr mInReverbButton; diff --git a/Source/CrossPlatformUtils.h b/Source/CrossPlatformUtils.h index 0fe77e682..e61ce4520 100644 --- a/Source/CrossPlatformUtils.h +++ b/Source/CrossPlatformUtils.h @@ -20,4 +20,7 @@ void *binaryDataToUrlBookmark(const void * data, size_t size); juce::URL generateUpdatedURL (juce::URL& urlToUse); +bool getIsInputGainSettable(); +float getInputGain(); +bool setInputGain(float gain); #endif diff --git a/Source/CrossPlatformUtilsIOS.mm b/Source/CrossPlatformUtilsIOS.mm index 40b82d91a..cc3e5cf7f 100644 --- a/Source/CrossPlatformUtilsIOS.mm +++ b/Source/CrossPlatformUtilsIOS.mm @@ -15,6 +15,8 @@ +#import + #import #include "../JuceLibraryCode/JuceHeader.h" @@ -109,5 +111,21 @@ bool urlBookmarkToBinaryData(void * bookmark, const void * & retdata, size_t & r } +bool getIsInputGainSettable() +{ + auto* session = [AVAudioSession sharedInstance]; + return [session isInputGainSettable]; +} + +float getInputGain() { + auto* session = [AVAudioSession sharedInstance]; + return [session inputGain]; +} + +bool setInputGain(float gain) { + auto* session = [AVAudioSession sharedInstance]; + NSError* error; + return [session setInputGain:gain error:&error]; +} #endif diff --git a/Source/SonobusPluginEditor.cpp b/Source/SonobusPluginEditor.cpp index e4c60bbbc..95dfc779b 100644 --- a/Source/SonobusPluginEditor.cpp +++ b/Source/SonobusPluginEditor.cpp @@ -21,6 +21,8 @@ #include "LatencyMatchView.h" #include "SuggestNewGroupView.h" #include "SonoCallOutBox.h" +#include "CrossPlatformUtils.h" + #include #if JUCE_ANDROID @@ -423,12 +425,18 @@ SonobusAudioProcessorEditor::SonobusAudioProcessorEditor (SonobusAudioProcessor& mPeerLayoutMinimalButton->setRadioGroupId(PeerLayoutRadioGroupId); +#if JUCE_IOS mInGainSlider = std::make_unique(Slider::LinearHorizontal, Slider::TextBoxAbove); mInGainSlider->setName("ingain"); mInGainSlider->setTitle(TRANS("In Level")); + mInGainSlider->addListener(this); mInGainSlider->setSliderSnapsToMousePosition(processor.getSlidersSnapToMousePosition()); mInGainSlider->setTextBoxIsEditable(true); mInGainSlider->setScrollWheelEnabled(false); + mInGainSlider->setRange(0.0, 1.0); + mInGainSlider->setNumDecimalPlacesToDisplay(2); + mInGainSlider->setValue(getInputGain()); +#endif mInMixerButton = std::make_unique("mix"); @@ -630,25 +638,31 @@ SonobusAudioProcessorEditor::SonobusAudioProcessorEditor (SonobusAudioProcessor& mOutGainSlider->setSliderSnapsToMousePosition(processor.getSlidersSnapToMousePosition()); mOutGainSlider->setScrollWheelEnabled(false); +#if JUCE_IOS configLevelSlider(mInGainSlider.get()); +#endif configLevelSlider(mDrySlider.get()); configLevelSlider(mOutGainSlider.get()); mOutGainSlider->setTextBoxIsEditable(true); mDrySlider->setTextBoxIsEditable(true); +#if JUCE_IOS //mInGainSlider->setTextBoxIsEditable(true); +#endif mDrySlider->setWantsKeyboardFocus(true); mOutGainSlider->setWantsKeyboardFocus(true); +#if JUCE_IOS mInGainLabel = std::make_unique