Sadece tartışma uğruna, ben bir sınıf getirecektir Juce denilen AudioSampleBuffer . Şimdi bu sınıf, bir snippet (veya belki de oldukça uzun bir snippet) ses parçası tutmak için var. Kanal sayısını, örnek sayısını (kanal başına) biliyor, değişken bir sayısal gösterime veya sözcük boyutuna sahip olmak yerine 32 bit IEEE yüzmeye bağlı görünüyor (ama bu benimle ilgili bir sorun değil). NumChannels veya numSamples ve pointer'ları herhangi bir belirli kanala almanıza izin veren üye fonksiyonlar vardır. Bir AudioSampleBuffer'ı daha uzun veya daha kısa yapabilirsiniz. İkincisi kesilirken eski sıfır-tamponları arabellek sanırım.
JUCE'nin kullandığı özel yığında yer ayırmak için kullanılan bu sınıfın birkaç özel üyesi var.
Ancak bu AudioSampleBuffer'ın eksik olduğu şeydir (ve Jules ile bu konuda birkaç tartışmam oldu): bir üye SampleRate
. Bunu nasıl kaçırıyor olabilir?
Bir AudioSampleBuffer’ın yerine getirmesi gereken tek sorumluluk, numunelerinin temsil ettiğini duyduğu fiziksel sesi yeterince temsil etmektir. Bir AudioSampleBuffer'ı, bir ses dosyasını okuyan veya bir akıştan okuyan bir şeyden girdiğinizde, almanız ve AudioSampleBuffer ile birlikte almanız ve işlem yapması gereken bir yöntem olduğunu (bunun bir filtre olduğunu söylemesi) bilmesi gereken ilave bir parametre vardır. sonunda, bir yöntem ile oynar duyulmasını tampon üzerinden (veya başka bir yer için akarsu). Her neyse.
Ancak yapmanız gereken, AudioSampleBuffer'da yaşayan belirli seslere özgü olan bu SampleRate'i her yere iletmeye devam etmek. 44100.0f sabitinin bir fonksiyona geçtiği bir kod gördüm , çünkü programcı başka ne yapacağını bilemedi.
Bu, tek sorumluluğunu yerine getirememenin bir örneğidir.