Added loopstation sample widgets
This commit is contained in:
@ -40,6 +40,8 @@ SOURCES += \
|
||||
widgets/drumpadsamplewidget.cpp \
|
||||
widgets/drumpadwidget.cpp \
|
||||
widgets/loopstationpresetdetailwidget.cpp \
|
||||
widgets/loopstationsampleswidget.cpp \
|
||||
widgets/loopstationsamplewidget.cpp \
|
||||
widgets/loopstationwidget.cpp \
|
||||
widgets/mainwindow.cpp \
|
||||
widgets/midibutton.cpp \
|
||||
@ -80,6 +82,8 @@ HEADERS += \
|
||||
widgets/drumpadsamplewidget.h \
|
||||
widgets/drumpadwidget.h \
|
||||
widgets/loopstationpresetdetailwidget.h \
|
||||
widgets/loopstationsampleswidget.h \
|
||||
widgets/loopstationsamplewidget.h \
|
||||
widgets/loopstationwidget.h \
|
||||
widgets/mainwindow.h \
|
||||
widgets/midibutton.h \
|
||||
@ -98,6 +102,8 @@ FORMS += \
|
||||
widgets/drumpadsamplewidget.ui \
|
||||
widgets/drumpadwidget.ui \
|
||||
widgets/loopstationpresetdetailwidget.ui \
|
||||
widgets/loopstationsampleswidget.ui \
|
||||
widgets/loopstationsamplewidget.ui \
|
||||
widgets/loopstationwidget.ui \
|
||||
widgets/mainwindow.ui \
|
||||
widgets/sequencerwidget.ui \
|
||||
|
@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include <memory>
|
||||
#include <array>
|
||||
#include <functional>
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "drumpadpresets.h"
|
||||
|
||||
namespace Ui { class DrumPadSamplesWidget; }
|
||||
|
@ -13,99 +13,95 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="topMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬆</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬇</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButtonRefresh">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>↻</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="presetsView">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="DrumPadPresetDetailWidget" name="presetDetailWidget">
|
||||
<attribute name="title">
|
||||
<string>Properties</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QTreeView" name="filesView">
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="verticalLayoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬆</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬇</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButtonRefresh">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>↻</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="presetsView">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>Samples</string>
|
||||
</attribute>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="DrumPadPresetDetailWidget" name="presetDetailWidget">
|
||||
<attribute name="title">
|
||||
<string>Properties</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QTreeView" name="filesView">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>Samples</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
|
106
widgets/loopstationsampleswidget.cpp
Normal file
106
widgets/loopstationsampleswidget.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
#include "loopstationsampleswidget.h"
|
||||
#include "ui_loopstationsampleswidget.h"
|
||||
|
||||
LoopStationSamplesWidget::LoopStationSamplesWidget(QWidget *parent) :
|
||||
QWidget{parent},
|
||||
m_ui{std::make_unique<Ui::LoopStationSamplesWidget>()}
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
|
||||
LoopStationSamplesWidget::~LoopStationSamplesWidget() = default;
|
||||
|
||||
void LoopStationSamplesWidget::loadSettings(DrumMachineSettings &settings)
|
||||
{
|
||||
Q_UNUSED(settings)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::setPreset(const loopstation_presets::Preset &preset)
|
||||
{
|
||||
Q_UNUSED(preset)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::midiReceived(const midi::MidiMessage &message)
|
||||
{
|
||||
Q_UNUSED(message)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::writeSamples(frame_t *begin, frame_t *end)
|
||||
{
|
||||
Q_UNUSED(begin)
|
||||
Q_UNUSED(end)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
||||
{
|
||||
Q_UNUSED(networkAccessManager)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::injectDecodingThread(QThread &thread)
|
||||
{
|
||||
Q_UNUSED(thread)
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::unsendColors()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void LoopStationSamplesWidget::sendColors()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::array<std::reference_wrapper<LoopStationSampleWidget>, 48> LoopStationSamplesWidget::getWidgets()
|
||||
{
|
||||
return {
|
||||
std::ref(*m_ui->sampleWidget0),
|
||||
std::ref(*m_ui->sampleWidget1),
|
||||
std::ref(*m_ui->sampleWidget2),
|
||||
std::ref(*m_ui->sampleWidget3),
|
||||
std::ref(*m_ui->sampleWidget4),
|
||||
std::ref(*m_ui->sampleWidget5),
|
||||
std::ref(*m_ui->sampleWidget6),
|
||||
std::ref(*m_ui->sampleWidget7),
|
||||
std::ref(*m_ui->sampleWidget8),
|
||||
std::ref(*m_ui->sampleWidget9),
|
||||
std::ref(*m_ui->sampleWidget10),
|
||||
std::ref(*m_ui->sampleWidget11),
|
||||
std::ref(*m_ui->sampleWidget12),
|
||||
std::ref(*m_ui->sampleWidget13),
|
||||
std::ref(*m_ui->sampleWidget14),
|
||||
std::ref(*m_ui->sampleWidget15),
|
||||
std::ref(*m_ui->sampleWidget16),
|
||||
std::ref(*m_ui->sampleWidget17),
|
||||
std::ref(*m_ui->sampleWidget18),
|
||||
std::ref(*m_ui->sampleWidget19),
|
||||
std::ref(*m_ui->sampleWidget20),
|
||||
std::ref(*m_ui->sampleWidget21),
|
||||
std::ref(*m_ui->sampleWidget22),
|
||||
std::ref(*m_ui->sampleWidget23),
|
||||
std::ref(*m_ui->sampleWidget24),
|
||||
std::ref(*m_ui->sampleWidget25),
|
||||
std::ref(*m_ui->sampleWidget26),
|
||||
std::ref(*m_ui->sampleWidget27),
|
||||
std::ref(*m_ui->sampleWidget28),
|
||||
std::ref(*m_ui->sampleWidget29),
|
||||
std::ref(*m_ui->sampleWidget30),
|
||||
std::ref(*m_ui->sampleWidget31),
|
||||
std::ref(*m_ui->sampleWidget32),
|
||||
std::ref(*m_ui->sampleWidget33),
|
||||
std::ref(*m_ui->sampleWidget34),
|
||||
std::ref(*m_ui->sampleWidget35),
|
||||
std::ref(*m_ui->sampleWidget36),
|
||||
std::ref(*m_ui->sampleWidget37),
|
||||
std::ref(*m_ui->sampleWidget38),
|
||||
std::ref(*m_ui->sampleWidget39),
|
||||
std::ref(*m_ui->sampleWidget40),
|
||||
std::ref(*m_ui->sampleWidget41),
|
||||
std::ref(*m_ui->sampleWidget42),
|
||||
std::ref(*m_ui->sampleWidget43),
|
||||
std::ref(*m_ui->sampleWidget44),
|
||||
std::ref(*m_ui->sampleWidget45),
|
||||
std::ref(*m_ui->sampleWidget46),
|
||||
std::ref(*m_ui->sampleWidget47),
|
||||
};
|
||||
}
|
47
widgets/loopstationsampleswidget.h
Normal file
47
widgets/loopstationsampleswidget.h
Normal file
@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include <memory>
|
||||
#include <array>
|
||||
#include <functional>
|
||||
|
||||
#include "loopstationpresets.h"
|
||||
|
||||
namespace Ui { class LoopStationSamplesWidget; }
|
||||
namespace midi { struct MidiMessage; }
|
||||
class QNetworkAccessManager;
|
||||
class LoopStationSampleWidget;
|
||||
class DrumMachineSettings;
|
||||
struct frame_t;
|
||||
|
||||
class LoopStationSamplesWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LoopStationSamplesWidget(QWidget *parent = nullptr);
|
||||
~LoopStationSamplesWidget();
|
||||
|
||||
void loadSettings(DrumMachineSettings &settings);
|
||||
|
||||
void setPreset(const loopstation_presets::Preset &preset);
|
||||
|
||||
void midiReceived(const midi::MidiMessage &message);
|
||||
|
||||
void writeSamples(frame_t *begin, frame_t *end);
|
||||
|
||||
void injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager);
|
||||
void injectDecodingThread(QThread &thread);
|
||||
|
||||
void unsendColors();
|
||||
void sendColors();
|
||||
|
||||
signals:
|
||||
void sendMidi(const midi::MidiMessage &midiMsg);
|
||||
|
||||
private:
|
||||
std::array<std::reference_wrapper<LoopStationSampleWidget>, 48> getWidgets();
|
||||
|
||||
const std::unique_ptr<Ui::LoopStationSamplesWidget> m_ui;
|
||||
};
|
235
widgets/loopstationsampleswidget.ui
Normal file
235
widgets/loopstationsampleswidget.ui
Normal file
@ -0,0 +1,235 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LoopStationSamplesWidget</class>
|
||||
<widget class="QWidget" name="LoopStationSamplesWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1254</width>
|
||||
<height>890</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget3" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget4" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget18" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget12" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget19" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget27" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget15" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget22" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget10" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="10">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget11" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget20" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget8" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget14" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget21" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget1" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget16" native="true"/>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget25" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget13" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget2" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget9" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget0" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget24" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget5" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget23" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="2">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget17" native="true"/>
|
||||
</item>
|
||||
<item row="7" column="2">
|
||||
<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>
|
||||
<item row="2" column="3">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget6" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget7" native="true"/>
|
||||
</item>
|
||||
<item row="1" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget26" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget28" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget29" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget30" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget31" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget32" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget33" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget34" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget35" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget36" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget37" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget38" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget39" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget40" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget41" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget42" native="true"/>
|
||||
</item>
|
||||
<item row="5" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget43" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="6">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget44" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="7">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget45" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="8">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget46" native="true"/>
|
||||
</item>
|
||||
<item row="6" column="9">
|
||||
<widget class="LoopStationSampleWidget" name="sampleWidget47" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>LoopStationSampleWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>widgets/loopstationsamplewidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
11
widgets/loopstationsamplewidget.cpp
Normal file
11
widgets/loopstationsamplewidget.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "loopstationsamplewidget.h"
|
||||
#include "ui_loopstationsamplewidget.h"
|
||||
|
||||
LoopStationSampleWidget::LoopStationSampleWidget(QWidget *parent) :
|
||||
QFrame{parent},
|
||||
m_ui{std::make_unique<Ui::LoopStationSampleWidget>()}
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
|
||||
LoopStationSampleWidget::~LoopStationSampleWidget() = default;
|
19
widgets/loopstationsamplewidget.h
Normal file
19
widgets/loopstationsamplewidget.h
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <QFrame>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace Ui { class LoopStationSampleWidget; }
|
||||
|
||||
class LoopStationSampleWidget : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LoopStationSampleWidget(QWidget *parent = nullptr);
|
||||
~LoopStationSampleWidget();
|
||||
|
||||
private:
|
||||
const std::unique_ptr<Ui::LoopStationSampleWidget> m_ui;
|
||||
};
|
65
widgets/loopstationsamplewidget.ui
Normal file
65
widgets/loopstationsamplewidget.ui
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LoopStationSampleWidget</class>
|
||||
<widget class="QFrame" name="LoopStationSampleWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Panel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="labelFilename">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonPlay">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>▶</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="labelStatus">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>MidiButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
<header>widgets/midibutton.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -38,19 +38,19 @@ LoopStationWidget::~LoopStationWidget() = default;
|
||||
|
||||
void LoopStationWidget::writeSamples(frame_t *begin, frame_t *end)
|
||||
{
|
||||
Q_UNUSED(begin)
|
||||
Q_UNUSED(end)
|
||||
m_ui->samplesWidget->writeSamples(begin, end);
|
||||
}
|
||||
|
||||
void LoopStationWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
||||
{
|
||||
m_networkAccessManager = &networkAccessManager;
|
||||
loadPresets();
|
||||
m_ui->samplesWidget->injectNetworkAccessManager(networkAccessManager);
|
||||
}
|
||||
|
||||
void LoopStationWidget::injectDecodingThread(QThread &thread)
|
||||
{
|
||||
Q_UNUSED(thread)
|
||||
m_ui->samplesWidget->injectDecodingThread(thread);
|
||||
}
|
||||
|
||||
void LoopStationWidget::loadSettings(DrumMachineSettings &settings)
|
||||
@ -62,6 +62,8 @@ void LoopStationWidget::loadSettings(DrumMachineSettings &settings)
|
||||
|
||||
connect(m_ui->pushButtonUp, &MidiButton::learnSettingChanged, m_settings, &DrumMachineSettings::setLoopstationPrevPreset);
|
||||
connect(m_ui->pushButtonDown, &MidiButton::learnSettingChanged, m_settings, &DrumMachineSettings::setLoopstationNextPreset);
|
||||
|
||||
m_ui->samplesWidget->loadSettings(settings);
|
||||
}
|
||||
|
||||
void LoopStationWidget::unsendColors()
|
||||
@ -80,6 +82,8 @@ void LoopStationWidget::unsendColors()
|
||||
.note = m_ui->pushButtonDown->learnSetting().note,
|
||||
.velocity = 0
|
||||
});
|
||||
|
||||
m_ui->samplesWidget->unsendColors();
|
||||
}
|
||||
|
||||
void LoopStationWidget::sendColors()
|
||||
@ -98,6 +102,8 @@ void LoopStationWidget::sendColors()
|
||||
.note = m_ui->pushButtonDown->learnSetting().note,
|
||||
.velocity = 127
|
||||
});
|
||||
|
||||
m_ui->samplesWidget->sendColors();
|
||||
}
|
||||
|
||||
void LoopStationWidget::midiReceived(const midi::MidiMessage &message)
|
||||
@ -105,7 +111,7 @@ void LoopStationWidget::midiReceived(const midi::MidiMessage &message)
|
||||
m_ui->pushButtonUp->midiReceived(message);
|
||||
m_ui->pushButtonDown->midiReceived(message);
|
||||
|
||||
// TODO
|
||||
m_ui->samplesWidget->midiReceived(message);
|
||||
}
|
||||
|
||||
void LoopStationWidget::currentRowChanged(const QModelIndex ¤t)
|
||||
@ -129,6 +135,7 @@ void LoopStationWidget::currentRowChanged(const QModelIndex ¤t)
|
||||
qWarning() << "no settings available";
|
||||
|
||||
m_ui->presetDetailWidget->setPreset(preset);
|
||||
m_ui->samplesWidget->setPreset(preset);
|
||||
}
|
||||
|
||||
void LoopStationWidget::loadPresets()
|
||||
|
@ -13,97 +13,86 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="verticalLayoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬆</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬇</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButtonRefresh">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>↻</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="presetsView">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<widget class="LoopStationPresetDetailWidget" name="presetDetailWidget">
|
||||
<attribute name="title">
|
||||
<string>Properties</string>
|
||||
</attribute>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="test">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬆</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="MidiButton" name="pushButtonDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⬇</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButtonRefresh">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>↻</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="presetsView">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>10</y>
|
||||
<width>261</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Hier könnte ihre LoopStation stehen.</string>
|
||||
</property>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<widget class="LoopStationPresetDetailWidget" name="presetDetailWidget">
|
||||
<attribute name="title">
|
||||
<string>Properties</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="LoopStationSamplesWidget" name="samplesWidget" native="true"/>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
@ -117,6 +106,12 @@
|
||||
<header>widgets/loopstationpresetdetailwidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>LoopStationSamplesWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>widgets/loopstationsampleswidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
@ -338,28 +338,31 @@ void MainWindow::unsendColors(int index)
|
||||
|
||||
void MainWindow::sendColors(int index)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
const auto &learnSetting = m_ui->tabWidget->learnSetting(index);
|
||||
emit sendMidi(midi::MidiMessage {
|
||||
.channel = learnSetting.channel,
|
||||
.cmd = learnSetting.cmd,
|
||||
.flag = true,
|
||||
.note = learnSetting.note,
|
||||
.velocity = 3
|
||||
});
|
||||
{
|
||||
const auto &learnSetting = m_ui->tabWidget->learnSetting(index);
|
||||
emit sendMidi(midi::MidiMessage {
|
||||
.channel = learnSetting.channel,
|
||||
.cmd = learnSetting.cmd,
|
||||
.flag = true,
|
||||
.note = learnSetting.note,
|
||||
.velocity = 3
|
||||
});
|
||||
}
|
||||
|
||||
if (index == 0)
|
||||
m_ui->drumPadWidget->sendColors();
|
||||
else if (index == 1)
|
||||
m_ui->loopStationWidget->sendColors();
|
||||
else if (index == 2)
|
||||
m_ui->djWidget->sendColors();
|
||||
else if (index == 3)
|
||||
m_ui->synthisizerWidget->sendColors();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (index == 0)
|
||||
m_ui->drumPadWidget->sendColors();
|
||||
else if (index == 1)
|
||||
m_ui->loopStationWidget->sendColors();
|
||||
else if (index == 2)
|
||||
m_ui->djWidget->sendColors();
|
||||
else if (index == 3)
|
||||
m_ui->synthisizerWidget->sendColors();
|
||||
|
||||
return;
|
||||
|
||||
// this was just for debugging all the available colors on novation launchpad mk1
|
||||
|
||||
int k{0};
|
||||
|
Reference in New Issue
Block a user