เพียงเพื่อประโยชน์ของการสนทนาที่ฉันจะนำขึ้นชั้นจากJuceเรียกAudioSampleBuffer ตอนนี้คลาสนี้มีไว้เพื่อเก็บตัวอย่างข้อมูล (หรืออาจเป็นข้อมูลโค้ดที่ค่อนข้างยาว) มันรู้จำนวนช่องสัญญาณ, จำนวนตัวอย่าง (ต่อช่อง), ดูเหมือนว่าถูกกำหนดให้ลอยแบบ IEEE แบบ 32 บิตแทนที่จะมีการแสดงตัวเลขหรือตัวแปรคำพูด (แต่นั่นไม่ใช่ปัญหาของฉัน) มีฟังก์ชั่นสมาชิกที่ให้คุณรับ numChannels หรือ numSamples และพอยน์เตอร์ไปยังช่องใดช่องหนึ่งได้ คุณสามารถทำให้ AudioSampleBuffer ยาวขึ้นหรือสั้นลงได้ ฉันสันนิษฐานว่าศูนย์แผ่นรองก่อนหน้าบัฟเฟอร์ในขณะที่ตัดหลัง
มีสมาชิกส่วนตัวบางส่วนของคลาสนี้ที่ใช้สำหรับการจัดสรรพื้นที่ในฮีปพิเศษที่ JUCE ใช้
แต่นี่คือสิ่งที่ AudioSampleBuffer หายไป (และฉันได้มีการอภิปรายหลายกับจูลส์เกี่ยวกับเรื่องนี้): SampleRate
เป็นสมาชิกที่เรียกว่า วิธีก็อาจจะหายไปหรือไม่?
ความรับผิดชอบเดียวที่ AudioSampleBuffer จำเป็นต้องเติมเต็มคือการแสดงเสียงทางกายภาพอย่างเพียงพอที่ได้ยินว่าตัวอย่างเป็นตัวแทน เมื่อคุณป้อน AudioSampleBuffer จากสิ่งที่อ่านไฟล์เสียงหรือจากกระแสข้อมูลมีพารามิเตอร์เพิ่มเติมที่คุณต้องรับและส่งไปพร้อมกับ AudioSampleBuffer เพื่อประมวลผลวิธี (บอกว่าเป็นตัวกรอง) ที่จำเป็นต้องรู้อัตราตัวอย่างหรือ ในที่สุดก็มาเป็นวิธีที่เล่นบัฟเฟอร์ออกจะได้ยิน (หรือลำธารมันบางแห่งอื่น) อะไรก็ตาม
แต่สิ่งที่คุณต้องทำคือทำต่อไปเพื่อส่ง SampleRate นี้ซึ่งต่อเนื่องกับเสียงที่มีชีวิตอยู่ใน AudioSampleBuffer ที่อยู่รอบ ๆ ฉันเห็นโค้ดที่มีค่าคงที่ 44100.0f ถูกส่งไปยังฟังก์ชันเนื่องจากโปรแกรมเมอร์ไม่ได้รู้ว่าจะต้องทำอะไรอีก
นี่คือตัวอย่างของความล้มเหลวในการตอบสนองความรับผิดชอบเดียวของมัน