2020-04-25 20:53:49 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
2020-04-27 22:59:30 +02:00
|
|
|
#include <QThread>
|
2022-12-18 03:30:46 +01:00
|
|
|
#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"
|
2022-12-17 21:56:23 +01:00
|
|
|
#include "midioutwrapper.h"
|
2022-12-17 17:28:06 +01:00
|
|
|
#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:
|
2022-12-18 03:30:46 +01:00
|
|
|
explicit MainWindow(QWidget *parent = nullptr);
|
2020-04-25 20:53:49 +02:00
|
|
|
~MainWindow() override;
|
|
|
|
|
2022-12-18 03:30:46 +01:00
|
|
|
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();
|
2022-12-26 11:49:35 +01:00
|
|
|
void openMidiInDevice();
|
|
|
|
void openMidiOutDevice();
|
2022-12-27 20:54:38 +01:00
|
|
|
void midiReceived(const midi::MidiMessage &message);
|
2023-06-10 21:31:50 +02:00
|
|
|
void onQuarterNote();
|
2022-12-17 21:56:23 +01:00
|
|
|
void sendMidi(const midi::MidiMessage &midiMsg);
|
2022-12-18 03:30:46 +01:00
|
|
|
void currentChanged(int index);
|
2020-04-25 20:53:49 +02:00
|
|
|
|
|
|
|
private:
|
2022-12-26 11:49:35 +01:00
|
|
|
void updateAudioDevices();
|
2022-12-17 21:56:23 +01:00
|
|
|
void updateMidiInDevices();
|
|
|
|
void updateMidiOutDevices();
|
2022-12-17 17:28:06 +01:00
|
|
|
void loadSettings();
|
2022-12-18 03:30:46 +01:00
|
|
|
void unsendColors(int index);
|
|
|
|
void sendColors(int index);
|
2020-04-25 20:53:49 +02:00
|
|
|
|
|
|
|
const std::unique_ptr<Ui::MainWindow> m_ui;
|
|
|
|
|
2022-12-17 17:28:06 +01:00
|
|
|
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;
|
2022-12-17 21:56:23 +01:00
|
|
|
MidiOutWrapper m_midiOut;
|
2020-04-25 20:53:49 +02:00
|
|
|
|
2022-12-18 03:30:46 +01:00
|
|
|
QNetworkAccessManager m_networkAccessManager;
|
|
|
|
QNetworkDiskCache m_cache;
|
2020-04-27 22:59:30 +02:00
|
|
|
|
2022-12-18 03:30:46 +01:00
|
|
|
QThread m_decoderThread;
|
2020-04-25 20:53:49 +02:00
|
|
|
|
2022-12-18 03:30:46 +01:00
|
|
|
int m_lastIndex;
|
2020-04-25 20:53:49 +02:00
|
|
|
};
|