Pergunta

preciso implementar um sintetizador wavetable em um núcleo ARM Cortex-M3.Estou procurando qualquer código ou ferramenta para me ajudar a começar.

Estou ciente de esta implementação do AVR.Na verdade, eu o converti em um PIC há um tempo.Agora estou procurando algo semelhante, mas com um som um pouco melhor.

O código ANSI C seria ótimo.Quaisquer trechos de código (C ou C++), amostras, ferramentas ou apenas informações gerais serão muito apreciados.

Obrigado.

Foi útil?

Solução

O Synthesis Toolkit (STK) é excelente, mas é apenas C++:

http://ccrma.stanford.edu/software/stk/

Você pode extrair o código do sintetizador wavetable do STK.

Outras dicas

Dois sintetizadores wavetable de código aberto são Fluid Synth e Timidez.

Qualquer sintetizador ARM, os melhores, pode ser alterado para Wavescanner em menos de um dia.Digitalizar a onda de arquivos ou gerá-los matematicamente é quase a mesma coisa em termos de áudio, o WT fornece bancos enormes de formas de onda com custo zero de processamento, você precisa das ondas, o código do oscilador WT em si tem 20 linhas.então mude o botão de forma de onda de 3 para 100 para indicar qual WAV você está lendo, use uma rampa/contador para ler os arquivos WAV (como arrays).Peso fixo.

Com 7 anos de experiência em sintetizadores, recomendo alterar 20 linhas da função osciladora do seu sintetizador favorito para adaptá-lo para ler matrizes de ondas.O WT usa apenas 20 linhas de lógica, o resto do sintetizador é mais importante:LFO's, filtros, parâmetros de entrada, memória predefinida...Use seu sintetizador favorito e encontre uma biblioteca de ondas WT como arquivos e pastas WAV, e substitua seus osciladores de sintetizador favoritos por funções WT, soará quase o mesmo, apenas com custos de processamento mais baixos.

Um sintetizador normalmente usa funções Sin, Sqr, Saw, Antialiased OSC para a onda...

Um sintetizador wavetable usa cerca de 20 linhas de código em sua base e 10/20/100ds de ondas, cada onda amostrada em cada oitava, idealmente.Se você conseguir uma biblioteca de sons wavetable, o sintetizador apenas faz loops, mudanças de tom, os sons e os sintetizadores profissionais também podem ter múltiplas oitavas para mixar as oitavas.

Função WT =

  • carregar arquivos WAV em N arrays
  • alterar forma de onda = selecione a matriz de forma de onda da lista WAV
  • leia a matriz de formas de onda no Hz desejado

função de scanner de ondas =

  • crossfade entre 2 ondas e atribua xfade ao LFO, ou seja,seno e xfade.

O envelope, filtro, amplitude e todas as outras funções são independentes da função de geração de ondas em todos os sintetizadores.

lembre-se de que a ferramenta psicoacústica mais poderosa para sintetizadores é o desvio do tom digital das notas, é chamado de desafinação de uníssono, o caráter sonoro dos sintetizadores vem principalmente do refrão e da desafinação de uníssono.

WT's são períodos únicos de ondas de seções mais longas, em sintetizadores mais avançados.o material de período único é super fácil de escrever em código.os WT avançados são amostrados por oitava com ondas que duram N períodos, até 2-3 segundos, ou seja,piano, e isso significa que eles mudam a qualidade do som através das oitavas, de modo que os complexos WTs são cruzados a cada oitava com gravações de múltiplas oitavas.

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