Я пытаюсь написать небольшое демонстрационное приложение, которое будет выполнять некоторые измерения звука (громкости и высоты тона) в реальном времени.
Я думаю, что дошел до того, что у меня есть аудиосэмплы, но я новичок в работе со звуком и не уверен, где go дальше. Есть ли способ определить высоту и громкость конкретного семпла как функцию значения с плавающей запятой / целого числа / байта семплов?
Кроме того, мне пришлось добавить эту строку "buffer.frameLength = 1" в получить код для запуска. Когда я печатаю переменную «inputFormat», я получаю значение «».
Все материалы + учебники, которые я могу найти по обработке звука (в целом и по ios), требуют много контекста информация, которую они пропускают.
Код, написанный на swift, работает для получения сэмплов и выдает Sample: (от ~ -8 до +8 значений с плавающей запятой).
func test() {
let inputNode = audioEngine.inputNode
let inputFormat = inputNode.outputFormat(forBus: 0)
let bufferSize = 10
inputNode.installTap(onBus: 0, bufferSize: AVAudioFrameCount(bufferSize), format: inputFormat) { (buffer, time) in
buffer.frameLength = 1
var i = 0;
while i < Int(buffer.frameLength) && buffer.floatChannelData != nil
{
let sample : Double = Double(buffer.floatChannelData![i].pointee)
print("\nSample: "+String(sample))
i += 1
}
}
audioEngine.prepare()
do {
try audioEngine.start()
}catch {
print(error.localizedDescription)
}
}