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/drumpadsamplewidget.cpp \
widgets/drumpadwidget.cpp \ widgets/drumpadwidget.cpp \
widgets/loopstationpresetdetailwidget.cpp \ widgets/loopstationpresetdetailwidget.cpp \
widgets/loopstationsampleswidget.cpp \
widgets/loopstationsamplewidget.cpp \
widgets/loopstationwidget.cpp \ widgets/loopstationwidget.cpp \
widgets/mainwindow.cpp \ widgets/mainwindow.cpp \
widgets/midibutton.cpp \ widgets/midibutton.cpp \
@@ -80,6 +82,8 @@ HEADERS += \
widgets/drumpadsamplewidget.h \ widgets/drumpadsamplewidget.h \
widgets/drumpadwidget.h \ widgets/drumpadwidget.h \
widgets/loopstationpresetdetailwidget.h \ widgets/loopstationpresetdetailwidget.h \
widgets/loopstationsampleswidget.h \
widgets/loopstationsamplewidget.h \
widgets/loopstationwidget.h \ widgets/loopstationwidget.h \
widgets/mainwindow.h \ widgets/mainwindow.h \
widgets/midibutton.h \ widgets/midibutton.h \
@@ -98,6 +102,8 @@ FORMS += \
widgets/drumpadsamplewidget.ui \ widgets/drumpadsamplewidget.ui \
widgets/drumpadwidget.ui \ widgets/drumpadwidget.ui \
widgets/loopstationpresetdetailwidget.ui \ widgets/loopstationpresetdetailwidget.ui \
widgets/loopstationsampleswidget.ui \
widgets/loopstationsamplewidget.ui \
widgets/loopstationwidget.ui \ widgets/loopstationwidget.ui \
widgets/mainwindow.ui \ widgets/mainwindow.ui \
widgets/sequencerwidget.ui \ widgets/sequencerwidget.ui \

View File

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

View File

@@ -13,99 +13,95 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<widget class="QWidget" name="layoutWidget"> <widget class="QSplitter" name="splitter">
<layout class="QVBoxLayout"> <property name="orientation">
<property name="topMargin"> <enum>Qt::Vertical</enum>
<number>9</number> </property>
</property> <widget class="QWidget" name="verticalLayoutWidget">
<item> <layout class="QVBoxLayout" name="verticalLayout">
<layout class="QVBoxLayout"> <item>
<item> <layout class="QHBoxLayout" stretch="1,0,0,0">
<layout class="QHBoxLayout" stretch="1,0,0,0"> <item>
<item> <widget class="QLineEdit" name="lineEdit">
<widget class="QLineEdit" name="lineEdit"> <property name="clearButtonEnabled">
<property name="clearButtonEnabled"> <bool>true</bool>
<bool>true</bool> </property>
</property> </widget>
</widget> </item>
</item> <item>
<item> <widget class="MidiButton" name="pushButtonUp">
<widget class="MidiButton" name="pushButtonUp"> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>32</width>
<width>32</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>⬆</string>
<string>⬆</string> </property>
</property> </widget>
</widget> </item>
</item> <item>
<item> <widget class="MidiButton" name="pushButtonDown">
<widget class="MidiButton" name="pushButtonDown"> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>32</width>
<width>32</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>⬇</string>
<string>⬇</string> </property>
</property> </widget>
</widget> </item>
</item> <item>
<item> <widget class="QPushButton" name="pushButtonRefresh">
<widget class="QPushButton" name="pushButtonRefresh"> <property name="enabled">
<property name="enabled"> <bool>false</bool>
<bool>false</bool> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>32</width>
<width>32</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>↻</string>
<string>↻</string> </property>
</property> </widget>
</widget> </item>
</item> </layout>
</layout> </item>
</item> <item>
<item> <widget class="QTreeView" name="presetsView">
<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">
<property name="rootIsDecorated"> <property name="rootIsDecorated">
<bool>false</bool> <bool>false</bool>
</property> </property>
<attribute name="title"> <property name="sortingEnabled">
<string>Samples</string> <bool>true</bool>
</attribute> </property>
</widget> </widget>
</widget> </item>
</item> </layout>
</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>
<widget class="QSplitter" name="splitter"> <widget class="QSplitter" name="splitter">
<property name="orientation"> <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) void LoopStationWidget::writeSamples(frame_t *begin, frame_t *end)
{ {
Q_UNUSED(begin) m_ui->samplesWidget->writeSamples(begin, end);
Q_UNUSED(end)
} }
void LoopStationWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager) void LoopStationWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
{ {
m_networkAccessManager = &networkAccessManager; m_networkAccessManager = &networkAccessManager;
loadPresets(); loadPresets();
m_ui->samplesWidget->injectNetworkAccessManager(networkAccessManager);
} }
void LoopStationWidget::injectDecodingThread(QThread &thread) void LoopStationWidget::injectDecodingThread(QThread &thread)
{ {
Q_UNUSED(thread) m_ui->samplesWidget->injectDecodingThread(thread);
} }
void LoopStationWidget::loadSettings(DrumMachineSettings &settings) 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->pushButtonUp, &MidiButton::learnSettingChanged, m_settings, &DrumMachineSettings::setLoopstationPrevPreset);
connect(m_ui->pushButtonDown, &MidiButton::learnSettingChanged, m_settings, &DrumMachineSettings::setLoopstationNextPreset); connect(m_ui->pushButtonDown, &MidiButton::learnSettingChanged, m_settings, &DrumMachineSettings::setLoopstationNextPreset);
m_ui->samplesWidget->loadSettings(settings);
} }
void LoopStationWidget::unsendColors() void LoopStationWidget::unsendColors()
@@ -80,6 +82,8 @@ void LoopStationWidget::unsendColors()
.note = m_ui->pushButtonDown->learnSetting().note, .note = m_ui->pushButtonDown->learnSetting().note,
.velocity = 0 .velocity = 0
}); });
m_ui->samplesWidget->unsendColors();
} }
void LoopStationWidget::sendColors() void LoopStationWidget::sendColors()
@@ -98,6 +102,8 @@ void LoopStationWidget::sendColors()
.note = m_ui->pushButtonDown->learnSetting().note, .note = m_ui->pushButtonDown->learnSetting().note,
.velocity = 127 .velocity = 127
}); });
m_ui->samplesWidget->sendColors();
} }
void LoopStationWidget::midiReceived(const midi::MidiMessage &message) 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->pushButtonUp->midiReceived(message);
m_ui->pushButtonDown->midiReceived(message); m_ui->pushButtonDown->midiReceived(message);
// TODO m_ui->samplesWidget->midiReceived(message);
} }
void LoopStationWidget::currentRowChanged(const QModelIndex &current) void LoopStationWidget::currentRowChanged(const QModelIndex &current)
@@ -129,6 +135,7 @@ void LoopStationWidget::currentRowChanged(const QModelIndex &current)
qWarning() << "no settings available"; qWarning() << "no settings available";
m_ui->presetDetailWidget->setPreset(preset); m_ui->presetDetailWidget->setPreset(preset);
m_ui->samplesWidget->setPreset(preset);
} }
void LoopStationWidget::loadPresets() void LoopStationWidget::loadPresets()

View File

@@ -13,97 +13,86 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<widget class="QWidget" name="verticalLayoutWidget"> <widget class="QSplitter" name="splitter">
<layout class="QVBoxLayout" name="verticalLayout"> <property name="orientation">
<item> <enum>Qt::Vertical</enum>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0"> </property>
<item> <widget class="QWidget" name="test">
<widget class="QLineEdit" name="lineEdit"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="clearButtonEnabled"> <item>
<bool>true</bool> <layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0">
</property> <item>
</widget> <widget class="QLineEdit" name="lineEdit">
</item> <property name="clearButtonEnabled">
<item> <bool>true</bool>
<widget class="MidiButton" name="pushButtonUp"> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>32</width> <item>
<height>16777215</height> <widget class="MidiButton" name="pushButtonUp">
</size> <property name="maximumSize">
</property> <size>
<property name="text"> <width>32</width>
<string>⬆</string> <height>16777215</height>
</property> </size>
</widget> </property>
</item> <property name="text">
<item> <string>⬆</string>
<widget class="MidiButton" name="pushButtonDown"> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>32</width> <item>
<height>16777215</height> <widget class="MidiButton" name="pushButtonDown">
</size> <property name="maximumSize">
</property> <size>
<property name="text"> <width>32</width>
<string>⬇</string> <height>16777215</height>
</property> </size>
</widget> </property>
</item> <property name="text">
<item> <string>⬇</string>
<widget class="QPushButton" name="pushButtonRefresh"> </property>
<property name="enabled"> </widget>
<bool>false</bool> </item>
</property> <item>
<property name="maximumSize"> <widget class="QPushButton" name="pushButtonRefresh">
<size> <property name="enabled">
<width>32</width> <bool>false</bool>
<height>16777215</height> </property>
</size> <property name="maximumSize">
</property> <size>
<property name="text"> <width>32</width>
<string>↻</string> <height>16777215</height>
</property> </size>
</widget> </property>
</item> <property name="text">
</layout> <string>↻</string>
</item> </property>
<item> </widget>
<widget class="QTreeView" name="presetsView"> </item>
<property name="rootIsDecorated"> </layout>
<bool>false</bool> </item>
</property> <item>
<property name="sortingEnabled"> <widget class="QTreeView" name="presetsView">
<bool>true</bool> <property name="rootIsDecorated">
</property> <bool>false</bool>
</widget> </property>
</item> <property name="sortingEnabled">
<item> <bool>true</bool>
<widget class="QTabWidget" name="tabWidget"> </property>
<widget class="LoopStationPresetDetailWidget" name="presetDetailWidget">
<attribute name="title">
<string>Properties</string>
</attribute>
</widget> </widget>
</widget> </item>
</item> </layout>
</layout> </widget>
</widget> <widget class="QTabWidget" name="tabWidget">
<widget class="QWidget" name="widget" native="true"> <widget class="LoopStationPresetDetailWidget" name="presetDetailWidget">
<widget class="QLabel" name="label"> <attribute name="title">
<property name="geometry"> <string>Properties</string>
<rect> </attribute>
<x>20</x> </widget>
<y>10</y>
<width>261</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string>Hier könnte ihre LoopStation stehen.</string>
</property>
</widget> </widget>
</widget> </widget>
<widget class="LoopStationSamplesWidget" name="samplesWidget" native="true"/>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
@@ -117,6 +106,12 @@
<header>widgets/loopstationpresetdetailwidget.h</header> <header>widgets/loopstationpresetdetailwidget.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>LoopStationSamplesWidget</class>
<extends>QWidget</extends>
<header>widgets/loopstationsampleswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections/>

View File

@@ -338,28 +338,31 @@ void MainWindow::unsendColors(int index)
void MainWindow::sendColors(int index) void MainWindow::sendColors(int index)
{ {
if (true)
{ {
const auto &learnSetting = m_ui->tabWidget->learnSetting(index); {
emit sendMidi(midi::MidiMessage { const auto &learnSetting = m_ui->tabWidget->learnSetting(index);
.channel = learnSetting.channel, emit sendMidi(midi::MidiMessage {
.cmd = learnSetting.cmd, .channel = learnSetting.channel,
.flag = true, .cmd = learnSetting.cmd,
.note = learnSetting.note, .flag = true,
.velocity = 3 .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 // this was just for debugging all the available colors on novation launchpad mk1
int k{0}; int k{0};