Added learn button to samples
This commit is contained in:
@ -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();
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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>
|
||||
|
Reference in New Issue
Block a user