Cleanups and renamings
This commit is contained in:
@ -31,14 +31,14 @@ SOURCES += \
|
|||||||
synthisizer.cpp \
|
synthisizer.cpp \
|
||||||
treetotableproxymodel.cpp \
|
treetotableproxymodel.cpp \
|
||||||
widgets/djwidget.cpp \
|
widgets/djwidget.cpp \
|
||||||
|
widgets/drumpadsampleswidget.cpp \
|
||||||
|
widgets/drumpadsamplewidget.cpp \
|
||||||
widgets/drumpadwidget.cpp \
|
widgets/drumpadwidget.cpp \
|
||||||
widgets/loopstationwidget.cpp \
|
widgets/loopstationwidget.cpp \
|
||||||
widgets/mainwindow.cpp \
|
widgets/mainwindow.cpp \
|
||||||
widgets/midibutton.cpp \
|
widgets/midibutton.cpp \
|
||||||
widgets/presetdetailwidget.cpp \
|
widgets/presetdetailwidget.cpp \
|
||||||
widgets/previewwidget.cpp \
|
widgets/previewwidget.cpp \
|
||||||
widgets/sampleswidget.cpp \
|
|
||||||
widgets/samplewidget.cpp \
|
|
||||||
widgets/scratchwidget.cpp \
|
widgets/scratchwidget.cpp \
|
||||||
widgets/sequencerwidget.cpp \
|
widgets/sequencerwidget.cpp \
|
||||||
widgets/settingsdialog.cpp \
|
widgets/settingsdialog.cpp \
|
||||||
@ -65,14 +65,14 @@ HEADERS += \
|
|||||||
synthisizer.h \
|
synthisizer.h \
|
||||||
treetotableproxymodel.h \
|
treetotableproxymodel.h \
|
||||||
widgets/djwidget.h \
|
widgets/djwidget.h \
|
||||||
|
widgets/drumpadsampleswidget.h \
|
||||||
|
widgets/drumpadsamplewidget.h \
|
||||||
widgets/drumpadwidget.h \
|
widgets/drumpadwidget.h \
|
||||||
widgets/loopstationwidget.h \
|
widgets/loopstationwidget.h \
|
||||||
widgets/mainwindow.h \
|
widgets/mainwindow.h \
|
||||||
widgets/midibutton.h \
|
widgets/midibutton.h \
|
||||||
widgets/presetdetailwidget.h \
|
widgets/presetdetailwidget.h \
|
||||||
widgets/previewwidget.h \
|
widgets/previewwidget.h \
|
||||||
widgets/sampleswidget.h \
|
|
||||||
widgets/samplewidget.h \
|
|
||||||
widgets/scratchwidget.h \
|
widgets/scratchwidget.h \
|
||||||
widgets/sequencerwidget.h \
|
widgets/sequencerwidget.h \
|
||||||
widgets/settingsdialog.h \
|
widgets/settingsdialog.h \
|
||||||
@ -81,12 +81,12 @@ HEADERS += \
|
|||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
widgets/djwidget.ui \
|
widgets/djwidget.ui \
|
||||||
|
widgets/drumpadsampleswidget.ui \
|
||||||
|
widgets/drumpadsamplewidget.ui \
|
||||||
widgets/drumpadwidget.ui \
|
widgets/drumpadwidget.ui \
|
||||||
widgets/loopstationwidget.ui \
|
widgets/loopstationwidget.ui \
|
||||||
widgets/mainwindow.ui \
|
widgets/mainwindow.ui \
|
||||||
widgets/presetdetailwidget.ui \
|
widgets/presetdetailwidget.ui \
|
||||||
widgets/sampleswidget.ui \
|
|
||||||
widgets/samplewidget.ui \
|
|
||||||
widgets/sequencerwidget.ui \
|
widgets/sequencerwidget.ui \
|
||||||
widgets/settingsdialog.ui \
|
widgets/settingsdialog.ui \
|
||||||
widgets/synthisizerwidget.ui \
|
widgets/synthisizerwidget.ui \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "sampleswidget.h"
|
#include "drumpadsampleswidget.h"
|
||||||
#include "ui_sampleswidget.h"
|
#include "ui_drumpadsampleswidget.h"
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
@ -8,41 +8,41 @@
|
|||||||
#include "audioformat.h"
|
#include "audioformat.h"
|
||||||
#include "midicontainers.h"
|
#include "midicontainers.h"
|
||||||
|
|
||||||
SamplesWidget::SamplesWidget(QWidget *parent) :
|
DrumPadSamplesWidget::DrumPadSamplesWidget(QWidget *parent) :
|
||||||
QWidget{parent},
|
QWidget{parent},
|
||||||
m_ui{std::make_unique<Ui::SamplesWidget>()}
|
m_ui{std::make_unique<Ui::DrumPadSamplesWidget>()}
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
connect(m_ui->checkBox, &QCheckBox::toggled, this, &SamplesWidget::updateWidgets);
|
connect(m_ui->checkBox, &QCheckBox::toggled, this, &DrumPadSamplesWidget::updateWidgets);
|
||||||
|
|
||||||
connect(m_ui->pushButtonStopAll, &QAbstractButton::pressed, this, &SamplesWidget::stopAll);
|
connect(m_ui->pushButtonStopAll, &QAbstractButton::pressed, this, &DrumPadSamplesWidget::stopAll);
|
||||||
|
|
||||||
quint8 padNr{};
|
quint8 padNr{};
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
{
|
{
|
||||||
widget.setPadNr(padNr++);
|
widget.setPadNr(padNr++);
|
||||||
connect(&widget, &SampleWidget::chokeTriggered, this, &SamplesWidget::chokeTriggered);
|
connect(&widget, &DrumPadSampleWidget::chokeTriggered, this, &DrumPadSamplesWidget::chokeTriggered);
|
||||||
connect(&widget, &SampleWidget::sendMidi, this, &SamplesWidget::sendMidi);
|
connect(&widget, &DrumPadSampleWidget::sendMidi, this, &DrumPadSamplesWidget::sendMidi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplesWidget::~SamplesWidget() = default;
|
DrumPadSamplesWidget::~DrumPadSamplesWidget() = default;
|
||||||
|
|
||||||
void SamplesWidget::loadSettings(DrumMachineSettings &settings)
|
void DrumPadSamplesWidget::loadSettings(DrumMachineSettings &settings)
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.loadSettings(settings);
|
widget.loadSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::setPreset(const drumpad_presets::Preset &preset)
|
void DrumPadSamplesWidget::setPreset(const drumpad_presets::Preset &preset)
|
||||||
{
|
{
|
||||||
m_preset = preset;
|
m_preset = preset;
|
||||||
|
|
||||||
updateWidgets();
|
updateWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::midiReceived(const midi::MidiMessage &message)
|
void DrumPadSamplesWidget::midiReceived(const midi::MidiMessage &message)
|
||||||
{
|
{
|
||||||
if (message == midi::MidiMessage{.channel=0,.cmd=midi::Command::ControlChange,.flag=true,.note=64,.velocity=127})
|
if (message == midi::MidiMessage{.channel=0,.cmd=midi::Command::ControlChange,.flag=true,.note=64,.velocity=127})
|
||||||
{
|
{
|
||||||
@ -53,7 +53,7 @@ void SamplesWidget::midiReceived(const midi::MidiMessage &message)
|
|||||||
if (message.cmd != midi::Command::NoteOn && message.cmd != midi::Command::NoteOff)
|
if (message.cmd != midi::Command::NoteOn && message.cmd != midi::Command::NoteOff)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
{
|
{
|
||||||
if (widget.isLearning())
|
if (widget.isLearning())
|
||||||
{
|
{
|
||||||
@ -69,37 +69,37 @@ void SamplesWidget::midiReceived(const midi::MidiMessage &message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::writeSamples(frame_t *begin, frame_t *end)
|
void DrumPadSamplesWidget::writeSamples(frame_t *begin, frame_t *end)
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.writeSamples(begin, end);
|
widget.writeSamples(begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
void DrumPadSamplesWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.injectNetworkAccessManager(networkAccessManager);
|
widget.injectNetworkAccessManager(networkAccessManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::injectDecodingThread(QThread &thread)
|
void DrumPadSamplesWidget::injectDecodingThread(QThread &thread)
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.injectDecodingThread(thread);
|
widget.injectDecodingThread(thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::unsendColors()
|
void DrumPadSamplesWidget::unsendColors()
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.unsendColor();
|
widget.unsendColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::sendColors()
|
void DrumPadSamplesWidget::sendColors()
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.sendColor();
|
widget.sendColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::sequencerTriggerSample(int index)
|
void DrumPadSamplesWidget::sequencerTriggerSample(int index)
|
||||||
{
|
{
|
||||||
const auto widgets = getWidgets();
|
const auto widgets = getWidgets();
|
||||||
if (index < 0 || index >= int(std::size(widgets)))
|
if (index < 0 || index >= int(std::size(widgets)))
|
||||||
@ -110,9 +110,9 @@ void SamplesWidget::sequencerTriggerSample(int index)
|
|||||||
widgets[index].get().pressed(127);
|
widgets[index].get().pressed(127);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::chokeTriggered(int choke)
|
void DrumPadSamplesWidget::chokeTriggered(int choke)
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
{
|
{
|
||||||
if (&widget == sender())
|
if (&widget == sender())
|
||||||
continue;
|
continue;
|
||||||
@ -122,7 +122,7 @@ void SamplesWidget::chokeTriggered(int choke)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::updateWidgets()
|
void DrumPadSamplesWidget::updateWidgets()
|
||||||
{
|
{
|
||||||
const auto widgets = getWidgets();
|
const auto widgets = getWidgets();
|
||||||
|
|
||||||
@ -139,13 +139,13 @@ void SamplesWidget::updateWidgets()
|
|||||||
widgetsIter->get().setFile(*m_preset.id, *filesIter);
|
widgetsIter->get().setFile(*m_preset.id, *filesIter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplesWidget::stopAll()
|
void DrumPadSamplesWidget::stopAll()
|
||||||
{
|
{
|
||||||
for (SampleWidget &widget : getWidgets())
|
for (DrumPadSampleWidget &widget : getWidgets())
|
||||||
widget.forceStop();
|
widget.forceStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::array<std::reference_wrapper<SampleWidget>, 24> SamplesWidget::getWidgets()
|
std::array<std::reference_wrapper<DrumPadSampleWidget>, 24> DrumPadSamplesWidget::getWidgets()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
std::ref(*m_ui->sampleWidget_1),
|
std::ref(*m_ui->sampleWidget_1),
|
@ -8,20 +8,20 @@
|
|||||||
|
|
||||||
#include "drumpadpresets.h"
|
#include "drumpadpresets.h"
|
||||||
|
|
||||||
namespace Ui { class SamplesWidget; }
|
namespace Ui { class DrumPadSamplesWidget; }
|
||||||
namespace midi { struct MidiMessage; }
|
namespace midi { struct MidiMessage; }
|
||||||
class QNetworkAccessManager;
|
class QNetworkAccessManager;
|
||||||
class SampleWidget;
|
class DrumPadSampleWidget;
|
||||||
class DrumMachineSettings;
|
class DrumMachineSettings;
|
||||||
struct frame_t;
|
struct frame_t;
|
||||||
|
|
||||||
class SamplesWidget : public QWidget
|
class DrumPadSamplesWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SamplesWidget(QWidget *parent = nullptr);
|
explicit DrumPadSamplesWidget(QWidget *parent = nullptr);
|
||||||
~SamplesWidget() override;
|
~DrumPadSamplesWidget() override;
|
||||||
|
|
||||||
void loadSettings(DrumMachineSettings &settings);
|
void loadSettings(DrumMachineSettings &settings);
|
||||||
|
|
||||||
@ -49,9 +49,9 @@ private slots:
|
|||||||
void stopAll();
|
void stopAll();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<std::reference_wrapper<SampleWidget>, 24> getWidgets();
|
std::array<std::reference_wrapper<DrumPadSampleWidget>, 24> getWidgets();
|
||||||
|
|
||||||
const std::unique_ptr<Ui::SamplesWidget> m_ui;
|
const std::unique_ptr<Ui::DrumPadSamplesWidget> m_ui;
|
||||||
|
|
||||||
drumpad_presets::Preset m_preset;
|
drumpad_presets::Preset m_preset;
|
||||||
};
|
};
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>SamplesWidget</class>
|
<class>DrumPadSamplesWidget</class>
|
||||||
<widget class="QWidget" name="SamplesWidget">
|
<widget class="QWidget" name="DrumPadSamplesWidget">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -12,22 +12,22 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0,0,0,0,0,0,0">
|
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0,0,0,0,0,0,0">
|
||||||
<item row="3" column="3">
|
<item row="3" column="3">
|
||||||
<widget class="SampleWidget" name="sampleWidget_9" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_9" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="3">
|
<item row="4" column="3">
|
||||||
<widget class="SampleWidget" name="sampleWidget_12" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_12" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="5">
|
<item row="1" column="5">
|
||||||
<widget class="SampleWidget" name="sampleWidget_13" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_13" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="7">
|
<item row="1" column="7">
|
||||||
<widget class="SampleWidget" name="sampleWidget_15" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_15" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="7">
|
<item row="2" column="7">
|
||||||
<widget class="SampleWidget" name="sampleWidget_18" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_18" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="6">
|
<item row="4" column="6">
|
||||||
<widget class="SampleWidget" name="sampleWidget_23" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_23" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" colspan="9">
|
<item row="0" column="0" colspan="9">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
@ -74,10 +74,10 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="3" column="2">
|
||||||
<widget class="SampleWidget" name="sampleWidget_8" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_8" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="7">
|
<item row="4" column="7">
|
||||||
<widget class="SampleWidget" name="sampleWidget_24" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_24" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<spacer name="horizontalSpacer_2">
|
<spacer name="horizontalSpacer_2">
|
||||||
@ -93,13 +93,13 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="SampleWidget" name="sampleWidget_1" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_1" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="5">
|
<item row="3" column="5">
|
||||||
<widget class="SampleWidget" name="sampleWidget_19" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_19" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="7">
|
<item row="3" column="7">
|
||||||
<widget class="SampleWidget" name="sampleWidget_21" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_21" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="8">
|
<item row="1" column="8">
|
||||||
<spacer name="horizontalSpacer_3">
|
<spacer name="horizontalSpacer_3">
|
||||||
@ -115,16 +115,16 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="2" column="2">
|
||||||
<widget class="SampleWidget" name="sampleWidget_5" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_5" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="SampleWidget" name="sampleWidget_2" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_2" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="6">
|
<item row="2" column="6">
|
||||||
<widget class="SampleWidget" name="sampleWidget_17" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_17" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="6">
|
<item row="3" column="6">
|
||||||
<widget class="SampleWidget" name="sampleWidget_20" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_20" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
@ -140,39 +140,39 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="5">
|
<item row="2" column="5">
|
||||||
<widget class="SampleWidget" name="sampleWidget_16" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_16" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="SampleWidget" name="sampleWidget_4" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_4" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="5">
|
<item row="4" column="5">
|
||||||
<widget class="SampleWidget" name="sampleWidget_22" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_22" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="2">
|
<item row="4" column="2">
|
||||||
<widget class="SampleWidget" name="sampleWidget_11" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_11" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<widget class="SampleWidget" name="sampleWidget_3" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_3" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="6">
|
<item row="1" column="6">
|
||||||
<widget class="SampleWidget" name="sampleWidget_14" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_14" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="SampleWidget" name="sampleWidget_10" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_10" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="3">
|
<item row="2" column="3">
|
||||||
<widget class="SampleWidget" name="sampleWidget_6" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_6" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="SampleWidget" name="sampleWidget_7" native="true"/>
|
<widget class="DrumPadSampleWidget" name="sampleWidget_7" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SampleWidget</class>
|
<class>DrumPadSampleWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>widgets/samplewidget.h</header>
|
<header>widgets/drumpadsamplewidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
@ -1,5 +1,5 @@
|
|||||||
#include "samplewidget.h"
|
#include "drumpadsamplewidget.h"
|
||||||
#include "ui_samplewidget.h"
|
#include "ui_drumpadsamplewidget.h"
|
||||||
|
|
||||||
#include <QAbstractEventDispatcher>
|
#include <QAbstractEventDispatcher>
|
||||||
#include <QSoundEffect>
|
#include <QSoundEffect>
|
||||||
@ -19,27 +19,27 @@ QString toString(int value) { return QString::number(value); }
|
|||||||
QString toString(bool value) { return value?"true":"false"; }
|
QString toString(bool value) { return value?"true":"false"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleWidget::SampleWidget(QWidget *parent) :
|
DrumPadSampleWidget::DrumPadSampleWidget(QWidget *parent) :
|
||||||
QFrame{parent},
|
QFrame{parent},
|
||||||
m_ui{std::make_unique<Ui::SampleWidget>()}
|
m_ui{std::make_unique<Ui::DrumPadSampleWidget>()}
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
connect(m_ui->dialSpeed, &QAbstractSlider::valueChanged, &m_player, [&player=m_player](int value){ player.setSpeed(float(value)/100.f); });
|
connect(m_ui->dialSpeed, &QAbstractSlider::valueChanged, &m_player, [&player=m_player](int value){ player.setSpeed(float(value)/100.f); });
|
||||||
connect(m_ui->dialVolume, &QAbstractSlider::valueChanged, &m_player, [&player=m_player](int value){ player.setVolume(float(value)/100.f); });
|
connect(m_ui->dialVolume, &QAbstractSlider::valueChanged, &m_player, [&player=m_player](int value){ player.setVolume(float(value)/100.f); });
|
||||||
|
|
||||||
connect(&m_player, &AudioPlayer::playingChanged, this, &SampleWidget::updateStatus);
|
connect(&m_player, &AudioPlayer::playingChanged, this, &DrumPadSampleWidget::updateStatus);
|
||||||
|
|
||||||
connect(m_ui->pushButton, &QAbstractButton::pressed, this, [this](){ pressed(127); });
|
connect(m_ui->pushButton, &QAbstractButton::pressed, this, [this](){ pressed(127); });
|
||||||
connect(m_ui->pushButton, &QAbstractButton::released, this, &SampleWidget::released);
|
connect(m_ui->pushButton, &QAbstractButton::released, this, &DrumPadSampleWidget::released);
|
||||||
connect(m_ui->toolButtonLearn, &QAbstractButton::pressed, this, &SampleWidget::learnPressed);
|
connect(m_ui->toolButtonLearn, &QAbstractButton::pressed, this, &DrumPadSampleWidget::learnPressed);
|
||||||
|
|
||||||
updateStatus();
|
updateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleWidget::~SampleWidget() = default;
|
DrumPadSampleWidget::~DrumPadSampleWidget() = default;
|
||||||
|
|
||||||
void SampleWidget::loadSettings(DrumMachineSettings &settings)
|
void DrumPadSampleWidget::loadSettings(DrumMachineSettings &settings)
|
||||||
{
|
{
|
||||||
m_ui->channelSpinBox->setValue(settings.drumpadChannel(m_padNr));
|
m_ui->channelSpinBox->setValue(settings.drumpadChannel(m_padNr));
|
||||||
m_ui->noteSpinBox->setValue(settings.drumpadNote(m_padNr));
|
m_ui->noteSpinBox->setValue(settings.drumpadNote(m_padNr));
|
||||||
@ -47,7 +47,7 @@ void SampleWidget::loadSettings(DrumMachineSettings &settings)
|
|||||||
m_settings = &settings;
|
m_settings = &settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::setFile(const QString &presetId, const drumpad_presets::File &file)
|
void DrumPadSampleWidget::setFile(const QString &presetId, const drumpad_presets::File &file)
|
||||||
{
|
{
|
||||||
m_presetId = presetId;
|
m_presetId = presetId;
|
||||||
m_file = file;
|
m_file = file;
|
||||||
@ -80,12 +80,12 @@ void SampleWidget::setFile(const QString &presetId, const drumpad_presets::File
|
|||||||
setupLabel(file.choke, m_ui->chokeLabel);
|
setupLabel(file.choke, m_ui->chokeLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
quint8 SampleWidget::channel() const
|
quint8 DrumPadSampleWidget::channel() const
|
||||||
{
|
{
|
||||||
return m_ui->channelSpinBox->value();
|
return m_ui->channelSpinBox->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::setChannel(quint8 channel)
|
void DrumPadSampleWidget::setChannel(quint8 channel)
|
||||||
{
|
{
|
||||||
m_ui->channelSpinBox->setValue(channel);
|
m_ui->channelSpinBox->setValue(channel);
|
||||||
|
|
||||||
@ -95,12 +95,12 @@ void SampleWidget::setChannel(quint8 channel)
|
|||||||
qWarning() << "no settings available";
|
qWarning() << "no settings available";
|
||||||
}
|
}
|
||||||
|
|
||||||
quint8 SampleWidget::note() const
|
quint8 DrumPadSampleWidget::note() const
|
||||||
{
|
{
|
||||||
return m_ui->noteSpinBox->value();
|
return m_ui->noteSpinBox->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::setNote(quint8 note)
|
void DrumPadSampleWidget::setNote(quint8 note)
|
||||||
{
|
{
|
||||||
m_ui->noteSpinBox->setValue(note);
|
m_ui->noteSpinBox->setValue(note);
|
||||||
|
|
||||||
@ -110,34 +110,34 @@ void SampleWidget::setNote(quint8 note)
|
|||||||
qWarning() << "no settings available";
|
qWarning() << "no settings available";
|
||||||
}
|
}
|
||||||
|
|
||||||
int SampleWidget::speed() const
|
int DrumPadSampleWidget::speed() const
|
||||||
{
|
{
|
||||||
return m_ui->dialSpeed->value();
|
return m_ui->dialSpeed->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::setSpeed(int speed)
|
void DrumPadSampleWidget::setSpeed(int speed)
|
||||||
{
|
{
|
||||||
m_ui->dialSpeed->setValue(speed);
|
m_ui->dialSpeed->setValue(speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SampleWidget::volume() const
|
int DrumPadSampleWidget::volume() const
|
||||||
{
|
{
|
||||||
return m_ui->dialVolume->value();
|
return m_ui->dialVolume->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::setVolume(int volume)
|
void DrumPadSampleWidget::setVolume(int volume)
|
||||||
{
|
{
|
||||||
m_ui->dialVolume->setValue(volume);
|
m_ui->dialVolume->setValue(volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<int> SampleWidget::choke() const
|
std::optional<int> DrumPadSampleWidget::choke() const
|
||||||
{
|
{
|
||||||
if (!m_file)
|
if (!m_file)
|
||||||
return {};
|
return {};
|
||||||
return m_file->choke;
|
return m_file->choke;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::pressed(quint8 velocity)
|
void DrumPadSampleWidget::pressed(quint8 velocity)
|
||||||
{
|
{
|
||||||
Q_UNUSED(velocity)
|
Q_UNUSED(velocity)
|
||||||
|
|
||||||
@ -147,39 +147,39 @@ void SampleWidget::pressed(quint8 velocity)
|
|||||||
emit chokeTriggered(*m_file->choke);
|
emit chokeTriggered(*m_file->choke);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::released()
|
void DrumPadSampleWidget::released()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::forceStop()
|
void DrumPadSampleWidget::forceStop()
|
||||||
{
|
{
|
||||||
m_player.setPlaying(false);
|
m_player.setPlaying(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
void DrumPadSampleWidget::injectNetworkAccessManager(QNetworkAccessManager &networkAccessManager)
|
||||||
{
|
{
|
||||||
m_networkAccessManager = &networkAccessManager;
|
m_networkAccessManager = &networkAccessManager;
|
||||||
if (m_file)
|
if (m_file)
|
||||||
startRequest();
|
startRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::injectDecodingThread(QThread &thread)
|
void DrumPadSampleWidget::injectDecodingThread(QThread &thread)
|
||||||
{
|
{
|
||||||
QMetaObject::invokeMethod(QAbstractEventDispatcher::instance(&thread), [this](){
|
QMetaObject::invokeMethod(QAbstractEventDispatcher::instance(&thread), [this](){
|
||||||
m_decoder = std::make_unique<AudioDecoder>();
|
m_decoder = std::make_unique<AudioDecoder>();
|
||||||
connect(this, &SampleWidget::startDecoding, m_decoder.get(), &AudioDecoder::startDecodingDevice);
|
connect(this, &DrumPadSampleWidget::startDecoding, m_decoder.get(), &AudioDecoder::startDecodingDevice);
|
||||||
connect(m_decoder.get(), &AudioDecoder::decodingFinished, this, &SampleWidget::decodingFinished);
|
connect(m_decoder.get(), &AudioDecoder::decodingFinished, this, &DrumPadSampleWidget::decodingFinished);
|
||||||
if (m_reply && m_reply->isFinished() && m_reply->error() == QNetworkReply::NoError)
|
if (m_reply && m_reply->isFinished() && m_reply->error() == QNetworkReply::NoError)
|
||||||
m_decoder->startDecodingDevice(m_reply);
|
m_decoder->startDecodingDevice(m_reply);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::writeSamples(frame_t *begin, frame_t *end)
|
void DrumPadSampleWidget::writeSamples(frame_t *begin, frame_t *end)
|
||||||
{
|
{
|
||||||
m_player.writeSamples(begin, end);
|
m_player.writeSamples(begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::learn(quint8 channel, quint8 note)
|
void DrumPadSampleWidget::learn(quint8 channel, quint8 note)
|
||||||
{
|
{
|
||||||
setChannel(channel);
|
setChannel(channel);
|
||||||
setNote(note);
|
setNote(note);
|
||||||
@ -187,7 +187,7 @@ void SampleWidget::learn(quint8 channel, quint8 note)
|
|||||||
learnPressed();
|
learnPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::unsendColor()
|
void DrumPadSampleWidget::unsendColor()
|
||||||
{
|
{
|
||||||
m_sendColors = false;
|
m_sendColors = false;
|
||||||
midi::MidiMessage midiMsg;
|
midi::MidiMessage midiMsg;
|
||||||
@ -201,7 +201,7 @@ void SampleWidget::unsendColor()
|
|||||||
emit sendMidi(midiMsg);
|
emit sendMidi(midiMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::sendColor()
|
void DrumPadSampleWidget::sendColor()
|
||||||
{
|
{
|
||||||
m_sendColors = true;
|
m_sendColors = true;
|
||||||
midi::MidiMessage midiMsg;
|
midi::MidiMessage midiMsg;
|
||||||
@ -236,7 +236,7 @@ void SampleWidget::sendColor()
|
|||||||
emit sendMidi(midiMsg);
|
emit sendMidi(midiMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::updateStatus()
|
void DrumPadSampleWidget::updateStatus()
|
||||||
{
|
{
|
||||||
QPalette pal;
|
QPalette pal;
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ void SampleWidget::updateStatus()
|
|||||||
m_ui->statusLabel->setText(m_player.playing() ? tr("Playing") : tr("Ready"));
|
m_ui->statusLabel->setText(m_player.playing() ? tr("Playing") : tr("Ready"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::requestFinished()
|
void DrumPadSampleWidget::requestFinished()
|
||||||
{
|
{
|
||||||
if (m_reply->error() == QNetworkReply::NoError)
|
if (m_reply->error() == QNetworkReply::NoError)
|
||||||
{
|
{
|
||||||
@ -298,7 +298,7 @@ void SampleWidget::requestFinished()
|
|||||||
updateStatus();
|
updateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::decodingFinished(const QAudioBuffer &buffer)
|
void DrumPadSampleWidget::decodingFinished(const QAudioBuffer &buffer)
|
||||||
{
|
{
|
||||||
m_reply = nullptr;
|
m_reply = nullptr;
|
||||||
m_player.setBuffer(buffer);
|
m_player.setBuffer(buffer);
|
||||||
@ -307,7 +307,7 @@ void SampleWidget::decodingFinished(const QAudioBuffer &buffer)
|
|||||||
updateStatus();
|
updateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::learnPressed()
|
void DrumPadSampleWidget::learnPressed()
|
||||||
{
|
{
|
||||||
auto palette = m_ui->toolButtonLearn->palette();
|
auto palette = m_ui->toolButtonLearn->palette();
|
||||||
|
|
||||||
@ -328,7 +328,7 @@ void SampleWidget::learnPressed()
|
|||||||
m_learning = !m_learning;
|
m_learning = !m_learning;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SampleWidget::startRequest()
|
void DrumPadSampleWidget::startRequest()
|
||||||
{
|
{
|
||||||
if (m_networkAccessManager && m_file->filename)
|
if (m_networkAccessManager && m_file->filename)
|
||||||
{
|
{
|
||||||
@ -336,7 +336,7 @@ void SampleWidget::startRequest()
|
|||||||
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
|
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
|
||||||
request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, true);
|
request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, true);
|
||||||
m_reply = std::shared_ptr<QNetworkReply>{m_networkAccessManager->get(request)};
|
m_reply = std::shared_ptr<QNetworkReply>{m_networkAccessManager->get(request)};
|
||||||
connect(m_reply.get(), &QNetworkReply::finished, this, &SampleWidget::requestFinished);
|
connect(m_reply.get(), &QNetworkReply::finished, this, &DrumPadSampleWidget::requestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateStatus();
|
updateStatus();
|
@ -7,7 +7,7 @@
|
|||||||
#include "drumpadpresets.h"
|
#include "drumpadpresets.h"
|
||||||
#include "audioplayer.h"
|
#include "audioplayer.h"
|
||||||
|
|
||||||
namespace Ui { class SampleWidget; }
|
namespace Ui { class DrumPadSampleWidget; }
|
||||||
class QNetworkAccessManager;
|
class QNetworkAccessManager;
|
||||||
class QNetworkReply;
|
class QNetworkReply;
|
||||||
class QAudioBuffer;
|
class QAudioBuffer;
|
||||||
@ -16,13 +16,13 @@ class DrumMachineSettings;
|
|||||||
namespace midi { struct MidiMessage; }
|
namespace midi { struct MidiMessage; }
|
||||||
struct frame_t;
|
struct frame_t;
|
||||||
|
|
||||||
class SampleWidget : public QFrame
|
class DrumPadSampleWidget : public QFrame
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SampleWidget(QWidget *parent = nullptr);
|
explicit DrumPadSampleWidget(QWidget *parent = nullptr);
|
||||||
~SampleWidget() override;
|
~DrumPadSampleWidget() override;
|
||||||
|
|
||||||
quint8 padNr() const { return m_padNr; }
|
quint8 padNr() const { return m_padNr; }
|
||||||
void setPadNr(quint8 padNr) { m_padNr = padNr; }
|
void setPadNr(quint8 padNr) { m_padNr = padNr; }
|
||||||
@ -75,7 +75,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
void startRequest();
|
void startRequest();
|
||||||
|
|
||||||
const std::unique_ptr<Ui::SampleWidget> m_ui;
|
const std::unique_ptr<Ui::DrumPadSampleWidget> m_ui;
|
||||||
|
|
||||||
DrumMachineSettings *m_settings{};
|
DrumMachineSettings *m_settings{};
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>SampleWidget</class>
|
<class>DrumPadSampleWidget</class>
|
||||||
<widget class="QFrame" name="SampleWidget">
|
<widget class="QFrame" name="DrumPadSampleWidget">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
@ -23,9 +23,9 @@ DrumPadWidget::DrumPadWidget(QWidget *parent) :
|
|||||||
connect(m_ui->pushButtonRefresh, &QAbstractButton::pressed, this, &DrumPadWidget::loadPresets);
|
connect(m_ui->pushButtonRefresh, &QAbstractButton::pressed, this, &DrumPadWidget::loadPresets);
|
||||||
|
|
||||||
connect(m_ui->sequencerWidget, &SequencerWidget::sendMidi, this, &DrumPadWidget::sendMidi);
|
connect(m_ui->sequencerWidget, &SequencerWidget::sendMidi, this, &DrumPadWidget::sendMidi);
|
||||||
connect(m_ui->samplesWidget, &SamplesWidget::sendMidi, this, &DrumPadWidget::sendMidi);
|
connect(m_ui->samplesWidget, &DrumPadSamplesWidget::sendMidi, this, &DrumPadWidget::sendMidi);
|
||||||
|
|
||||||
connect(m_ui->sequencerWidget, &SequencerWidget::triggerSample, m_ui->samplesWidget, &SamplesWidget::sequencerTriggerSample);
|
connect(m_ui->sequencerWidget, &SequencerWidget::triggerSample, m_ui->samplesWidget, &DrumPadSamplesWidget::sequencerTriggerSample);
|
||||||
|
|
||||||
m_presetsProxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive);
|
m_presetsProxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||||
m_presetsProxyModel.setSortRole(Qt::EditRole);
|
m_presetsProxyModel.setSortRole(Qt::EditRole);
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include "drumpadfilesmodel.h"
|
#include "drumpadfilesmodel.h"
|
||||||
|
|
||||||
namespace Ui { class DrumPadWidget; }
|
namespace Ui { class DrumPadWidget; }
|
||||||
class SamplesWidget;
|
|
||||||
class SequencerWidget;
|
class SequencerWidget;
|
||||||
class QModelIndex;
|
class QModelIndex;
|
||||||
class QNetworkAccessManager;
|
class QNetworkAccessManager;
|
||||||
|
@ -109,14 +109,14 @@
|
|||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<widget class="SequencerWidget" name="sequencerWidget" native="true"/>
|
<widget class="SequencerWidget" name="sequencerWidget" native="true"/>
|
||||||
<widget class="SamplesWidget" name="samplesWidget" native="true"/>
|
<widget class="DrumPadSamplesWidget" name="samplesWidget" native="true"/>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SamplesWidget</class>
|
<class>DrumPadSamplesWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>widgets/sampleswidget.h</header>
|
<header>widgets/drumpadsampleswidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
Reference in New Issue
Block a user