Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
audioplayerthreadforqt.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 #ifndef AUDIOPLAYERTHREADFORQT_H
21 #define AUDIOPLAYERTHREADFORQT_H
22 
23 #include "audioplayerforqt.h"
24 #include <QAudioOutput>
25 #include <mutex>
26 #include <atomic>
27 #include <QThread>
28 
35 
36 class AudioPlayerThreadForQt : public QObject
37 {
38  Q_OBJECT
39 
40 public:
41  static const double BufferMilliseconds;
42  typedef int16_t DataFormat;
45 
47  void setPause(bool pause);
48  bool isRunning () { return mThreadRunning; }
49 
50 public slots:
51  void workerFunction();
52 
53 private:
54  void init();
55  void exit();
56  void start();
57  void stop();
58 
59 signals:
60  void finished();
61  void error(QString err);
62 
63 private:
65  QAudioOutput *mAudioSink;
66  QIODevice *mIODevice;
67  std::atomic<bool> mThreadRunning;
68  std::atomic<bool> mPause;
69 };
70 
71 
72 #endif // AUDIOPLAYERTHREADFORQT_H
QAudioOutput * mAudioSink
Audio sink to which the data is sent.
AudioPlayerThreadForQt(AudioPlayerForQt *audio)
Constructor.
void start()
Start the Qt audio device.
void stop()
Stop the Qt audio device.
QIODevice * mIODevice
Qt IO device pointer.
AudioPlayerForQt * mAudioSource
Audio source where the data comes from.
Class for the audio player thread.
The AudioPlayerForQt class.
void workerFunction()
Main worker function of the Qt audio manager.
std::atomic< bool > mThreadRunning
Boolean indicating that the thread is running.
void init()
Initialize the audio player.
void error(QString err)
std::atomic< bool > mPause
Boolean indicating that the thread is pausing.
void exit()
Exit from the Qt audio player.
void setPause(bool pause)
Pause the audio player.
static const double BufferMilliseconds