Added learn button to samples

This commit is contained in:
2022-12-17 16:46:14 +01:00
parent cb658fd696
commit b0024829ee
4 changed files with 51 additions and 1 deletions

View File

@ -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();

View File

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

View File

@ -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<QIODevice> &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<presets::File> m_file;
QNetworkAccessManager *m_networkAccessManager{};
bool m_learning{};
QColor m_oldColor;
QBrush m_oldBrush;
};

View File

@ -100,6 +100,13 @@
<item>
<widget class="QSpinBox" name="noteSpinBox"/>
</item>
<item>
<widget class="QToolButton" name="toolButtonLearn">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>