#pragma once #include "fiko/core/temel.hpp" namespace fiko { // Prosedürel işleme sesi (winmm waveOut streaming): iğ whir'i + kesme gıcırtısı. // CAM simülasyonu oynatılırken devir/ilerleme/hareket-türünden ses üretir. Tek // örnek (global). TÜM hatalar sessiz no-op (ses opsiyonel; asla çökmez). // // Tasarım: 44.1kHz mono 16-bit, olay-güdümlü çift tamponlu ring; arka iş parçacığı // tamponları prosedürel synth ile doldurur (faz sürekli, tık yok). Parametreler // atomik + per-örnek yumuşatma (ani sıçrama tık yapmaz). class SimSes { public: static SimSes& instance(); void baslat(); // waveOut aç + iş parçacığı (idempotent; başarısız → sessiz kalır) void kapat(); // tam kapat (iş parçacığı + cihaz) bool acikMi() const; // Canlı parametre: freqHz iğ ton frekansı, amp 0..1 genlik, kesme→gıcırtı timbre. // amp=0 → sessiz (stream yaşamaya devam eder). Aç değilse no-op. void ayarla(f32 freqHz, f32 amp, bool kesme); private: SimSes() = default; ~SimSes(); SimSes(const SimSes&) = delete; SimSes& operator=(const SimSes&) = delete; struct Ic; Ic* d_ = nullptr; }; } // namespace fiko