ESPHome  2025.2.0
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes
esphome::mixer_speaker::SourceSpeaker Class Reference

#include <mixer_speaker.h>

Inheritance diagram for esphome::mixer_speaker::SourceSpeaker:
esphome::speaker::Speaker esphome::Component

Public Member Functions

void dump_config () override
 
void setup () override
 
void loop () override
 
size_t play (const uint8_t *data, size_t length, TickType_t ticks_to_wait) override
 
size_t play (const uint8_t *data, size_t length) override
 
void start () override
 
void stop () override
 
void finish () override
 
bool has_buffered_data () const override
 
void set_mute_state (bool mute_state) override
 Mute state changes are passed to the parent's output speaker. More...
 
void set_volume (float volume) override
 Volume state changes are passed to the parent's output speaker. More...
 
void set_pause_state (bool pause_state) override
 
bool get_pause_state () const override
 
size_t process_data_from_source (TickType_t ticks_to_wait)
 Transfers audio from the ring buffer into the transfer buffer. More...
 
void apply_ducking (uint8_t decibel_reduction, uint32_t duration)
 Sets the ducking level for the source speaker. More...
 
void set_buffer_duration (uint32_t buffer_duration_ms)
 
void set_parent (MixerSpeaker *parent)
 
void set_timeout (uint32_t ms)
 
std::weak_ptr< audio::AudioSourceTransferBufferget_transfer_buffer ()
 
- Public Member Functions inherited from esphome::speaker::Speaker
size_t play (const std::vector< uint8_t > &data)
 
bool is_running () const
 
bool is_stopped () const
 
float get_volume ()
 
bool get_mute_state ()
 
void set_audio_dac (audio_dac::AudioDac *audio_dac)
 
void set_audio_stream_info (const audio::AudioStreamInfo &audio_stream_info)
 
audio::AudioStreamInfoget_audio_stream_info ()
 
void add_audio_output_callback (std::function< void(uint32_t, uint32_t, uint32_t, uint32_t)> &&callback)
 Callback function for sending the duration of the audio written to the speaker since the last callback. More...
 
- Public Member Functions inherited from esphome::Component
virtual float get_setup_priority () const
 priority of setup(). More...
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message="unspecified")
 
void status_set_error (const char *message="unspecified")
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 

Protected Member Functions

esp_err_t start_ ()
 
void stop_ ()
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_setup ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name. More...
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 

Static Protected Member Functions

static void duck_samples (int16_t *input_buffer, uint32_t input_samples_to_duck, int8_t *current_ducking_db_reduction, uint32_t *ducking_transition_samples_remaining, uint32_t samples_per_ducking_step, int8_t db_change_per_ducking_step)
 Ducks audio samples by a specified amount. More...
 

Protected Attributes

MixerSpeakerparent_
 
std::shared_ptr< audio::AudioSourceTransferBuffertransfer_buffer_
 
std::weak_ptr< RingBufferring_buffer_
 
uint32_t buffer_duration_ms_
 
uint32_t last_seen_data_ms_ {0}
 
optional< uint32_t > timeout_ms_
 
bool stop_gracefully_ {false}
 
bool pause_state_ {false}
 
int8_t target_ducking_db_reduction_ {0}
 
int8_t current_ducking_db_reduction_ {0}
 
int8_t db_change_per_ducking_step_ {1}
 
uint32_t ducking_transition_samples_remaining_ {0}
 
uint32_t samples_per_ducking_step_ {0}
 
uint32_t accumulated_frames_read_ {0}
 
uint32_t pending_playback_ms_ {0}
 
- Protected Attributes inherited from esphome::speaker::Speaker
State state_ {STATE_STOPPED}
 
audio::AudioStreamInfo audio_stream_info_
 
float volume_ {1.0f}
 
bool mute_state_ {false}
 
audio_dac::AudioDacaudio_dac_ {nullptr}
 
CallbackManager< void(uint32_t, uint32_t, uint32_t, uint32_t)> audio_output_callback_ {}
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 

Detailed Description

Definition at line 39 of file mixer_speaker.h.

Member Function Documentation

◆ apply_ducking()

void esphome::mixer_speaker::SourceSpeaker::apply_ducking ( uint8_t  decibel_reduction,
uint32_t  duration 
)

Sets the ducking level for the source speaker.

Parameters
decibel_reduction(uint8_t) The dB reduction level. For example, 0 is no change, 10 is a reduction by 10 dB
duration(uint32_t) The number of milliseconds to transition from the current level to the new level

Definition at line 207 of file mixer_speaker.cpp.

◆ duck_samples()

void esphome::mixer_speaker::SourceSpeaker::duck_samples ( int16_t *  input_buffer,
uint32_t  input_samples_to_duck,
int8_t *  current_ducking_db_reduction,
uint32_t *  ducking_transition_samples_remaining,
uint32_t  samples_per_ducking_step,
int8_t  db_change_per_ducking_step 
)
staticprotected

Ducks audio samples by a specified amount.

When changing the ducking amount, it can transition gradually over a specified amount of samples.

Parameters
input_bufferbuffer with audio samples to be ducked in place
input_samples_to_ducknumber of samples to process in input_buffer
current_ducking_db_reductionpointer to the current dB reduction
ducking_transition_samples_remainingpointer to the total number of samples left before the the transition is finished
samples_per_ducking_steptotal number of samples per ducking step for the transition
db_change_per_ducking_stepthe change in dB reduction per step

Definition at line 238 of file mixer_speaker.cpp.

◆ dump_config()

void esphome::mixer_speaker::SourceSpeaker::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 45 of file mixer_speaker.cpp.

◆ finish()

void esphome::mixer_speaker::SourceSpeaker::finish ( )
overridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 169 of file mixer_speaker.cpp.

◆ get_pause_state()

bool esphome::mixer_speaker::SourceSpeaker::get_pause_state ( ) const
inlineoverridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 61 of file mixer_speaker.h.

◆ get_transfer_buffer()

std::weak_ptr<audio::AudioSourceTransferBuffer> esphome::mixer_speaker::SourceSpeaker::get_transfer_buffer ( )
inline

Definition at line 77 of file mixer_speaker.h.

◆ has_buffered_data()

bool esphome::mixer_speaker::SourceSpeaker::has_buffered_data ( ) const
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 171 of file mixer_speaker.cpp.

◆ loop()

void esphome::mixer_speaker::SourceSpeaker::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 66 of file mixer_speaker.cpp.

◆ play() [1/2]

size_t esphome::mixer_speaker::SourceSpeaker::play ( const uint8_t *  data,
size_t  length,
TickType_t  ticks_to_wait 
)
overridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 116 of file mixer_speaker.cpp.

◆ play() [2/2]

size_t esphome::mixer_speaker::SourceSpeaker::play ( const uint8_t *  data,
size_t  length 
)
inlineoverridevirtual

Implements esphome::speaker::Speaker.

Definition at line 46 of file mixer_speaker.h.

◆ process_data_from_source()

size_t esphome::mixer_speaker::SourceSpeaker::process_data_from_source ( TickType_t  ticks_to_wait)

Transfers audio from the ring buffer into the transfer buffer.

Ducks audio while transferring.

Parameters
ticks_to_waitFreeRTOS ticks to wait while waiting to read from the ring buffer.
Returns
Number of bytes transferred from the ring buffer.

Definition at line 185 of file mixer_speaker.cpp.

◆ set_buffer_duration()

void esphome::mixer_speaker::SourceSpeaker::set_buffer_duration ( uint32_t  buffer_duration_ms)
inline

Definition at line 73 of file mixer_speaker.h.

◆ set_mute_state()

void esphome::mixer_speaker::SourceSpeaker::set_mute_state ( bool  mute_state)
overridevirtual

Mute state changes are passed to the parent's output speaker.

Reimplemented from esphome::speaker::Speaker.

Definition at line 175 of file mixer_speaker.cpp.

◆ set_parent()

void esphome::mixer_speaker::SourceSpeaker::set_parent ( MixerSpeaker parent)
inline

Definition at line 74 of file mixer_speaker.h.

◆ set_pause_state()

void esphome::mixer_speaker::SourceSpeaker::set_pause_state ( bool  pause_state)
inlineoverridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 60 of file mixer_speaker.h.

◆ set_timeout()

void esphome::mixer_speaker::SourceSpeaker::set_timeout ( uint32_t  ms)
inline

Definition at line 75 of file mixer_speaker.h.

◆ set_volume()

void esphome::mixer_speaker::SourceSpeaker::set_volume ( float  volume)
overridevirtual

Volume state changes are passed to the parent's output speaker.

Reimplemented from esphome::speaker::Speaker.

Definition at line 180 of file mixer_speaker.cpp.

◆ setup()

void esphome::mixer_speaker::SourceSpeaker::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 55 of file mixer_speaker.cpp.

◆ start()

void esphome::mixer_speaker::SourceSpeaker::start ( )
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 131 of file mixer_speaker.cpp.

◆ start_()

esp_err_t esphome::mixer_speaker::SourceSpeaker::start_ ( )
protected

Definition at line 133 of file mixer_speaker.cpp.

◆ stop()

void esphome::mixer_speaker::SourceSpeaker::stop ( )
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 159 of file mixer_speaker.cpp.

◆ stop_()

void esphome::mixer_speaker::SourceSpeaker::stop_ ( )
protected

Definition at line 165 of file mixer_speaker.cpp.

Field Documentation

◆ accumulated_frames_read_

uint32_t esphome::mixer_speaker::SourceSpeaker::accumulated_frames_read_ {0}
protected

Definition at line 115 of file mixer_speaker.h.

◆ buffer_duration_ms_

uint32_t esphome::mixer_speaker::SourceSpeaker::buffer_duration_ms_
protected

Definition at line 102 of file mixer_speaker.h.

◆ current_ducking_db_reduction_

int8_t esphome::mixer_speaker::SourceSpeaker::current_ducking_db_reduction_ {0}
protected

Definition at line 110 of file mixer_speaker.h.

◆ db_change_per_ducking_step_

int8_t esphome::mixer_speaker::SourceSpeaker::db_change_per_ducking_step_ {1}
protected

Definition at line 111 of file mixer_speaker.h.

◆ ducking_transition_samples_remaining_

uint32_t esphome::mixer_speaker::SourceSpeaker::ducking_transition_samples_remaining_ {0}
protected

Definition at line 112 of file mixer_speaker.h.

◆ last_seen_data_ms_

uint32_t esphome::mixer_speaker::SourceSpeaker::last_seen_data_ms_ {0}
protected

Definition at line 103 of file mixer_speaker.h.

◆ parent_

MixerSpeaker* esphome::mixer_speaker::SourceSpeaker::parent_
protected

Definition at line 97 of file mixer_speaker.h.

◆ pause_state_

bool esphome::mixer_speaker::SourceSpeaker::pause_state_ {false}
protected

Definition at line 107 of file mixer_speaker.h.

◆ pending_playback_ms_

uint32_t esphome::mixer_speaker::SourceSpeaker::pending_playback_ms_ {0}
protected

Definition at line 117 of file mixer_speaker.h.

◆ ring_buffer_

std::weak_ptr<RingBuffer> esphome::mixer_speaker::SourceSpeaker::ring_buffer_
protected

Definition at line 100 of file mixer_speaker.h.

◆ samples_per_ducking_step_

uint32_t esphome::mixer_speaker::SourceSpeaker::samples_per_ducking_step_ {0}
protected

Definition at line 113 of file mixer_speaker.h.

◆ stop_gracefully_

bool esphome::mixer_speaker::SourceSpeaker::stop_gracefully_ {false}
protected

Definition at line 105 of file mixer_speaker.h.

◆ target_ducking_db_reduction_

int8_t esphome::mixer_speaker::SourceSpeaker::target_ducking_db_reduction_ {0}
protected

Definition at line 109 of file mixer_speaker.h.

◆ timeout_ms_

optional<uint32_t> esphome::mixer_speaker::SourceSpeaker::timeout_ms_
protected

Definition at line 104 of file mixer_speaker.h.

◆ transfer_buffer_

std::shared_ptr<audio::AudioSourceTransferBuffer> esphome::mixer_speaker::SourceSpeaker::transfer_buffer_
protected

Definition at line 99 of file mixer_speaker.h.


The documentation for this class was generated from the following files: