Pergunta

Eu procurei na net, mas não encontrou nada de interessante. Talvez eu estou fazendo algo errado.

Eu estou procurando API síntese de som escrito em C, C ++ ou mesmo Objective-C, que pode sintetizar diferentes tipos de ondas, os efeitos são opcionais.

Foi útil?

Solução

Aqui está uma biblioteca / kit de ferramentas completa para (Frequência Modulada) síntese FM:

link1 link2

Se você tem tempo de sobra ... criando síntese de som simples a partir do zero é realmente um esforço divertido. Se você criar um pequeno tampão de 256 16 amostras de bits que representam tanto uma sine. um dente de serra, bloco ou de pulso, você pode copiar estes a um audiobuffer ao vivo (por exemplo, um pequeno tampão (16kb digamos)), que constantemente laços. Ao ficar à frente da playposition, e constantemente encher o buffer com novos valores, você pode criar o SaídadeSom. Você pode usar os pequenos buffers de combinar estes em maneiras interessantes (mais simples é apenas para adicioná-los juntos (síntese aditiva)).

A frequência do tom podem ser manipuladas usando um passo maior ou menor de amostragem através das pequenas memórias intermédias. Amplitude pode ser manipulado através do escalonamento das amostras antes de colocá-los para a memória intermédia de saída.

Muito divertido experimentar com isso!

Se você tem este passo pregado, você pode adicionar efeitos mais sofisticados, como filtros (passa-baixa, passa alta, etc) e efeitos (reverbs, ecos, etc)

R

Outras dicas

Você olhou para o conjunto de ferramentas de síntese ( STK )? É em C ++ (eu não acho que ObjC é a linguagem certa para a síntese de áudio, em unidades de áudio verdade, própria maneira de fazer coisas de áudio, incluindo geradores / filtros / efeitos da Apple ... é em C ++).

STK será executado no Mac OS X e iOS nenhum problema (CoreAudio é suportado), mas também será executado em Linux e Windows (som direto e ASIO), usando RTAudio. É muito bem feito e leve, esses caras têm gasto muito tempo pensando sobre isso e ele vai certamente dar-lhe uma vantagem grande. Ele pode lidar com cargas de diferentes formatos de arquivo de áudio + midi (e esperemos que OSC breve ...).

Há também Criar e CLAM que é enorme, que incluem componentes GUI e muitas outras coisas que você pôde ou pode não querer. Se você está interessado apenas em fazer a síntese de som que eu realmente recomendo STK.

PortAudio também é uma ótima C API que usamos no último semestre de um curso de programação de áudio. Ele fornece uma chamada de retorno de áudio ... o que mais você poderia precisar !?

Eu não tentei incorporá-lo com qualquer coisa em Objective-C ainda, mas se reportará de volta quando eu faço.

Escrita algoritmos de síntese de áudio em C / obj-C é muito difícil na minha opinião. Eu recomendaria escrever seus algoritmos de processamento de sinal usando PureData e use ZenGarden ou libpd incorporar e interpretar os patches pd na sua aplicação.

Outra biblioteca C ++ é Nsound:

http://nsound.sourceforge.net

Pode-se gerar qualquer tipo de sinal modulado usando a classe Generator ou usando a classe Sine fornecido. Cada passo de tempo pode ter a sua própria frequência instantânea e desvio de fase.

Você também pode experimentar com o módulo Python para criar protótipos de seu algoritmo rapidamente, em seguida, implementar em C ++. Pode produzir parcelas bonitas matplotlib de Python e até mesmo de C ++!

Você olhou para CSound ? É uma plataforma extremamente flexível geração de áudio, e pode lidar com tudo, desde a geração de forma de onda simples de FM síntese e todos os tipos de filtros. Ele também fornece suporte MIDI, e você pode estendê-lo por escrito opcodes personalizados. Há um completa C API e várias APIs C ++ também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top