Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
IAudioSpectrumProvider.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
7#include <PhosphorAudio/phosphoraudio_export.h>
8
9#include <QObject>
10#include <QString>
11#include <QVector>
12
13namespace PhosphorAudio {
14
18enum class ChannelMode {
19 Stereo,
23};
24
31PHOSPHORAUDIO_EXPORT QString channelModeToString(ChannelMode mode);
32PHOSPHORAUDIO_EXPORT ChannelMode channelModeFromString(const QString& mode);
33
37inline double extraSmoothingFromPercent(int percent)
38{
39 return percent / 100.0;
40}
41inline QString inputMethodFromSetting(const QString& configured)
42{
43 return configured == QLatin1String("auto") ? QString() : configured;
44}
45
51struct PHOSPHORAUDIO_EXPORT SpectrumOptions
52{
53 int barCount = Defaults::DefaultBarCount;
54 int framerate = Defaults::DefaultFramerate;
56 bool autosens = Defaults::DefaultAutosens;
59 int sensitivity = Defaults::DefaultSensitivity;
62 int noiseReduction = Defaults::DefaultNoiseReduction;
65 int lowerCutoffHz = Defaults::DefaultLowerCutoffHz;
66 int higherCutoffHz = Defaults::DefaultHigherCutoffHz;
68 bool monstercat = Defaults::DefaultMonstercat;
70 bool waves = Defaults::DefaultWaves;
71 ChannelMode channelMode = ChannelMode::Stereo;
73 bool reverse = Defaults::DefaultReverse;
76 double extraSmoothing = Defaults::DefaultExtraSmoothing;
78 QString inputMethod;
80 QString inputSource = QStringLiteral("auto");
81
82 bool operator==(const SpectrumOptions& other) const = default;
83};
84
85class PHOSPHORAUDIO_EXPORT IAudioSpectrumProvider : public QObject
86{
87 Q_OBJECT
88
89public:
90 explicit IAudioSpectrumProvider(QObject* parent = nullptr)
91 : QObject(parent)
92 {
93 }
94
95 ~IAudioSpectrumProvider() override = default;
96
97 virtual bool isAvailable() const = 0;
98 virtual void start() = 0;
99 virtual void stop() = 0;
100 virtual bool isRunning() const = 0;
101
103 virtual SpectrumOptions options() const = 0;
107 virtual void setOptions(const SpectrumOptions& options) = 0;
108
109 virtual QVector<float> spectrum() const = 0;
110
111Q_SIGNALS:
112 void spectrumUpdated(const QVector<float>& spectrum);
113 void runningChanged(bool running);
114 void errorOccurred(const QString& message);
115};
116
117} // namespace PhosphorAudio
Definition IAudioSpectrumProvider.h:86
virtual QVector< float > spectrum() const =0
void spectrumUpdated(const QVector< float > &spectrum)
virtual SpectrumOptions options() const =0
The provider's current (normalized) parameter set.
virtual bool isRunning() const =0
~IAudioSpectrumProvider() override=default
void errorOccurred(const QString &message)
virtual void setOptions(const SpectrumOptions &options)=0
Apply a full parameter set.
virtual bool isAvailable() const =0
IAudioSpectrumProvider(QObject *parent=nullptr)
Definition IAudioSpectrumProvider.h:90
Definition AudioDefaults.h:6
PHOSPHORAUDIO_EXPORT QString channelModeToString(ChannelMode mode)
Canonical config-string forms ("stereo", "mono-average", "mono-left", "mono-right") for persisting a ...
double extraSmoothingFromPercent(int percent)
Conversions between the persisted settings representation and the SpectrumOptions field values,...
Definition IAudioSpectrumProvider.h:37
QString inputMethodFromSetting(const QString &configured)
Definition IAudioSpectrumProvider.h:41
ChannelMode
How the analyzed channels map onto the emitted bar vector.
Definition IAudioSpectrumProvider.h:18
PHOSPHORAUDIO_EXPORT ChannelMode channelModeFromString(const QString &mode)
Full analysis parameter set for a spectrum provider.
Definition IAudioSpectrumProvider.h:52
QString inputMethod
Capture backend override ("pipewire", "pulse", ...). Empty = detect.
Definition IAudioSpectrumProvider.h:78
bool operator==(const SpectrumOptions &other) const =default