Как определить громкость из аудио образца AVAudioBuffer - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь написать небольшое демонстрационное приложение, которое будет выполнять некоторые измерения звука (громкости и высоты тона) в реальном времени.

Я думаю, что дошел до того, что у меня есть аудиосэмплы, но я новичок в работе со звуком и не уверен, где 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)
   }
}
...