MusicSpectrum  1.0.0
Referência da Classe Sample

#include <sample.hpp>

Membros Públicos

void processStereoToMono ()
 
void getSampleBuffer ()
 
 Sample (std::shared_ptr< HUD > hud)
 

Atributos Privados

std::shared_ptr< HUDhud_ptr
 

Descrição detalhada

Classe auxiliar para processamento de amostras de áudio.

A classe Sample fornece métodos para converter amostras de áudio estéreo para mono e recuperar um buffer de amostras de acordo com o estado atual do objeto HUD.

Construtores e Destrutores

◆ Sample()

Sample::Sample ( std::shared_ptr< HUD hud)

Construtor da classe Sample.

Armazena o ponteiro compartilhado para a instância HUD.

hud: Ponteiro compartilhado para a instância da classe HUD.

10 : hud_ptr(hud) {}
std::shared_ptr< HUD > hud_ptr
Definition: sample.hpp:14

Funções membros

◆ getSampleBuffer()

void Sample::getSampleBuffer ( )

Pega o buffer de amostras do objeto HUD, considerando a posição de reprodução atual e o tamanho do buffer.

O método calcula o índice inicial e final do buffer de amostras com base na posição de reprodução do som e na taxa de amostragem do buffer de som. Em seguida, copia os valores das amostras do buffer de som para o buffer de amostras da HUD, considerando o tamanho do buffer e o índice final calculado. Valores fora do intervalo válido são preenchidos com zeros.

42  {
43  std::size_t sample_count = hud_ptr->sound.getBuffer()->getSampleCount();
44  std::size_t buffer_start = hud_ptr->sound.getPlayingOffset().asSeconds() *
45  hud_ptr->sound.getBuffer()->getSampleRate();
46  std::size_t buffer_end = buffer_start + buffer_size;
47 
48  if (buffer_end >= sample_count) {
49  buffer_end = sample_count;
50  }
51 
52  const sf::Int16 *samples = hud_ptr->sound.getBuffer()->getSamples();
53  for (std::size_t j = 0; j < buffer_size; ++j) {
54  if (buffer_start + j < buffer_end) {
55  hud_ptr->sample_buffer[j] = (samples[buffer_start + j * 2] +
56  samples[buffer_start + j * 2 + 1]) /
57  2;
58  } else {
59  hud_ptr->sample_buffer[j] = 0;
60  }
61  }
62 }
const size_t buffer_size
Definition: hud.hpp:13

◆ processStereoToMono()

void Sample::processStereoToMono ( )

Converte amostras de áudio estéreo para mono e as armazena no buffer de amostras do objeto HUD.

O método verifica se o buffer de som da HUD possui dois canais (estéreo) e, caso positivo, realiza a conversão para mono (média dos canais esquerdo e direito) e armazena os valores no buffer de amostras.

20  {
21  if (hud_ptr->sound_buffer.getChannelCount() == 2) {
22  const sf::Int16 *samples = hud_ptr->sound_buffer.getSamples();
23  hud_ptr->sample_buffer.reserve(buffer_size);
24  for (std::size_t i = 0; i < buffer_size; ++i) {
25  sf::Int16 mono_sample = static_cast<sf::Int16>(
26  (samples[i * 2] + samples[i * 2 + 1]) / 2);
27  hud_ptr->sample_buffer.push_back(mono_sample);
28  }
29  }
30 }

Atributos

◆ hud_ptr

std::shared_ptr<HUD> Sample::hud_ptr
private

A documentação para essa classe foi gerada a partir dos seguintes arquivos: