Kuesa Runtime

Kuesa Music Box QML Example

 /*
     sampler.h

     This file is part of Kuesa.

     Copyright (C) 2018-2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
     Author: Jean-Michaël Celerier <jean-michael.celerier@kdab.com>

     Licensees holding valid proprietary KDAB Kuesa licenses may use this file in
     accordance with the Kuesa Enterprise License Agreement provided with the Software in the
     LICENSE.KUESA.ENTERPRISE file.

     Contact info@kdab.com if any conditions of this licensing are not clear to you.

     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU Affero General Public License as
     published by the Free Software Foundation, either version 3 of the
     License, or (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU Affero General Public License for more details.

     You should have received a copy of the GNU Affero General Public License
     along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

 #ifndef KUESA_MUSIC_BOX_SAMPLER_H
 #define KUESA_MUSIC_BOX_SAMPLER_H
 #include <QObject>
 #include <QVariantMap>

 class SamplerPrivate;
 class Sampler : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QStringList notes READ notes WRITE setNotes NOTIFY notesChanged)
 public:
     Sampler(QObject *parent = nullptr);
     ~Sampler();

     Q_INVOKABLE void note(int sample, float volume);

     QStringList notes() const;

 public slots:
     void setNotes(QStringList note);

 signals:
     void notesChanged(QStringList notes);
     void audioSignal(float rms, float peak);

 private:
     Q_DECLARE_PRIVATE(Sampler)
     Q_DISABLE_COPY(Sampler)
     QScopedPointer<SamplerPrivate> d_ptr;
     QStringList m_notes;
 };

 #endif