Запись, изменение высоты звука и воспроизведение звука в режиме реального времени на iOS - PullRequest
3 голосов
/ 09 декабря 2010

Мне просто интересно, может ли кто-нибудь объяснить мне, как я буду записывать аудио, изменять его (высоту звука) и воспроизводить его пользователю на iPhone.

Я не прошу, чтобы кто-то сделал это для меня, просто несколько советов о том, как мне это сделать. просматривая документы, кажется, что я должен использовать AVAudioSession, AVAudioRecorder и AVAudioPlayer (AVFoundation.Framework) для записи воспроизводящих частей. Или я должен использовать CoreAudio.Framework? и тогда возникает вопрос об изменении звука.

Ответы [ 3 ]

2 голосов
/ 04 октября 2015

AVAudioUnitTimePitch должно сработать.

Пример кода с сайта udacity.com Введение в разработку приложений для iOS с помощью Swift :

func playAudioWithVariablePitch(pitch: Float) {
    audioEngine.stop()
    audioEngine.reset()

    let audioPlayerNode = AVAudioPlayerNode()
    audioEngine.attachNode(audioPlayerNode)

    let changePitchEffect = AVAudioUnitTimePitch()
    changePitchEffect.pitch = pitch
    audioEngine.attachNode(changePitchEffect)

    audioEngine.connect(audioPlayerNode, to:changePitchEffect, format:nil)
    audioEngine.connect(changePitchEffect, to:audioEngine.outputNode, format:nil)

    audioPlayerNode.scheduleFile(audioFile, atTime:nil, completionHandler: nil)
    try! audioEngine.start()

    audioPlayerNode.play()
}
0 голосов
/ 09 декабря 2010

Это может помочь. DIRAC-mobile , библиотека для управления темпом и высотой звука в реальном времени полифонических аудиосигналов. У них также есть примеры кодов, которые вы можете посмотреть после загрузки библиотеки.

0 голосов
/ 09 декабря 2010

OpenAL - это библиотека, которая поддерживает то, что вы ищете.И это очень популярно на iPhone, так что, возможно, вам стоит взглянуть на это.т. е. высоту сэмпла можно легко изменить только одной командой:

alSourcef(source, AL_PITCH, pitch);

Но я не уверен, что изменение высот также возможно с помощью классов AVFoundation или CoreAudio - никогда их не использовал.

...