wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
Buzzer.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
6
7#pragma once
8
10
11class QAudioSink;
12class ToneGenerator;
13
19{
20 Q_OBJECT
21
22public:
25 static constexpr double kDefaultFrequency = 1047.0;
26
30 static constexpr float kDefaultVolume = 0.35f;
31
33 explicit Buzzer(QGraphicsItem *parent = nullptr);
34
36 Buzzer(const Buzzer &other) : Buzzer(other.parentItem()) {}
37
38 // --- State Queries ---
39
41 double frequency() const override;
42
43 // --- Playback Control ---
44
46 void setFrequency(double freq) override;
48 void setAudio(const QString &note) override;
49
50 // --- Serialization ---
51
53 void load(QDataStream &stream, SerializationContext &context) override;
55 void save(QDataStream &stream, SerializationOptions options) const override;
56
58 static int noteToFrequency(const QString &note);
59
60protected:
61 // --- AudioOutputElement hooks ---
62
63 void startAudio() override;
64 void stopAudio() override;
65 void applyVolume() override;
66 void applyMute() override;
67
68private:
69 QAudioSink *m_sink = nullptr;
70 ToneGenerator *m_generator = nullptr;
71 double m_frequency = kDefaultFrequency;
72};
Shared base class for audio output elements (AudioBox and Buzzer).
AudioOutputElement(ElementType type, QGraphicsItem *parent=nullptr, float initialVolume=kDefaultVolume)
double frequency() const override
Returns the tone frequency in Hz.
Definition Buzzer.cpp:64
void applyMute() override
Applies the current m_muted state to the hardware backend.
Definition Buzzer.cpp:124
void stopAudio() override
Stops hardware playback (called from stop() when m_hasOutputDevice is true).
Definition Buzzer.cpp:111
Buzzer(QGraphicsItem *parent=nullptr)
Constructs a Buzzer element (default: 1047 Hz / C6).
Definition Buzzer.cpp:53
void startAudio() override
Starts hardware playback (called from play() when m_hasOutputDevice is true).
Definition Buzzer.cpp:105
void setFrequency(double freq) override
Sets the tone frequency in Hz.
Definition Buzzer.cpp:69
void save(QDataStream &stream, SerializationOptions options) const override
Definition Buzzer.cpp:143
Buzzer(const Buzzer &other)
Copy-constructs by delegating to the parent item constructor.
Definition Buzzer.h:36
void setAudio(const QString &note) override
Sets the tone by note name (e.g. "C6") for backward compatibility.
Definition Buzzer.cpp:96
static constexpr float kDefaultVolume
Definition Buzzer.h:30
void load(QDataStream &stream, SerializationContext &context) override
Definition Buzzer.cpp:162
static int noteToFrequency(const QString &note)
Maps a note name (e.g. "C6") to its frequency in Hz. Returns 1047 for unknown notes.
Definition Buzzer.cpp:129
static constexpr double kDefaultFrequency
Definition Buzzer.h:25
void applyVolume() override
Applies the current m_volume to the hardware backend.
Definition Buzzer.cpp:117
Bundles all per-deserialization state so that load() overrides receive it through one explicit parame...
Options passed to GraphicElement::save() (and friends); the save-side counterpart of SerializationCon...