Added loopstation sample widgets

This commit is contained in:
2022-12-28 23:23:50 +01:00
parent e6a6e20940
commit e196c665eb
12 changed files with 692 additions and 202 deletions

View File

@ -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 \

View File

@ -1,11 +1,11 @@
#pragma once
#include <QWidget>
#include <memory>
#include <array>
#include <functional>
#include <QWidget>
#include "drumpadpresets.h"
namespace Ui { class DrumPadSamplesWidget; }

View File

@ -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">

View 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),
};
}

View 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;
};

View 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>

View 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;

View 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;
};

View 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>

View File

@ -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 &current)
@ -129,6 +135,7 @@ void LoopStationWidget::currentRowChanged(const QModelIndex &current)
qWarning() << "no settings available";
m_ui->presetDetailWidget->setPreset(preset);
m_ui->samplesWidget->setPreset(preset);
}
void LoopStationWidget::loadPresets()

View File

@ -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/>

View File

@ -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};