]> git.sesse.net Git - nageru/commitdiff
Start adding some faders for the miniview (they don't do much yet).
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 29 Jul 2016 13:20:24 +0000 (15:20 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 19 Oct 2016 22:55:44 +0000 (00:55 +0200)
.gitignore
Makefile
ellipsis_label.h [new file with mode: 0644]
main.cpp
mainwindow.cpp
mainwindow.h
ui_audio_miniview.ui [new file with mode: 0644]
ui_mainwindow.ui

index 4a08b62cfaf058e00000cc370badd1530699b239..40faeedba019bdda59c15dbd405cd673da09d97c 100644 (file)
@@ -2,6 +2,7 @@
 *.o
 *.moc.cpp
 ui_aboutdialog.h
+ui_audio_miniview.h
 ui_display.h
 ui_mainwindow.h
 nageru
index 5e9029dbe513c75eb46031ed30d7637dd0f823f0..6dc2ade9b47cfdec85fc04dc6db2473187d8ef7a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@ LDLIBS=$(shell pkg-config --libs $(PKG_MODULES)) -pthread -lva -lva-drm -lva-x11
 
 # Qt objects
 OBJS=glwidget.o main.o mainwindow.o vumeter.o lrameter.o vu_common.o correlation_meter.o aboutdialog.o
-OBJS += glwidget.moc.o mainwindow.moc.o vumeter.moc.o lrameter.moc.o correlation_meter.moc.o aboutdialog.moc.o
+OBJS += glwidget.moc.o mainwindow.moc.o vumeter.moc.o lrameter.moc.o correlation_meter.moc.o aboutdialog.moc.o ellipsis_label.moc.o
 
 # Mixer objects
 OBJS += mixer.o pbo_frame_allocator.o context.o ref_counted_frame.o theme.o resampling_queue.o httpd.o ebu_r128_proc.o flags.o image_input.o stereocompressor.o filter.o alsa_output.o correlation_measurer.o disk_space_estimator.o
@@ -46,7 +46,7 @@ all: nageru
 nageru: $(OBJS)
        $(CXX) -o $@ $^ $(LDFLAGS) $(LDLIBS)
 
-mainwindow.o: mainwindow.cpp ui_mainwindow.h ui_display.h
+mainwindow.o: mainwindow.cpp ui_mainwindow.h ui_display.h ui_audio_miniview.h
 
 aboutdialog.o: aboutdialog.cpp ui_aboutdialog.h
 
@@ -54,7 +54,7 @@ DEPS=$(OBJS:.o=.d)
 -include $(DEPS)
 
 clean:
-       $(RM) $(OBJS) $(DEPS) nageru ui_aboutdialog.h ui_mainwindow.h ui_display.h ui_about.h aboutdialog.moc.cpp correlation_meter.moc.cpp lrameter.moc.cpp vumeter.moc.cpp glwidget.moc.cpp mainwindow.moc.cpp window.moc.cpp chain-*.frag *.dot
+       $(RM) $(OBJS) $(DEPS) nageru ui_aboutdialog.h ui_mainwindow.h ui_display.h ui_about.h ui_audio_miniview.h aboutdialog.moc.cpp correlation_meter.moc.cpp lrameter.moc.cpp vumeter.moc.cpp glwidget.moc.cpp mainwindow.moc.cpp window.moc.cpp chain-*.frag *.dot
 
 PREFIX=/usr/local
 install:
diff --git a/ellipsis_label.h b/ellipsis_label.h
new file mode 100644 (file)
index 0000000..bec3799
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef _ELLIPSIS_LABEL_H
+#define _ELLIPSIS_LABEL_H 1
+
+#include <QLabel>
+
+class EllipsisLabel : public QLabel {
+       Q_OBJECT
+
+public:
+       EllipsisLabel(QWidget *parent) : QLabel(parent) {}
+
+       void setFullText(const QString &s)
+       {
+               full_text = s;
+               updateEllipsisText();
+       }
+
+protected:
+       void resizeEvent(QResizeEvent *event) override
+       {
+               QLabel::resizeEvent(event);
+               updateEllipsisText();
+       }
+
+private:
+       void updateEllipsisText()
+       {
+               QFontMetrics metrics(this->font());
+               this->setText(metrics.elidedText(full_text, Qt::ElideRight, this->width()));
+       }
+
+       QString full_text;
+};
+
+#endif  // !defined(_ELLIPSIS_LABEL_H)
index dd94d7335cd80065a5290829404fc140fc7ffd69..37ac4a4ae226943cfb279ddc857f649770427fdd 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -53,7 +53,7 @@ int main(int argc, char *argv[])
        global_share_widget = new QGLWidget();
 
        MainWindow mainWindow;
-       mainWindow.resize(QSize(1500, 810));
+       mainWindow.resize(QSize(1500, 850));
        mainWindow.show();
 
        app.installEventFilter(&mainWindow);  // For white balance color picking.
index 841952f8b28eda6b2c83483aedf717e00ef6c834..9ae13fb071a13681998ecb3035752cb46edb09bf 100644 (file)
@@ -25,6 +25,7 @@
 #include "lrameter.h"
 #include "mixer.h"
 #include "post_to_main_thread.h"
+#include "ui_audio_miniview.h"
 #include "ui_display.h"
 #include "ui_mainwindow.h"
 #include "vumeter.h"
@@ -174,6 +175,21 @@ void MainWindow::mixer_created(Mixer *mixer)
                connect(ui_display->wb_button, &QPushButton::clicked, bind(&MainWindow::wb_button_clicked, this, i));
        }
 
+       // Audio miniview: Make some channels!
+       for (unsigned i = 0; i < num_previews; ++i) {
+               Mixer::Output output = Mixer::Output(Mixer::OUTPUT_INPUT0 + i);
+
+               QWidget *channel = new QWidget(this);
+               Ui::AudioMiniView *ui_audio_miniview = new Ui::AudioMiniView;
+               ui_audio_miniview->setupUi(channel);
+               ui_audio_miniview->channel_desc_label->setFullText(
+                       QString::fromStdString(mixer->get_channel_name(output)));
+               ui->faders->addWidget(channel);
+
+               connect(ui_audio_miniview->fader, &QAbstractSlider::valueChanged,
+                       bind(&MainWindow::mini_fader_changed, this, ui_audio_miniview, i, _1));
+       }
+
        // TODO: Fetch all of the values these for completeness,
        // not just the enable knobs implied by flags.
        ui->locut_enabled->setChecked(global_mixer->get_locut_enabled());
@@ -342,6 +358,15 @@ void MainWindow::compressor_threshold_knob_changed(int value)
                QString::fromStdString(format_db(threshold_dbfs, DB_WITH_SIGN)));
 }
 
+void MainWindow::mini_fader_changed(Ui::AudioMiniView *ui, int channel, int value)
+{
+       float volume_dbfs = value * 0.1f;
+
+       char buf[256];
+       snprintf(buf, sizeof(buf), "%+.1f dB", volume_dbfs);
+       ui->fader_label->setText(buf);
+}
+
 void MainWindow::reset_meters_button_clicked()
 {
        global_mixer->reset_meters();
@@ -407,8 +432,8 @@ void MainWindow::relayout()
        }
        remaining_height -= me_height + ui->vertical_layout->spacing();
 
-       double audiostrip_height = ui->audiostrip->geometry().height();
-       remaining_height -= audiostrip_height + ui->vertical_layout->spacing();
+       // Space between the M/E displays and the audio strip.
+       remaining_height -= ui->vertical_layout->spacing();
 
        // The previews will be constrained by the remaining height, and the width.
        double preview_label_height = previews[0]->title_bar->geometry().height() +
@@ -418,9 +443,8 @@ void MainWindow::relayout()
        remaining_height -= preview_height + preview_label_height + ui->vertical_layout->spacing();
 
        ui->vertical_layout->setStretch(0, lrintf(me_height));
-       ui->vertical_layout->setStretch(1, 0);  // Don't stretch the audiostrip.
-       ui->vertical_layout->setStretch(2, max<int>(1, remaining_height));  // Spacer.
-       ui->vertical_layout->setStretch(3, lrintf(preview_height + preview_label_height));
+       ui->vertical_layout->setStretch(1, lrintf(remaining_height));  // Audio strip.
+       ui->vertical_layout->setStretch(2, lrintf(preview_height + preview_label_height));
 
        // Set the widths for the previews.
        double preview_width = preview_height * 16.0 / 9.0;
index 89c5e13cd46252da4e69f0c50c5f3d28c8914858..c44c0f2c22cbfb86e479d020e4c3ec7d179bfe06 100644 (file)
@@ -13,6 +13,7 @@ class GLWidget;
 class QResizeEvent;
 
 namespace Ui {
+class AudioMiniView;
 class Display;
 class MainWindow;
 }  // namespace Ui
@@ -49,6 +50,7 @@ public slots:
        void cutoff_knob_changed(int value);
        void limiter_threshold_knob_changed(int value);
        void compressor_threshold_knob_changed(int value);
+       void mini_fader_changed(Ui::AudioMiniView *ui, int channel, int value);
        void reset_meters_button_clicked();
        void relayout();
 
diff --git a/ui_audio_miniview.ui b/ui_audio_miniview.ui
new file mode 100644 (file)
index 0000000..25e458c
--- /dev/null
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AudioMiniView</class>
+ <widget class="QWidget" name="AudioMiniView">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>139</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>139</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>139</width>
+    <height>16777215</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="main_vertical_layout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QFrame" name="frame">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>1</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="autoFillBackground">
+      <bool>true</bool>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::Panel</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="lineWidth">
+      <number>0</number>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <property name="spacing">
+       <number>6</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <property name="spacing">
+         <number>0</number>
+        </property>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_2">
+          <property name="spacing">
+           <number>6</number>
+          </property>
+          <item>
+           <widget class="EllipsisLabel" name="channel_desc_label">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Channel description</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="bottom_layout" stretch="1,1">
+            <property name="spacing">
+             <number>0</number>
+            </property>
+            <item>
+             <layout class="QVBoxLayout" name="vu_meter_layout" stretch="1,0">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="bottomMargin">
+               <number>4</number>
+              </property>
+              <item>
+               <layout class="QHBoxLayout" name="vu_meter_centerer">
+                <property name="spacing">
+                 <number>0</number>
+                </property>
+                <property name="bottomMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="VUMeter" name="vu_meter_meter" native="true">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>16</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="sizeIncrement">
+                   <size>
+                    <width>1</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="baseSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="palette">
+                   <palette>
+                    <active>
+                     <colorrole role="Base">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>255</red>
+                        <green>255</green>
+                        <blue>255</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                     <colorrole role="Window">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>5</red>
+                        <green>239</green>
+                        <blue>111</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                    </active>
+                    <inactive>
+                     <colorrole role="Base">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>255</red>
+                        <green>255</green>
+                        <blue>255</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                     <colorrole role="Window">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>5</red>
+                        <green>239</green>
+                        <blue>111</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                    </inactive>
+                    <disabled>
+                     <colorrole role="Base">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>5</red>
+                        <green>239</green>
+                        <blue>111</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                     <colorrole role="Window">
+                      <brush brushstyle="SolidPattern">
+                       <color alpha="255">
+                        <red>5</red>
+                        <green>239</green>
+                        <blue>111</blue>
+                       </color>
+                      </brush>
+                     </colorrole>
+                    </disabled>
+                   </palette>
+                  </property>
+                  <property name="autoFillBackground">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="peak_display_label">
+                <property name="minimumSize">
+                 <size>
+                  <width>30</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="text">
+                 <string>-0.0</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item>
+             <layout class="QVBoxLayout" name="fader_layout">
+              <property name="bottomMargin">
+               <number>4</number>
+              </property>
+              <item>
+               <layout class="QHBoxLayout" name="fader_centerer">
+                <property name="spacing">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QSlider" name="fader">
+                  <property name="minimum">
+                   <number>-390</number>
+                  </property>
+                  <property name="maximum">
+                   <number>60</number>
+                  </property>
+                  <property name="pageStep">
+                   <number>10</number>
+                  </property>
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="tickPosition">
+                   <enum>QSlider::TicksBothSides</enum>
+                  </property>
+                  <property name="tickInterval">
+                   <number>30</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="fader_label">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>30</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="lineWidth">
+                 <number>0</number>
+                </property>
+                <property name="text">
+                 <string>+0.0 dB</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="Line" name="line">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>VUMeter</class>
+   <extends>QWidget</extends>
+   <header>vumeter.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>EllipsisLabel</class>
+   <extends>QLabel</extends>
+   <header>ellipsis_label.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index 8c923112150248600fefda3795f1c727860de74b..e006c9aeee1607204ddb7b728517434fca5febbd 100644 (file)
@@ -25,7 +25,7 @@
    </property>
    <layout class="QGridLayout" name="gridLayout">
     <item row="0" column="0">
-     <layout class="QVBoxLayout" name="vertical_layout" stretch="0,0,0,0">
+     <layout class="QVBoxLayout" name="vertical_layout" stretch="0,0,0">
       <item>
        <layout class="QHBoxLayout" name="me_displays" stretch="0,0,0,0">
         <item>
        </layout>
       </item>
       <item>
-       <layout class="QGridLayout" name="audiostrip" columnstretch="0,0,0,0,0,0">
-        <property name="bottomMargin">
+       <layout class="QHBoxLayout" name="audiostrip" stretch="0,1,0">
+        <property name="spacing">
+         <number>6</number>
+        </property>
+        <property name="topMargin">
          <number>0</number>
         </property>
-        <item row="1" column="1">
-         <widget class="QDial" name="gainstaging_knob">
-          <property name="minimumSize">
-           <size>
-            <width>64</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>16777215</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="minimum">
-           <number>-300</number>
-          </property>
-          <property name="maximum">
-           <number>300</number>
-          </property>
-          <property name="notchTarget">
-           <double>60.000000000000000</double>
-          </property>
-          <property name="notchesVisible">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="1">
-         <widget class="QLabel" name="gainstaging_db_display">
-          <property name="text">
-           <string>-0.0 dB</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="QLabel" name="gainstaging_label">
-          <property name="text">
-           <string>Gain staging</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
+        <item>
+         <layout class="QHBoxLayout" name="faders">
+          <property name="sizeConstraint">
+           <enum>QLayout::SetFixedSize</enum>
           </property>
-         </widget>
+         </layout>
         </item>
-        <item row="1" column="5">
-         <spacer name="horizontalSpacer_2">
+        <item>
+         <spacer name="horizontalSpacer_3">
           <property name="orientation">
            <enum>Qt::Horizontal</enum>
           </property>
           </property>
          </spacer>
         </item>
-        <item row="3" column="1">
-         <widget class="QCheckBox" name="gainstaging_auto_checkbox">
-          <property name="text">
-           <string>Auto</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QDial" name="locut_cutoff_knob">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="minimumSize">
-           <size>
-            <width>64</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>16777215</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximum">
-           <number>60</number>
-          </property>
-          <property name="value">
-           <number>26</number>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="3">
-         <widget class="QCheckBox" name="limiter_enabled">
-          <property name="text">
-           <string>Enabled</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="0">
-         <widget class="QLabel" name="locut_cutoff_label">
-          <property name="text">
-           <string>Lo-cut (24dB/oct)</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="0">
-         <widget class="QLabel" name="locut_cutoff_display">
-          <property name="text">
-           <string>120 Hz</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="3">
-         <widget class="QDial" name="limiter_threshold_knob">
-          <property name="minimumSize">
-           <size>
-            <width>64</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>16777215</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="minimum">
-           <number>-400</number>
-          </property>
-          <property name="maximum">
-           <number>0</number>
-          </property>
-          <property name="value">
-           <number>-140</number>
-          </property>
-          <property name="notchTarget">
-           <double>30.000000000000000</double>
-          </property>
-          <property name="notchesVisible">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="3">
-         <widget class="QLabel" name="limiter_threshold_label">
-          <property name="text">
-           <string>Limiter threshold</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2">
-         <widget class="QLabel" name="compressor_threshold_label">
-          <property name="text">
-           <string>Compr. threshold</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="3">
-         <widget class="QLabel" name="limiter_threshold_db_display">
-          <property name="text">
-           <string>-14.0 dB</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="2">
-         <widget class="QDial" name="compressor_threshold_knob">
-          <property name="minimumSize">
-           <size>
-            <width>64</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>16777215</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="minimum">
-           <number>-400</number>
-          </property>
-          <property name="maximum">
+        <item>
+         <layout class="QGridLayout" name="master_audio_strip" columnstretch="0,0,0,0,0,0">
+          <property name="bottomMargin">
            <number>0</number>
           </property>
-          <property name="value">
-           <number>-260</number>
-          </property>
-          <property name="notchTarget">
-           <double>30.000000000000000</double>
-          </property>
-          <property name="notchesVisible">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="2">
-         <widget class="QCheckBox" name="compressor_enabled">
-          <property name="text">
-           <string>Enabled</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="2">
-         <widget class="QLabel" name="compressor_threshold_db_display">
-          <property name="text">
-           <string>-26.0 dB</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="4">
-         <widget class="QLabel" name="makeup_gain_label">
-          <property name="text">
-           <string>Makeup gain</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="4">
-         <widget class="QDial" name="makeup_gain_knob">
-          <property name="minimumSize">
-           <size>
-            <width>64</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>16777215</width>
-            <height>64</height>
-           </size>
-          </property>
-          <property name="minimum">
-           <number>-300</number>
-          </property>
-          <property name="maximum">
-           <number>300</number>
-          </property>
-          <property name="notchTarget">
-           <double>60.000000000000000</double>
-          </property>
-          <property name="notchesVisible">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="4">
-         <widget class="QLabel" name="makeup_gain_db_display">
-          <property name="text">
-           <string>-0.0 dB</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="4">
-         <widget class="QCheckBox" name="makeup_gain_auto_checkbox">
-          <property name="text">
-           <string>Auto</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="0">
-         <widget class="QCheckBox" name="locut_enabled">
-          <property name="text">
-           <string>Enabled</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
+          <item row="3" column="5">
+           <widget class="QLabel" name="makeup_gain_db_display">
+            <property name="text">
+             <string>-0.0 dB</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="3">
+           <widget class="QCheckBox" name="compressor_enabled">
+            <property name="text">
+             <string>Enabled</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="4">
+           <widget class="QCheckBox" name="limiter_enabled">
+            <property name="text">
+             <string>Enabled</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="2">
+           <widget class="QLabel" name="gainstaging_db_display">
+            <property name="text">
+             <string>-0.0 dB</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="QLabel" name="limiter_threshold_db_display">
+            <property name="text">
+             <string>-14.0 dB</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="QLabel" name="locut_cutoff_display">
+            <property name="text">
+             <string>120 Hz</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="QCheckBox" name="locut_enabled">
+            <property name="text">
+             <string>Enabled</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="3">
+           <widget class="QLabel" name="compressor_threshold_db_display">
+            <property name="text">
+             <string>-26.0 dB</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QDial" name="gainstaging_knob">
+            <property name="minimumSize">
+             <size>
+              <width>64</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>-300</number>
+            </property>
+            <property name="maximum">
+             <number>300</number>
+            </property>
+            <property name="notchTarget">
+             <double>60.000000000000000</double>
+            </property>
+            <property name="notchesVisible">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="QDial" name="compressor_threshold_knob">
+            <property name="minimumSize">
+             <size>
+              <width>64</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>-400</number>
+            </property>
+            <property name="maximum">
+             <number>0</number>
+            </property>
+            <property name="value">
+             <number>-260</number>
+            </property>
+            <property name="notchTarget">
+             <double>30.000000000000000</double>
+            </property>
+            <property name="notchesVisible">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="5">
+           <widget class="QCheckBox" name="makeup_gain_auto_checkbox">
+            <property name="text">
+             <string>Auto</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="2">
+           <widget class="QCheckBox" name="gainstaging_auto_checkbox">
+            <property name="text">
+             <string>Auto</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="4">
+           <widget class="QDial" name="limiter_threshold_knob">
+            <property name="minimumSize">
+             <size>
+              <width>64</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>-400</number>
+            </property>
+            <property name="maximum">
+             <number>0</number>
+            </property>
+            <property name="value">
+             <number>-140</number>
+            </property>
+            <property name="notchTarget">
+             <double>30.000000000000000</double>
+            </property>
+            <property name="notchesVisible">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="5">
+           <widget class="QLabel" name="makeup_gain_label">
+            <property name="text">
+             <string>Makeup gain</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="QDial" name="locut_cutoff_knob">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>64</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximum">
+             <number>60</number>
+            </property>
+            <property name="value">
+             <number>26</number>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="5">
+           <widget class="QDial" name="makeup_gain_knob">
+            <property name="minimumSize">
+             <size>
+              <width>64</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>64</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>-300</number>
+            </property>
+            <property name="maximum">
+             <number>300</number>
+            </property>
+            <property name="notchTarget">
+             <double>60.000000000000000</double>
+            </property>
+            <property name="notchesVisible">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <widget class="QLabel" name="limiter_threshold_label">
+            <property name="text">
+             <string>Limiter threshold</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QLabel" name="compressor_threshold_label">
+            <property name="text">
+             <string>Compr. threshold</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="gainstaging_label">
+            <property name="text">
+             <string>Gain staging</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="QLabel" name="locut_cutoff_label">
+            <property name="text">
+             <string>Lo-cut (24dB/oct)</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <spacer name="verticalSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="5" column="1">
+           <spacer name="verticalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
         </item>
        </layout>
       </item>
-      <item>
-       <spacer name="verticalSpacer">
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeType">
-         <enum>QSizePolicy::Preferred</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>20</width>
-          <height>40</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
       <item>
        <layout class="QHBoxLayout" name="preview_displays" stretch="0">
         <property name="topMargin">