audioengine.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. This file is part of QTau
  3. Copyright (C) 2013-2018 Tobias "Tomoko" Platen <tplaten@posteo.de>
  4. Copyright (C) 2013 digited <https://github.com/digited>
  5. Copyright (C) 2010-2013 HAL@ShurabaP <https://github.com/haruneko>
  6. QTau is free software: you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation, either version 3 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. SPDX-License-Identifier: GPL-3.0+
  17. */
  18. #ifndef AUDIOENGINE_H
  19. #define AUDIOENGINE_H
  20. #include <QObject>
  21. #include <QThread>
  22. class JackAudio;
  23. class OutputBuffer;
  24. class IPreviewSynth;
  25. // class ISynth;
  26. class qtauController;
  27. class AudioEngine : public QThread {
  28. JackAudio* _jack = nullptr;
  29. float* _jack_buffer = nullptr;
  30. int _jack_buffer_size = 0;
  31. int _eventfd = 0;
  32. bool _useJackTransport = false;
  33. bool _localTransportRolling = false;
  34. int _pos = 0;
  35. int _lastJackTransportPos = 0;
  36. OutputBuffer* _outp = nullptr;
  37. IPreviewSynth* _preview = nullptr;
  38. bool _running = true;
  39. Q_OBJECT
  40. public:
  41. explicit AudioEngine(JackAudio* jack, QObject* parent = 0);
  42. void run() override;
  43. bool useJackTransport() { return _useJackTransport; }
  44. void setLocalTransportRolling(bool value) { _localTransportRolling = value; }
  45. void setUseJackTransport(bool value) { _useJackTransport = value; }
  46. void setOutputBuffer(OutputBuffer* outp) { _outp = outp; }
  47. void setPreviewSynth(IPreviewSynth* psynth) { _preview = psynth; }
  48. int transportPosition() { return _pos; }
  49. void setTransportPosition(int value) { _pos = value; }
  50. bool localTransportRolling() { return _localTransportRolling; }
  51. void shutdown();
  52. signals:
  53. public slots:
  54. };
  55. #endif // AUDIOENGINE_H