diff --git a/src/sound/tqtaudioin.cpp b/src/sound/tqtaudioin.cpp
index b7d534b6b5ab400e71e92026d729b21945aad3c4..120d549c6e3415845a0c35d30093fde0eb93d3e3 100644
--- a/src/sound/tqtaudioin.cpp
+++ b/src/sound/tqtaudioin.cpp
@@ -26,6 +26,7 @@
 #include <QtCore/qthread.h>
 #include <QtGui/qevent.h>
 #include <QtMultimedia/qaudioinput.h>
+#include <QtMultimedia/qmediadevices.h>
 #include <QtWidgets/qapplication.h>
 
 #include <QtCore/qdebug.h>
@@ -36,9 +37,9 @@
 QStringList TaudioIN::getAudioDevicesList()
 {
     QStringList devNamesList;
-    QList<QAudioDeviceInfo> devList = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
-    for (int i = 0; i < devList.size(); ++i)
-        devNamesList << devList[i].deviceName();
+    auto devList = QMediaDevices::audioInputs();
+    for (auto const &d : devList)
+        devNamesList << d.description();
     return devNamesList;
 }
 
@@ -48,8 +49,6 @@ QString TaudioIN::m_deviceName = QStringLiteral("anything");
 TaudioIN::TaudioIN(TaudioParams *params, QObject *parent)
     : TcommonListener(params, parent)
     , m_audioParams(params)
-    , m_audioIN(nullptr)
-    , m_inBuffer(nullptr)
 {
     if (m_instance) {
         qDebug() << "Nothing of this kind... TaudioIN already exist!";
@@ -67,9 +66,9 @@ TaudioIN::~TaudioIN()
 {
     stopListening();
     delete m_touchHandler;
-    if (m_audioIN) {
-        m_audioIN->blockSignals(true); // otherwise stop() will activate it again
-        m_audioIN->stop();
+    if (m_mediaIN) {
+        m_mediaIN->blockSignals(true); // otherwise stop() will activate it again
+        m_mediaIN->stop();
     }
 
     m_audioParams->INdevName = m_deviceName; // store device name at the app exit
@@ -90,18 +89,18 @@ void TaudioIN::updateAudioParams()
 
 void TaudioIN::stopDevice()
 {
-    if (m_audioIN) {
-        disconnect(m_audioIN, &QAudioInput::stateChanged, this, &TaudioIN::stateChangedSlot);
-        m_audioIN->stop();
+    if (m_mediaIN) {
+        disconnect(m_mediaIN, &QMediaRecorder::recorderStateChanged, this, &TaudioIN::stateChangedSlot);
+        m_mediaIN->stop();
     } else
         qDebug() << "[tqtaudioin] Input device doesn't exist! Nothing to stop!";
 }
 
 void TaudioIN::startDevice()
 {
-    if (m_audioIN) {
-        m_audioIN->start(m_inBuffer);
-        connect(m_audioIN, &QAudioInput::stateChanged, this, &TaudioIN::stateChangedSlot, Qt::UniqueConnection);
+    if (m_mediaIN) {
+        m_mediaIN->record();
+        connect(m_mediaIN, &QMediaRecorder::recorderStateChanged, this, &TaudioIN::stateChangedSlot, Qt::UniqueConnection);
     } else
         qDebug() << "[tqtaudioin] Input device doesn't exist! Nothing to start!";
 }
@@ -109,7 +108,7 @@ void TaudioIN::startDevice()
 void TaudioIN::startListening()
 {
     m_touchHandler->skip();
-    if (m_audioIN && m_audioIN->state() == QAudio::StoppedState)
+    if (m_mediaIN && m_mediaIN->recorderState() == QMediaRecorder::RecordingState)
         startDevice();
     if (detectingState() == e_stopped) {
         resetVolume();
@@ -135,18 +134,18 @@ void TaudioIN::stopListening()
 // ###################              PRIVATE             ############################################
 // #################################################################################################
 
-void TaudioIN::stateChangedSlot(QAudio::State s)
+void TaudioIN::stateChangedSlot(QMediaRecorder::RecorderState s)
 {
-    if (s != QAudio::ActiveState) {
+    if (s != QMediaRecorder::RecordingState) {
         qDebug() << "[TaudioIN] input device is not active, trying to activate";
-        if (m_audioIN->error() != QAudio::NoError)
-            qDebug() << "[TaudioIN] error occurred" << m_audioIN->error();
+        if (m_mediaIN->error() != QMediaRecorder::NoError)
+            qDebug() << "[TaudioIN] error occurred" << m_mediaIN->error();
         m_audioIN->blockSignals(true);
         QTimer::singleShot(100, this, [=] {
-            if (m_audioIN->state() != QAudio::StoppedState)
-                m_audioIN->stop();
-            m_audioIN->start(m_inBuffer);
-            m_audioIN->blockSignals(false);
+            if (m_mediaIN->recorderState() != QMediaRecorder::StoppedState)
+                m_mediaIN->stop();
+            m_mediaIN->record();
+            m_mediaIN->blockSignals(false);
             qDebug() << "[TaudioIN] input device started again";
         });
     }
@@ -154,36 +153,36 @@ void TaudioIN::stateChangedSlot(QAudio::State s)
 
 void TaudioIN::createInputDevice()
 {
-    m_deviceInfo = QAudioDeviceInfo::defaultInputDevice();
-    QList<QAudioDeviceInfo> devList = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
-    for (int i = 0; i < devList.size(); ++i) { // find device with name or keep default one
-        if (devList[i].deviceName() == m_audioParams->INdevName) {
-            m_deviceInfo = devList[i];
-            break;
-        }
-    }
-    m_deviceName = m_deviceInfo.deviceName();
+    m_deviceInfo = QMediaDevices::defaultAudioInput();
+    // QList<QAudioDeviceInfo> devList = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+    // for (int i = 0; i < devList.size(); ++i) { // find device with name or keep default one
+    //     if (devList[i].deviceName() == m_audioParams->INdevName) {
+    //         m_deviceInfo = devList[i];
+    //         break;
+    //     }
+    // }
+    m_deviceName = m_deviceInfo.description();
     qDebug() << "IN:" << m_deviceName;
     QAudioFormat format;
     format.setChannelCount(1);
     format.setSampleRate(48000);
-    format.setSampleType(QAudioFormat::SignedInt);
-    format.setSampleSize(16);
-    format.setCodec("audio/pcm");
-    format.setByteOrder(QAudioFormat::LittleEndian);
-    if (!m_deviceInfo.isFormatSupported(format)) {
-        qDebug() << "[TaudioIN] Format 48000/16 mono is not supported";
-        format = m_deviceInfo.nearestFormat(format);
-        qDebug() << "[TaudioIN] Format is" << format.sampleRate() << format.channelCount() << format.sampleSize();
-    }
+    // format.setSampleType(QAudioFormat::SignedInt);
+    // format.setSampleSize(16);
+    // format.setCodec("audio/pcm");
+    // format.setByteOrder(QAudioFormat::LittleEndian);
+    // if (!m_deviceInfo.isFormatSupported(format)) {
+    //     qDebug() << "[TaudioIN] Format 48000/16 mono is not supported";
+    //     format = m_deviceInfo.nearestFormat(format);
+    //     qDebug() << "[TaudioIN] Format is" << format.sampleRate() << format.channelCount() << format.sampleSize();
+    // }
 
     if (m_audioIN) {
         delete m_audioIN;
         m_inBuffer->close();
     }
-    m_audioIN = new QAudioInput(m_deviceInfo, format, this);
-    finder()->setSampleRate(m_audioIN->format().sampleRate()); // framesPerChunk is determined here
-    m_audioIN->setBufferSize(1024); // about 11ms
+    m_audioIN = new QAudioInput(this);
+    finder()->setSampleRate(48000); // framesPerChunk is determined here
+    // m_audioIN->setBufferSize(1024); // about 11ms
 
     m_inBuffer->open(QIODevice::WriteOnly);
     m_inBuffer->setBufferSize(0); // respect amount of data send by input device, otherwise it will be overwritten
diff --git a/src/sound/tqtaudioin.h b/src/sound/tqtaudioin.h
index 431358f54ca477ac50959889995603ade8511360..44253f13e09cfb39b25d3604a32a1a30c330b3a2 100644
--- a/src/sound/tqtaudioin.h
+++ b/src/sound/tqtaudioin.h
@@ -22,7 +22,8 @@
 #include "tcommonlistener.h"
 #include <QtCore/qiodevice.h>
 #include <QtCore/qtimer.h>
-#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudiodevice.h>
+#include <QtMultimedia/qmediarecorder.h>
 
 class QAudioInput;
 class QIODevice;
@@ -94,7 +95,7 @@ public slots:
 
 protected slots:
     void bufferReady(const char *data, qint64 &dataLenght);
-    void stateChangedSlot(QAudio::State s);
+    void stateChangedSlot(QMediaRecorder::RecorderState s);
 
 private:
     /**
@@ -106,9 +107,10 @@ private:
     static TaudioIN *m_instance;
     static QString m_deviceName;
     TaudioParams *m_audioParams;
-    QAudioInput *m_audioIN;
-    QAudioDeviceInfo m_deviceInfo;
-    TaudioBuffer *m_inBuffer;
+    QAudioInput *m_audioIN = nullptr;
+    QAudioDevice m_deviceInfo;
+    TaudioBuffer *m_inBuffer = nullptr;
+    QMediaRecorder *m_mediaIN = nullptr;
     TtouchHandler *m_touchHandler;
 };
 
diff --git a/src/sound/tqtaudioout.cpp b/src/sound/tqtaudioout.cpp
index 0f0b9209ea0b4f4078adba882d0d724029ebede4..ac8daa2d006abd3b35c2c01768ea43c7c4891f58 100644
--- a/src/sound/tqtaudioout.cpp
+++ b/src/sound/tqtaudioout.cpp
@@ -18,7 +18,7 @@
 
 #include "tqtaudioout.h"
 #include "taudiobuffer.h"
-#include "taudioobject.h"
+// #include "taudioobject.h"
 #include "toggscale.h"
 #include <taudioparams.h>
 #include <tglobals.h>
@@ -27,6 +27,7 @@
 #include <QtCore/qthread.h>
 #include <QtCore/qtimer.h>
 #include <QtMultimedia/qaudiooutput.h>
+#include <QtMultimedia/qmediadevices.h>
 
 #define CROSS_SMP (2200) // 50ms
 #define INVALID_NOTE_NR (-100)
@@ -36,9 +37,9 @@
 QStringList TaudioOUT::getAudioDevicesList()
 {
     QStringList devNamesList;
-    QList<QAudioDeviceInfo> devList = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
-    for (int i = 0; i < devList.size(); ++i)
-        devNamesList << devList[i].deviceName();
+    auto devList = QMediaDevices::audioOutputs();
+    for (const auto &outDev : devList)
+        devNamesList << outDev.description();
     return devNamesList;
 }
 
@@ -108,44 +109,51 @@ void TaudioOUT::setAudioOutParams()
 
 void TaudioOUT::createOutputDevice()
 {
-    m_deviceInfo = QAudioDeviceInfo::defaultOutputDevice();
-    auto devList = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
-    for (int i = 0; i < devList.size(); ++i) { // find device with name or keep default one
-        if (devList[i].deviceName() == m_audioParams->OUTdevName) {
-            m_deviceInfo = devList[i];
-            break;
-        }
-    }
-    m_devName = m_deviceInfo.deviceName();
+    m_deviceInfo = QMediaDevices::defaultAudioOutput(); // QAudioDeviceInfo::defaultOutputDevice();
+    // auto devList = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
+    // for (int i = 0; i < devList.size(); ++i) { // find device with name or keep default one
+    //     if (devList[i].deviceName() == m_audioParams->OUTdevName) {
+    //         m_deviceInfo = devList[i];
+    //         break;
+    //     }
+    // }
+    m_devName = m_deviceInfo.description();
     QAudioFormat format;
     format.setChannelCount(1); // Mono
     format.setSampleRate(m_sampleRate);
-    format.setSampleType(QAudioFormat::SignedInt);
-    format.setSampleSize(16);
-    format.setCodec("audio/pcm");
-    format.setByteOrder(QAudioFormat::LittleEndian);
-    if (!m_deviceInfo.isFormatSupported(format)) {
-        qDebug() << "Output Format 44100/16 stereo is not supported";
-        format = m_deviceInfo.nearestFormat(format);
-        qDebug() << "Format is" << format.sampleRate() << format.channelCount() << format.sampleSize();
-    }
-    m_sampleRate = format.sampleRate();
+    format.setSampleFormat(QAudioFormat::Int16);
+    // format.setSampleSize(16);
+    // format.setCodec("audio/pcm");
+    // format.setByteOrder(QAudioFormat::LittleEndian);
+    // if (!m_deviceInfo.isFormatSupported(format)) {
+    //     qDebug() << "Output Format 44100/16 stereo is not supported";
+    //     format = m_deviceInfo.nearestFormat(format);
+    //     qDebug() << "Format is" << format.sampleRate() << format.channelCount() << format.sampleSize();
+    // }
+    // m_sampleRate = format.sampleRate();
 
     if (m_audioOUT) {
         delete m_audioOUT;
         delete m_buffer;
     }
-    m_audioOUT = new QAudioOutput(m_deviceInfo, format, this);
-    m_audioOUT->setBufferSize(m_bufferFrames * 2);
+    m_audioOUT = new QAudioOutput(this);
+    m_audioOUT->setDevice(m_deviceInfo);
+    m_mediaOUT = new QMediaPlayer(this);
+    m_mediaOUT->setAudioOutput(m_audioOUT);
+
+    // m_audioOUT = new QAudioOutput(m_deviceInfo, format, this);
+    // m_audioOUT->setBufferSize(m_bufferFrames * 2);
 
     m_buffer = new TaudioBuffer(this);
     m_buffer->open(QIODevice::ReadOnly);
-    m_buffer->setBufferSize(m_audioOUT->bufferSize());
+    // m_buffer->setBufferSize(m_audioOUT->bufferSize());
+    m_buffer->setBufferSize(m_bufferFrames * 2);
+    m_mediaOUT->setSourceDevice(m_buffer);
 
-    qDebug() << "OUT:" << m_deviceInfo.deviceName() << m_audioOUT->format().sampleRate();
+    qDebug() << "OUT:" << m_deviceInfo.description(); // << m_audioOUT->format().sampleRate();
 
     connect(m_buffer, &TaudioBuffer::feedAudio, this, &TaudioOUT::outCallBack, Qt::DirectConnection);
-    connect(m_audioOUT, &QAudioOutput::stateChanged, this, &TaudioOUT::stateChangedSlot);
+    // connect(m_mediaOUT, &QMediaPlayer::mediaStatusChanged, this, &TaudioOUT::stateChangedSlot);
 }
 
 #include <QtCore/qelapsedtimer.h>
@@ -187,9 +195,9 @@ void TaudioOUT::startPlaying()
 
 void TaudioOUT::startPlayingSlot()
 {
-    if (m_audioOUT->state() != QAudio::ActiveState) {
+    if (m_mediaOUT->playbackState() != QMediaPlayer::PlayingState) {
         qDebug() << "preparation time" << pt.elapsed();
-        m_audioOUT->start(m_buffer);
+        m_mediaOUT->play();
     }
 }
 
@@ -300,15 +308,15 @@ void TaudioOUT::outCallBack(char *data, qint64 maxLen, qint64 &wasRead)
     }
 }
 
-void TaudioOUT::stateChangedSlot(QAudio::State state)
+void TaudioOUT::stateChangedSlot(QMediaPlayer::PlaybackState state)
 {
     //   qDebug() << "[TaudioOUT]" << state;
-    p_isPlaying = (state == QAudio::ActiveState);
-    if (state == QAudio::ActiveState)
+    p_isPlaying = (state == QMediaPlayer::PlayingState);
+    if (state == QMediaPlayer::PlayingState)
         emit playingStarted();
-    else if (state == QAudio::StoppedState)
+    else if (state == QMediaPlayer::StoppedState)
         emit playingFinished();
-    else if (state == QAudio::IdleState)
+    else if (state == QMediaPlayer::PausedState)
         stop();
     //     playingFinishedSlot();
 }
@@ -316,7 +324,7 @@ void TaudioOUT::stateChangedSlot(QAudio::State state)
 void TaudioOUT::playingFinishedSlot()
 {
     //   qDebug() << "stop playing";
-    m_audioOUT->stop();
+    m_mediaOUT->stop();
     //   if (p_doEmit)
     //     emit playingFinished();
     p_doEmit = false; // emit once per play/stop cycle
diff --git a/src/sound/tqtaudioout.h b/src/sound/tqtaudioout.h
index 338a3fdeb73414e261376e450fcaeba8d91afd6c..b58439cb9e4c0494d6f55183fb6d3d87369bd48d 100644
--- a/src/sound/tqtaudioout.h
+++ b/src/sound/tqtaudioout.h
@@ -23,7 +23,8 @@
 #include "tabstractplayer.h"
 #include <QtCore/qstringlist.h>
 #include <QtMultimedia/qaudio.h>
-#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudiodevice.h>
+#include <QtMultimedia/qmediaplayer.h>
 
 class ToggScale;
 class TaudioParams;
@@ -72,7 +73,7 @@ private:
     void outCallBack(char *data, qint64 maxLen, qint64 &wasRead);
     //   void updateSlot() { setAudioOutParams(); }
     void playingFinishedSlot();
-    void stateChangedSlot(QAudio::State state);
+    void stateChangedSlot(QMediaPlayer::PlaybackState state);
     void startPlayingSlot();
 
 private:
@@ -81,9 +82,10 @@ private:
     int m_bufferFrames, m_sampleRate;
     bool m_callBackIsBussy;
     TaudioParams *m_audioParams;
-    QAudioOutput *m_audioOUT;
+    QAudioOutput *m_audioOUT = nullptr;
+    QMediaPlayer *m_mediaOUT = nullptr;
     TaudioBuffer *m_buffer;
-    QAudioDeviceInfo m_deviceInfo;
+    QAudioDevice m_deviceInfo;
 };
 
 #endif // TRTAUDIOOUT_H