From b0024829ee4e4765f39f500f15d174683469fd62 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 17 Dec 2022 16:46:14 +0100 Subject: [PATCH] Added learn button to samples --- sampleswidget.cpp | 6 +++++- samplewidget.cpp | 31 +++++++++++++++++++++++++++++++ samplewidget.h | 8 ++++++++ samplewidget.ui | 7 +++++++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/sampleswidget.cpp b/sampleswidget.cpp index 9d04f80..bf18b9b 100755 --- a/sampleswidget.cpp +++ b/sampleswidget.cpp @@ -65,7 +65,11 @@ void SamplesWidget::messageReceived(const midi::MidiMessage &message) for (SampleWidget &widget : getWidgets()) { - if (widget.channel() == message.channel && widget.note() == message.note) + if (widget.isLearning()) + { + widget.learn(message.channel, message.note); + } + else if (widget.channel() == message.channel && widget.note() == message.note) { if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0)) widget.released(); diff --git a/samplewidget.cpp b/samplewidget.cpp index 86f6f07..52d92d9 100755 --- a/samplewidget.cpp +++ b/samplewidget.cpp @@ -30,6 +30,7 @@ SampleWidget::SampleWidget(QWidget *parent) : connect(m_ui->pushButton, &QAbstractButton::pressed, this, [this](){ pressed(127); }); connect(m_ui->pushButton, &QAbstractButton::released, this, &SampleWidget::released); + connect(m_ui->toolButtonLearn, &QAbstractButton::pressed, this, &SampleWidget::learnPressed); updateStatus(); } @@ -158,6 +159,14 @@ void SampleWidget::writeSamples(frame_t *begin, frame_t *end) m_player.writeSamples(begin, end); } +void SampleWidget::learn(quint8 channel, quint8 note) +{ + setChannel(channel); + setNote(note); + if (m_learning) + learnPressed(); +} + void SampleWidget::updateStatus() { QPalette pal; @@ -224,6 +233,28 @@ void SampleWidget::decodingFinished(const QAudioBuffer &buffer) updateStatus(); } +void SampleWidget::learnPressed() +{ + auto palette = m_ui->toolButtonLearn->palette(); + + if (m_learning) + { + palette.setColor(m_ui->toolButtonLearn->backgroundRole(), m_oldColor); + palette.setBrush(m_ui->toolButtonLearn->backgroundRole(), m_oldBrush); + } + else + { + m_oldColor = palette.color(m_ui->toolButtonLearn->backgroundRole()); + m_oldBrush = palette.brush(m_ui->toolButtonLearn->backgroundRole()); + palette.setColor(m_ui->toolButtonLearn->backgroundRole(), Qt::red); + palette.setBrush(m_ui->toolButtonLearn->backgroundRole(), Qt::red); + } + m_ui->toolButtonLearn->setPalette(palette); + + m_learning = !m_learning; + qDebug() << m_learning; +} + void SampleWidget::startRequest() { if (m_networkAccessManager && m_file->filename) diff --git a/samplewidget.h b/samplewidget.h index d458a98..9f7470e 100755 --- a/samplewidget.h +++ b/samplewidget.h @@ -48,6 +48,9 @@ public: void writeSamples(frame_t *begin, frame_t *end); + bool isLearning() const { return m_learning; } + void learn(quint8 channel, quint8 note); + signals: void chokeTriggered(int choke); void startDecoding(const std::shared_ptr &device); @@ -56,6 +59,7 @@ private slots: void updateStatus(); void requestFinished(); void decodingFinished(const QAudioBuffer &buffer); + void learnPressed(); private: void startRequest(); @@ -72,4 +76,8 @@ private: std::optional m_file; QNetworkAccessManager *m_networkAccessManager{}; + + bool m_learning{}; + QColor m_oldColor; + QBrush m_oldBrush; }; diff --git a/samplewidget.ui b/samplewidget.ui index 6472c87..28f4140 100755 --- a/samplewidget.ui +++ b/samplewidget.ui @@ -100,6 +100,13 @@ + + + + ... + + +