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())
|
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))
|
if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0))
|
||||||
widget.released();
|
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::pressed, this, [this](){ pressed(127); });
|
||||||
connect(m_ui->pushButton, &QAbstractButton::released, this, &SampleWidget::released);
|
connect(m_ui->pushButton, &QAbstractButton::released, this, &SampleWidget::released);
|
||||||
|
connect(m_ui->toolButtonLearn, &QAbstractButton::pressed, this, &SampleWidget::learnPressed);
|
||||||
|
|
||||||
updateStatus();
|
updateStatus();
|
||||||
}
|
}
|
||||||
@ -158,6 +159,14 @@ void SampleWidget::writeSamples(frame_t *begin, frame_t *end)
|
|||||||
m_player.writeSamples(begin, end);
|
m_player.writeSamples(begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SampleWidget::learn(quint8 channel, quint8 note)
|
||||||
|
{
|
||||||
|
setChannel(channel);
|
||||||
|
setNote(note);
|
||||||
|
if (m_learning)
|
||||||
|
learnPressed();
|
||||||
|
}
|
||||||
|
|
||||||
void SampleWidget::updateStatus()
|
void SampleWidget::updateStatus()
|
||||||
{
|
{
|
||||||
QPalette pal;
|
QPalette pal;
|
||||||
@ -224,6 +233,28 @@ void SampleWidget::decodingFinished(const QAudioBuffer &buffer)
|
|||||||
updateStatus();
|
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()
|
void SampleWidget::startRequest()
|
||||||
{
|
{
|
||||||
if (m_networkAccessManager && m_file->filename)
|
if (m_networkAccessManager && m_file->filename)
|
||||||
|
@ -48,6 +48,9 @@ public:
|
|||||||
|
|
||||||
void writeSamples(frame_t *begin, frame_t *end);
|
void writeSamples(frame_t *begin, frame_t *end);
|
||||||
|
|
||||||
|
bool isLearning() const { return m_learning; }
|
||||||
|
void learn(quint8 channel, quint8 note);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void chokeTriggered(int choke);
|
void chokeTriggered(int choke);
|
||||||
void startDecoding(const std::shared_ptr<QIODevice> &device);
|
void startDecoding(const std::shared_ptr<QIODevice> &device);
|
||||||
@ -56,6 +59,7 @@ private slots:
|
|||||||
void updateStatus();
|
void updateStatus();
|
||||||
void requestFinished();
|
void requestFinished();
|
||||||
void decodingFinished(const QAudioBuffer &buffer);
|
void decodingFinished(const QAudioBuffer &buffer);
|
||||||
|
void learnPressed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void startRequest();
|
void startRequest();
|
||||||
@ -72,4 +76,8 @@ private:
|
|||||||
std::optional<presets::File> m_file;
|
std::optional<presets::File> m_file;
|
||||||
|
|
||||||
QNetworkAccessManager *m_networkAccessManager{};
|
QNetworkAccessManager *m_networkAccessManager{};
|
||||||
|
|
||||||
|
bool m_learning{};
|
||||||
|
QColor m_oldColor;
|
||||||
|
QBrush m_oldBrush;
|
||||||
};
|
};
|
||||||
|
@ -100,6 +100,13 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="noteSpinBox"/>
|
<widget class="QSpinBox" name="noteSpinBox"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="toolButtonLearn">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
Reference in New Issue
Block a user