Files
DrumMachine/widgets/mainwindow.h

64 lines
1.3 KiB
C
Raw Permalink Normal View History

2020-04-25 20:53:49 +02:00
#pragma once
#include <memory>
#include <QMainWindow>
2020-04-27 22:59:30 +02:00
#include <QThread>
#include <QNetworkAccessManager>
#include <QNetworkDiskCache>
2020-04-25 20:53:49 +02:00
2020-04-26 20:49:20 +02:00
#include "portaudio.h"
2020-04-25 20:53:49 +02:00
#include "midiinwrapper.h"
#include "midioutwrapper.h"
#include "drummachinesettings.h"
2020-04-25 20:53:49 +02:00
namespace Ui { class MainWindow; }
namespace midi { struct MidiMessage; }
2022-12-27 21:19:21 +01:00
struct frame_t;
2020-04-25 20:53:49 +02:00
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
2020-04-25 20:53:49 +02:00
~MainWindow() override;
int writeSamples(frame_t *begin, frame_t *end);
2020-04-26 20:49:20 +02:00
2020-04-25 20:53:49 +02:00
private slots:
2022-12-27 23:43:09 +01:00
void showSettings();
2020-04-26 20:49:20 +02:00
void openAudioDevice();
void openMidiInDevice();
void openMidiOutDevice();
void midiReceived(const midi::MidiMessage &message);
2023-06-10 21:31:50 +02:00
void onQuarterNote();
void sendMidi(const midi::MidiMessage &midiMsg);
void currentChanged(int index);
2020-04-25 20:53:49 +02:00
private:
void updateAudioDevices();
void updateMidiInDevices();
void updateMidiOutDevices();
void loadSettings();
void unsendColors(int index);
void sendColors(int index);
2020-04-25 20:53:49 +02:00
const std::unique_ptr<Ui::MainWindow> m_ui;
DrumMachineSettings m_settings;
2020-04-26 20:49:20 +02:00
std::unique_ptr<PaStream, void(*)(PaStream*)> m_paStream;
2020-04-25 20:53:49 +02:00
2020-04-26 20:49:20 +02:00
MidiInWrapper m_midiIn;
MidiOutWrapper m_midiOut;
2020-04-25 20:53:49 +02:00
QNetworkAccessManager m_networkAccessManager;
QNetworkDiskCache m_cache;
2020-04-27 22:59:30 +02:00
QThread m_decoderThread;
2020-04-25 20:53:49 +02:00
int m_lastIndex;
2020-04-25 20:53:49 +02:00
};