minimalista arduino dsp

Upload: ederson-mafra

Post on 13-Oct-2015

12 views

Category:

Documents


0 download

TRANSCRIPT

Minimalista Arduino DSP (MiniArDSP)Sobre minimalista Arduino DSPEsta a configurao mais bsica para fazer efeitos de udio qualidade decente com um Arduino.O sistema baseia-se tanto o nossotutorial PWMe nossotutorial ATmega ADC.A configurao bsica um valor de 10 bits lidos em ADC0, e jogado para fora atravs de um de 16 bits, PWM duplo nos pinos 9 e 10.existem dois botes, nos pinos 2 e 3, que podem ser utilizados para modificar os parmetros.A razo para os botes e no botes, que a ADC j completamente consumida com o sinal de udio analgico que vem dentro Esta uma verso mais focada do nosso bsicode configurao Arduino PWM, alvejado em pedais de efeitos.Para uma verso finalizada com filtros, amplificadores, feedback e mix, consulte a nossaEscudo Stomp.Na configurao do hardwareO seguinte esquema a verso bsica para comear.Eventualmente, haver uma verso melhor com um dual opamp, e ganho, mistura, feedback e nvel de botes.Mas isso pode demorar um pouco para terminar.O 3k9 e resistores 1M deve ser de 1% (ou melhor), se possvel.Alm disso, o sinal de entrada tem de ser a partir de um misturador ou outro dispositivo de potncia com uma baixa impedncia de sada e um sinal forte.Ligar um no violo no ir funcionar com esta verso.

Amostra de somPara dar uma idia do que possvel com essa configurao mnima, aqui est uma amostra de som.Foi gravado usando uma configurao analgica sightly melhor do que o mostrado acima.Ele usa trs plos filtros anti-aliasing na entrada e sada, e misturar e botes de feedback.O sinal foi tomado diretamente de um violo, e registrado em um computador.Os primeiros 2 bits sonoros demonstrar o nvel de rudo e frequncia de resposta de uma passagem direta atravs do sinal.O ltimo pedao de som um efeito flanger. MiniArDSP amostra de somBiblioteca ArduinoO seguinte uma biblioteca Arduino (apenas um primeiro rev, nada extravagante).Faa o download do arquivo compactado, e descompacte-o.A pasta inteira deve ser colocada em vocbibliotecaspasta em seu diretrio de usurio.Se voc no tem certeza se isso, consulte a nossa descrio naCodecShield Wiki. Biblioteca MiniArDSPExemplo de cdigoNeste momento, h apenas um exemplo na biblioteca, e um efeito de tremolo.Ele tem dois botes, um para aumentar a taxa de tremolo, o outro para diminuir. um tremolo profundidade total, ento voc vai ter que misturar uma parte do sinal original de volta para obter uma profundidade menor.Os botes so muito cortado, neste ponto, que eles precisam para ser aproveitado rapidamente a fazer pequenas mudanas.Ligar / Desligar Numeros de Linhas 1 / / Mini_tremolo.pde 2/ / Programa tremelo minimalisitic 3/ / Guest - openmusiclabs.com - 1.13.13 4/ / Recolhe dados de udio da ADC e joga-lo para fora em 5/ / Timer1 PWM. 16b, Fase correta, 31.25kHz. aplica-se uma varivel 6Vibrao / / frequncia para o som. sete 8 # include "MiniArDSP.h" 9 10 # definir PWM_FREQ 0x00FF / / frequncia PWM - ver tabela 11# definir PWM_MODE 0 / / Rpido (1) ou Fase correta (0) 12# definir PWM_QTY 2 / / nmero de PWMs, 1 ou 2 13 14 / / Cria tabela de pesquisa de onda senoidal 15/ / PROGMEM armazena os valores na memria do programa 16/ / Ele automaticamente includo no MiniArDSP.h 17PROGMEM prog_int16_t onda senoidal [] = { 18 / / Este arquivo armazenado no MiniArDSP e um valor 1.024 19 Tabela de pesquisa / / onda senoidal de 16 bits assinado inteiros de 20 / / Voc pode substitu-lo com seu prprio forma de onda, se quiser 21 # incluem 22 }; 23unsigned int localizao ; / / pesquisa de localizao de valor de tabela 24 25 byte taxa = 5 ; taxa / / tremolo 26byte rate_counter ; / / verso modificvel taxa de 27unsigned int amplitude ; / / atual amplitude tremolo 28unsigned int boto ; 29 30 vazio de configurao () { 31 / / Configurao do boto pinos 32 PORTD | = 0x0C ; / / turno em pullups para os pinos 2 e 3 33 34 / / Configurao ADC 35 ADMUX = 0x60 ; / / esquerda ajustar, adc0, vcc interno 36 ADCSRA = 0xe5 ; / / turno em adc, ck/32, disparador automtico 37 ADCSRB = 0x07 ; captura / / t1 para gatilho 38 DIDR0 = 0x01 ; / / desliga entradas digitais para adc0 39 40 / / Configurao PWM 41 TCCR1A = ((( PWM_QTY - 1 ) 8 ; / / converter para unsigned 105 / / E s a sada do topo byte 106 OCR1BL = sada ; / / sada do byte inferior 107 reti (); / / retorno de interrupo - necessrio devido ISR_NAKED 108} 109