Sto provando a scrivere un semplice generatore sinusoidale live da zero in Qt.
Cerco di non utilizzare alcuna API esterna come ASIO o VST. E voglio generare nuovo audio durante la riproduzione. (Contrariamente al Qt esempio , ripete solo alcuni esempi)
Qt ti dà solo un QIODevice
in cui scrivi i dati a una frequenza di campionamento fissa.
(Se la frequenza di campionamento dell'host fissa è 44100 Hz, è necessario fornire esattamente 44100 campioni al secondo)
Ho bisogno di un algoritmo o disegno come sincronizzare la riproduzione e la generazione di un'onda sinusoidale.
Oppure, qual è l'approccio generale alla generazione audio?
Ecco i miei tentativi per ottenere ciò:
-
Due buffer, uno viene scritto, uno viene riprodotto, quindi lo scambio, sincronizzato con i mutex
Problema: i mutex non riprendono l'audio generano un thread abbastanza veloce
-
Un buffer, che viene riprodotto e sovrascritto periodicamente
-
Anche questa doveva essere un'onda sinusoidale, ho cercato di ottenere la fase dal flusso audio