Respostas:
Obtenha a Real Sound Synthesis para aplicativos interativos e faça o download do Synthesis Toolkit . Isso fornecerá apresentações práticas e código fonte de qualidade para a maioria dos métodos de síntese digital em uso. Em seguida, escolha o método que achar mais interessante e comece a modificar o código STK correspondente para fazer o que deseja. Em seguida, tente criar algo semelhante a partir do zero.
Além disso, como sugerido pelo hotpaw2 , qualquer coisa do JOS também é um ótimo material introdutório. Em particular, Introdução aos Filtros Digitais com Aplicações de Áudio e Matemática da Transformação Discreta de Fourier, ambas começam do básico e não assumem muitos antecedentes.
Do ponto de vista dos filtros / efeitos digitais, outro bom ponto de partida é conferir o Faust . Você nem precisa aprender a linguagem de processamento de sinais do diagrama de blocos, basta usar os exemplos para despejar o código do modelo VST, LADSPA etc. como uma maneira rápida de executar algo [que você pode modificar].
Dito isto, é ainda mais fácil começar com a renderização de som, que é basicamente a mesma coisa, mas sem se preocupar com operação ou interatividade em tempo real. Você acabou de salvar arquivos wav em disco. É uma ótima maneira de experimentar novas técnicas antes de enfrentar o problema de fazê-las funcionar rapidamente.
Eu lia um livro introdutório sobre DSP, além de alguns livros sobre música eletrônica (Amazon e outras livrarias listam vários). Há também uma grande quantidade de material de Stanford sobre DSP e síntese sonora. Livros sobre o sistema auditivo humano e psicoacústica também podem ser úteis.
Primeiro, você precisa decidir que tipo de sintetizador deseja criar - aditivo, FM, baseado em amostra etc. Você também precisa decidir se deseja emular algum tipo de sintetizador analógico existente ou apenas criar seu próprio.
O resto é bastante fácil - você só precisa implementar os vários componentes básicos do sintetizador (por exemplo, osciladores, filtros, geradores de ruído, formadores de envelope etc.) em software e, em seguida, implementar uma maneira de "conectá-los" e controlar seus parâmetros.
Veja o livro de Hal Chamberlin, Aplicações Musicais de Microprocessadores , que é uma boa introdução a muitos princípios básicos.
Estou surpreso que ninguém tenha mencionado o SynthMaker ainda. É ridiculamente fácil de usar e, embora dificulte o nível baixo (certifique-se de usar o modo de desenvolvedor ), você pode aprender muito sobre a arquitetura Synthesizer com ele e também sobre o DSP geral. E você pode realmente usar as coisas construídas com ele; na verdade, eu uso-o para construir quase todos os meus plugins.
Como alguns dos outros colaboradores mencionaram, um bom iniciador no DSP é obrigatório. Este é um ótimo livro> http://www.dspguide.com/ e o autor gentilmente forneceu um download em PDF completo e gratuito. Outro livro comum do curso de tecnologia da música que oferece boas visualizações de alto nível de várias técnicas de síntese é> http://www.amazon.com/Computer-Music-Tutorial-Curtis-Roads/dp/0262680823 . Eu também reiteraria o que o colaborador anterior sugeriu, Synthmaker, que é um ambiente de desenvolvimento visual muito conveniente para o desenvolvimento de plugins VST. Por fim, se você quiser experimentar sem aprofundar, tente usar o Csound, que é uma linguagem de programação projetada especificamente para a síntese de sons.
Eu só quero entrar em cena, já que a maioria das respostas se concentra em questões de DSP. Se você não usar um sistema de design de blocos como o SynthMaker, gastará muito tempo de desenvolvimento lidando com o gerenciamento de voz. Se você estava escrevendo um plug-in de instrumento VSTi do zero, a curva de aprendizado é muito maior do que nos plug-ins de efeito. Você terá que gerenciar cada objeto de nota, decidir o que acontecerá quando houver 20 notas, se o seu DSP for rápido o suficiente para 16 vozes, responder a pitch bend, portamento, modulação etc. Isso não é tarefa fácil e é por isso que eu altamente recomendamos começar com o Buzz ou o SynthMaker e rodar quando você finalmente se deparar com uma parede.