Solo per motivi di discussione, presenterò una lezione da  JUCE  chiamata AudioSampleBuffer . Ora questa classe esiste per contenere uno snippet (o forse un frammento piuttosto lungo) di audio. Conosce il numero di canali, il numero di campioni (per canale), sembra essere impegnato su un float IEEE a 32 bit piuttosto che avere una rappresentazione numerica variabile o parole (ma non è un problema con me). Ci sono funzioni membro che ti permettono di ottenere numChannels o numSamples e puntatori a qualsiasi canale particolare. Puoi rendere AudioSampleBuffer più lungo o più corto. Presumo che il precedente zero pad il buffer mentre il secondo tronca. 
 Ci sono alcuni membri privati di questa classe che vengono utilizzati per allocare spazio nell'heap speciale utilizzato da JUCE. 
 Ma questo è ciò che manca a AudioSampleBuffer (e ho discusso parecchie discussioni con Jules): un membro chiamato   SampleRate   .   In che modo   potrebbe mancare? 
 La singola responsabilità che un AudioSampleBuffer deve soddisfare è quella di rappresentare adeguatamente l'audio fisico percepito dai suoi campioni. Quando inserisci un AudioSampleBuffer da qualcosa che legge un file sonoro o da uno stream, c'è un parametro addizionale che devi ottenere e passarlo insieme a AudioSampleBuffer ai metodi di elaborazione (diciamo che è un filtro) che ha bisogno di conoscere la frequenza di campionamento o, alla fine, a un metodo che  riproduce  il buffer out per essere ascoltato (o lo invia a qualche altro posto). Qualunque sia. 
 Ma quello che devi fare è continuare a passare questo SampleRate, che è inerente allo specifico audio che vive nell'AudioSampleBuffer, ovunque. Ho visto codice in cui una  costante  44100.0f è stata passata a una funzione, perché il programmatore non sembrava sapere cos'altro fare. 
 Questo è un esempio di mancato rispetto della sua unica responsabilità.