Em tempo real pitch shifting no iPhone
-
11-09-2019 - |
Pergunta
Eu tenho aplicação iPhone infantil que estou escrevendo e eu preciso ser capaz de deslocar a afinação de uma amostra de som usando Core Audio. Alguém tem qualquer código exemplo que eu poderia olhar para onde isso é feito. Existem muitos aplicativos de música e jogos na loja de aplicativos que fazem isso, então eu sei que não sou o primeiro. No entanto, não consigo encontrar qualquer exemplos de ele ser feito.
Solução
Você pode usar dirac-2 de DSP dimensão para pitch shifting no iphone . Citação: -
"DIRAC2 está disponível como uma biblioteca objeto comercial oferecendo taxas de amostragem ilimitadas e fase bloqueada suporte multicanal e como um único canal livre, 44,1 / versão 48kHz LE."
Outras dicas
usar o projeto de código aberto SoundTouch a mudança de tom
Aqui está o link: http://www.surina.net/soundtouch/
Depois de adicionar SoundTouch ao seu projeto, você tem que dar o caminho do arquivo de som de entrada, o caminho do arquivo de som de saída e mudança de tom como a entrada.
Uma vez que leva mais tempo para processar seu som o seu melhor para modificar SoundTouch modo que quando você gravar a voz, dar directamente os dados para processamento. Isso fará com que sua aplicação melhor.
Eu sei que é tarde demais para a pessoa que fez, mas é realmente um link valioso (Como eu encontrei) para qualquer outra pessoa que está olhando para a solução do mesmo problema.
Portanto, temos aqui mais recente DIRAC3 com o seu próprio classes que vai cuidar de campo tempo de execução e velocidade (exploração de deus sabe o que mais) deslocando . Execute o exemplo e têm enorme salva de palmas para isso.
Tente Dirac - é a melhor tecnologia lá fora e está disponível no Win, Linux, MacOS X e iOS. Nós estamos usando-o em todos os nossos produtos (e um par de outros não tão bem, procure por "Capo" na App Store). Eles são a versão 3 agora que tem visto um grande aumento no desempenho desde as versões anteriores. Espero que isso ajude.
Veja: questão relacionada
Quanto controle sobre a afinação que você precisa ... você poderia precalculate todos os diferentes sons? Se a resposta for sim, então você pode simplesmente pegar os sons certos e reproduzi-los.
Você também pode usar Audio Converter Serviços em conjunto com AVAudioPlayer, o que permitirá que você resample o áudio (que efetivamente repitch eles, embora eles vão mudar de duração).
Como alternativa, como a questão relacionada aponta, você poderia usar OpenAL e AL_PITCH