Skip to content

Audio Player

The AudioPlayer_C module provides a streamlined interface for playing audio using the QMediaPlayer framework on MConn or desktop. It provides core multimedia functionalities such as play, pause, stop, seek, and volume control functionalities.

This module is ideal for applications that need media playback integration and want to control or monitor the player from QML in real-time.

initMediaPlayer (public function) Initializes the QMediaPlayer object, connects its internal signals to update playback status, and sets initial volume.

void AudioPlayer_C::initMediaPlayer();

destroyMediaPlayer (public function) Destroys the QMediaPlayer object to release the audio hardware (used especially when switching control to other modules like a radio player).

void AudioPlayer_C::destroyMediaPlayer();

play (public function) Plays a local audio file. Default path is /rw_data/test.wav.

void AudioPlayer_C::play(QString path = "/rw_data/test.wav");

pause (public function) Pauses playback.

void AudioPlayer_C::pause();

stop (public function) Stops playback and resets internal state.

void AudioPlayer_C::stop();

repeat (public function) Enables or disables repeat mode. Internally, a timer checks for end of playback to restart the track.

void AudioPlayer_C::repeat(bool repeat);

setVolume / getVolume (public function) Sets or gets the volume. Volume value is expected as a percentage (0–100), internally scaled to ALSA’s 0.0–1.0 range.

void AudioPlayer_C::setVolume(double volume);
double AudioPlayer_C::getVolume();

formatMillisec (public function) Converts milliseconds into a formatted time string hh:mm:ss.

QString AudioPlayer_C::formatMillisec(int milliseconds);

prepareHardware / resetHardware (public function) Controls GPIO pin 149 to switch audio routing hardware for playback.

void AudioPlayer_C::prepareHardware(bool rds_out = false);
void AudioPlayer_C::resetHardware();

These properties are exposed via Q_PROPERTY and are directly bindable in QML:

PropertyTypeDescription
positionintCurrent playback position in milliseconds
durationintTotal duration of audio track
volumedoubleCurrent volume level (0–100%)
isPlayingboolTrue if audio is currently playing
m_audioPlayer = std::make_shared<AudioPlayer_C>(this);
m_engine->rootContext()->setContextProperty("AudioPlayer_Q", m_audioPlayer.get());
Button {
text: AudioPlayer_Q.isPlaying ? "Pause" : "Play"
onClicked: {
if (AudioPlayer_Q.isPlaying)
AudioPlayer_Q.pause()
else
AudioPlayer_Q.play("/rw_data/test.wav")
}
}
Button {
text: "Stop"
onClicked: AudioPlayer_Q.stop()
}
Slider {
from: 0
to: 100
value: AudioPlayer_Q.volume
onMoved: AudioPlayer_Q.setVolume(value)
}
Slider {
from: 0
to: AudioPlayer_Q.duration
value: AudioPlayer_Q.position
onMoved: AudioPlayer_Q.position = value
}
CheckBox {
text: "Repeat"
onCheckedChanged: AudioPlayer_Q.repeat(checked)
}