@@ -496,14 +496,13 @@ AudioSystem::~AudioSystem() {
496496
497497void AudioSystem::GenerateSineWavePing (float * buffer, uint32_t sampleCount, uint32_t playbackPosition) {
498498 constexpr float sampleRate = 44100 .0f ;
499- const float frequency = 800 .0f ; // 800Hz ping to match UI label
499+ const float frequency = 800 .0f ; // 800Hz ping
500500 constexpr float pingDuration = 0 .75f ; // 0.75 second ping duration
501501 constexpr auto pingSamples = static_cast <uint32_t >(pingDuration * sampleRate);
502502 constexpr float silenceDuration = 1 .0f ; // 1 second silence after ping
503503 constexpr auto silenceSamples = static_cast <uint32_t >(silenceDuration * sampleRate);
504504 constexpr uint32_t totalCycleSamples = pingSamples + silenceSamples;
505505
506- // Use near-constant amplitude with very short attack/release to avoid clicks and volume pumping
507506 const uint32_t attackSamples = static_cast <uint32_t >(0 .001f * sampleRate); // ~1ms attack
508507 const uint32_t releaseSamples = static_cast <uint32_t >(0 .001f * sampleRate); // ~1ms release
509508 constexpr float amplitude = 0 .6f ;
@@ -630,7 +629,6 @@ void AudioSystem::Update(std::chrono::milliseconds deltaTime) {
630629 // Accumulate samples based on real time and process in fixed-size chunks to avoid tiny buffers
631630 double acc = concreteSource->GetSampleAccumulator ();
632631 acc += (static_cast <double >(deltaTime.count ()) * 44100.0 ) / 1000.0 ; // ms -> samples
633- // Process one full ping per chunk to avoid splitting it: 0.75s at 44.1 kHz = 33075 samples
634632 constexpr uint32_t kChunk = 33075 ;
635633 uint32_t available = static_cast <uint32_t >(acc);
636634 if (available < kChunk ) {
0 commit comments