Sintetizador Synth Magic

Eu quero compartilhar com todos os amigos, um dos meus projetos com ARM Cortex.
Quero aqui dizer que a inspiração para esse trabalho veio dos anos 80, sem dúvida, os projetistas dessa época eram muito criativos, fica aqui uma ressalva ao projetista da empresa Kawai, que desenvolveu um sistema muito complexo de software em forma de hardware, coisa de gente inteligente, esse é um projeto japonês, muito interessante. Mas minha inspiração maior foi com o chip M114 produzido por pouco tempo pela então SGS, hoje ST. Foi um dos primeiros sistemas com base em amostragem de timbres, pena que as amostragens eram feitas em pequenas tabelas, porém de forma muito inteligente. Alguns órgãos ingleses utilizaram esse chip na sua concepção, nesse caso específico usavam tabelas grandes de amostras, praticamente usavam todo o espaço que o M114 disponibilizava (Salvo engano eram de até 512k).
O projeto Synth Magic é um Sintetizador de Formas de Ondas, simples: Senoidal, Retangular, Dente de Serra, etc...Ou ondas "Complexas" do tipo WaveTable.
O Sistema foi dividido de forma que possa "Ler", convenientemente as Tabelas de Ondas, quer seja pelo método PCM nota a nota ou através do método WaveTable, que consiste na leitura constante com base em pontos de "looping" para cada amostra, tendo como base uma única Amostra para geração de toda escala de um Teclado.
A princípio o sistema foi idealizado para fazer todo o processo de leitura de um teclado de 44 ou 49 teclas + as 13 notas para a pedaleira, sendo assim: Solo e Pedal Bass.
O protótipo foi idealizado sob um ARM 051, o programa ficou com cerca de 38kb, utilizei apenas dois vetores de interrupção.
As amostras das senoides foram amostradas de um Órgão eletrônico Hammond B3. O protótipo foi concebido para gerar saídas em 4 fases e posteriormente entregues ao DAC interno do STM. A mixagem desses 4 canais é feita internamente através dos dados coletados por 4 potenciômetros deslizantes de 10k, que controlam a intensidade de volume de cada canal. Um quinto potenciômetro foi utilizado para controlar a intensidade do Vibrato, desde 0 até 100%, gerando uma escala linear de 64 pontos de Depht.
A capacidade máxima de canais de polifonia é de 34 canais, para o chip em questão, esses canais estão subdivididos sobre os 4 canais de saída.
O algoritmo tem a capacidade de "rodar" em qualquer ambiente ARM ou DSP com 16 ou 32 bits. A idéia de desenvolver o algoritmo sobre uma plataforma básica, foi devido ao custo e a facilidade de migração para outras plataformas mais rápidas e com maior poder de processamento. Só para se ter uma ideia, um ARM m3 rodando esse algoritmo, "Dobra" a capacidade de canais, ultrapassando os 64 canais de polifonia.
As tabelas de ondas podem ser de qualquer tamanho: 8, 12, 16 bits sem nenhum problema, basta definir a tabela e o algoritmo se encarrega do resto. Por falar em tabelas de ondas, a perda é muito pequena, não ultrapassando 16bytes em resoluções altas, por exemplo, para gerar 384 canais de polifonia a perda de resolução é de apenas 16bytes.
A saida DAC pode ser r2r ou i2s, tanto faz, obviamente uma saida i2s com DACs de audio possui maior qualidade final, no caso do protótipo, optei pelos 12 bits que contém o DAC desse chip.
Como ele tem muitos I/Os, salvo engano mais de 48, deixei saidas para exitar shift registers para manipular leds, todavia ficou também disponível num conector esses leds diretamente exitados pelos I/Os.
O consumo de corrente a plena carga é de 14ma...Ainda existe no FW uma saída exclusiva para acionamento de Acompanhamento automático, são 3 pinos que comandam outra parte do FW para automatizar sons da pedaleira sincronizadamente com os ritmos de bateria.
Os ritmos de bateria, foram feitos com resolução de 16bits, com perca total de 8 bytes, além de gerenciar os samples de alta qualidade dos instrumentos de percussão, o FW também "gera" os timbres do Pedal Bass, são no total 13 notas com dois canais simultâneos em flautas de 16 e 8 pés, pés são as alturas que cada saida possui. Além de gerar os samples dos instrumentos de percussão, que estão no formato WaveTable PCM, o FW também tem um gerador de ritmos, com até 32 ritmos: Samba, baião, Valsa, beat, rock, mambo, etc...O controle de velocidade é feito através de um potenciômetro de 10k, variando de 40bpm até 220bpm, existe ainda a opção no FW para comandar um LCD 162, ou Leds, ou Display de 7 seguimentos, o controle de volume é feito por um potenciômetro de 10k, através do FW, todo o processo é absorvido pelo DAC do STM.
A seguir esta a demonstração, ela foi feita através da gravação direta no pino de saída do DAC (alias existe um filtro antialiase na saida desse DAC, sintonizado em 14khz), foi utilizado o gravador AUDACIT através da entrada do audio in do PC.
O Fw, pode soltar os sons em mono ou estéreo, dependendo do tipo de ARM ou DSP utilizado. O Fw atualmente comanda, Scan dos teclados, Painel, Controle ADSR completo, Vibrato Speed e Depht.
O FW também pode receber sinais MIDI 1.0 como comandos, porém não foi ainda interessante a habilitação desse recurso, haja visto que o intuito do projeto Synth Magic foi criar um Gerador Musical Complexo em torno de chips de baixo custo, contendo o maior número possível de funções agregadas, afim de facilitar sua utilização de forma rápida e prática, esse foi um dos motivos que utilizei um chip com bastante I/Os, justamente para Ler as teclas e funções gerais de painel e leds e ou displays.
Sou grato a DEUS, pela Luz e pela Bondade em me ajudar até aqui, a Ele toda GLÓRIA.
Quero aqui dizer que a inspiração para esse trabalho veio dos anos 80, sem dúvida, os projetistas dessa época eram muito criativos, fica aqui uma ressalva ao projetista da empresa Kawai, que desenvolveu um sistema muito complexo de software em forma de hardware, coisa de gente inteligente, esse é um projeto japonês, muito interessante. Mas minha inspiração maior foi com o chip M114 produzido por pouco tempo pela então SGS, hoje ST. Foi um dos primeiros sistemas com base em amostragem de timbres, pena que as amostragens eram feitas em pequenas tabelas, porém de forma muito inteligente. Alguns órgãos ingleses utilizaram esse chip na sua concepção, nesse caso específico usavam tabelas grandes de amostras, praticamente usavam todo o espaço que o M114 disponibilizava (Salvo engano eram de até 512k).
O projeto Synth Magic é um Sintetizador de Formas de Ondas, simples: Senoidal, Retangular, Dente de Serra, etc...Ou ondas "Complexas" do tipo WaveTable.
O Sistema foi dividido de forma que possa "Ler", convenientemente as Tabelas de Ondas, quer seja pelo método PCM nota a nota ou através do método WaveTable, que consiste na leitura constante com base em pontos de "looping" para cada amostra, tendo como base uma única Amostra para geração de toda escala de um Teclado.
A princípio o sistema foi idealizado para fazer todo o processo de leitura de um teclado de 44 ou 49 teclas + as 13 notas para a pedaleira, sendo assim: Solo e Pedal Bass.
O protótipo foi idealizado sob um ARM 051, o programa ficou com cerca de 38kb, utilizei apenas dois vetores de interrupção.
As amostras das senoides foram amostradas de um Órgão eletrônico Hammond B3. O protótipo foi concebido para gerar saídas em 4 fases e posteriormente entregues ao DAC interno do STM. A mixagem desses 4 canais é feita internamente através dos dados coletados por 4 potenciômetros deslizantes de 10k, que controlam a intensidade de volume de cada canal. Um quinto potenciômetro foi utilizado para controlar a intensidade do Vibrato, desde 0 até 100%, gerando uma escala linear de 64 pontos de Depht.
A capacidade máxima de canais de polifonia é de 34 canais, para o chip em questão, esses canais estão subdivididos sobre os 4 canais de saída.
O algoritmo tem a capacidade de "rodar" em qualquer ambiente ARM ou DSP com 16 ou 32 bits. A idéia de desenvolver o algoritmo sobre uma plataforma básica, foi devido ao custo e a facilidade de migração para outras plataformas mais rápidas e com maior poder de processamento. Só para se ter uma ideia, um ARM m3 rodando esse algoritmo, "Dobra" a capacidade de canais, ultrapassando os 64 canais de polifonia.
As tabelas de ondas podem ser de qualquer tamanho: 8, 12, 16 bits sem nenhum problema, basta definir a tabela e o algoritmo se encarrega do resto. Por falar em tabelas de ondas, a perda é muito pequena, não ultrapassando 16bytes em resoluções altas, por exemplo, para gerar 384 canais de polifonia a perda de resolução é de apenas 16bytes.
A saida DAC pode ser r2r ou i2s, tanto faz, obviamente uma saida i2s com DACs de audio possui maior qualidade final, no caso do protótipo, optei pelos 12 bits que contém o DAC desse chip.
Como ele tem muitos I/Os, salvo engano mais de 48, deixei saidas para exitar shift registers para manipular leds, todavia ficou também disponível num conector esses leds diretamente exitados pelos I/Os.
O consumo de corrente a plena carga é de 14ma...Ainda existe no FW uma saída exclusiva para acionamento de Acompanhamento automático, são 3 pinos que comandam outra parte do FW para automatizar sons da pedaleira sincronizadamente com os ritmos de bateria.
Os ritmos de bateria, foram feitos com resolução de 16bits, com perca total de 8 bytes, além de gerenciar os samples de alta qualidade dos instrumentos de percussão, o FW também "gera" os timbres do Pedal Bass, são no total 13 notas com dois canais simultâneos em flautas de 16 e 8 pés, pés são as alturas que cada saida possui. Além de gerar os samples dos instrumentos de percussão, que estão no formato WaveTable PCM, o FW também tem um gerador de ritmos, com até 32 ritmos: Samba, baião, Valsa, beat, rock, mambo, etc...O controle de velocidade é feito através de um potenciômetro de 10k, variando de 40bpm até 220bpm, existe ainda a opção no FW para comandar um LCD 162, ou Leds, ou Display de 7 seguimentos, o controle de volume é feito por um potenciômetro de 10k, através do FW, todo o processo é absorvido pelo DAC do STM.
A seguir esta a demonstração, ela foi feita através da gravação direta no pino de saída do DAC (alias existe um filtro antialiase na saida desse DAC, sintonizado em 14khz), foi utilizado o gravador AUDACIT através da entrada do audio in do PC.
O Fw, pode soltar os sons em mono ou estéreo, dependendo do tipo de ARM ou DSP utilizado. O Fw atualmente comanda, Scan dos teclados, Painel, Controle ADSR completo, Vibrato Speed e Depht.
O FW também pode receber sinais MIDI 1.0 como comandos, porém não foi ainda interessante a habilitação desse recurso, haja visto que o intuito do projeto Synth Magic foi criar um Gerador Musical Complexo em torno de chips de baixo custo, contendo o maior número possível de funções agregadas, afim de facilitar sua utilização de forma rápida e prática, esse foi um dos motivos que utilizei um chip com bastante I/Os, justamente para Ler as teclas e funções gerais de painel e leds e ou displays.
Sou grato a DEUS, pela Luz e pela Bondade em me ajudar até aqui, a Ele toda GLÓRIA.