Tabla de contenido:

NeckCrusher (pedal de efectos montado en guitarra): 6 pasos (con imágenes)
NeckCrusher (pedal de efectos montado en guitarra): 6 pasos (con imágenes)

Video: NeckCrusher (pedal de efectos montado en guitarra): 6 pasos (con imágenes)

Video: NeckCrusher (pedal de efectos montado en guitarra): 6 pasos (con imágenes)
Video: ¡Aprende como tocar guitarra eléctrica en solo 25 minutos! Tu primera clase nivel principiante 2024, Noviembre
Anonim
NeckCrusher (pedal de efectos montado en guitarra)
NeckCrusher (pedal de efectos montado en guitarra)

Dale Rosen, Carlos Reyes y Rob Koch

DATT 2000

Paso 1: problema

Problema
Problema

Los pedales de guitarra restringen al músico a la plataforma de los pedales. Solución: Construya e incruste una funcionalidad de pedales de guitarra en la propia guitarra. Esto permite que el músico se mueva libremente por el escenario, utilizando el mástil de la guitarra como interfaz en lugar de estar restringido a la ubicación de la pedalera. Exploraremos este concepto creando un dispositivo de efecto bitcrusher / frecuencia de muestreo.

Paso 2: contexto del proyecto

Contexto del proyecto
Contexto del proyecto

Hay muchos pedales de guitarra que utilizan los músicos para manipular el sonido de sus guitarras. La mayoría de estos se encuentran generalmente en unidades de rack o pedales, por lo que restringen el control de los efectos a la ubicación de la unidad de efectos. Montar el dispositivo en la guitarra permite a los jugadores controlar los parámetros del efecto en cualquier lugar del escenario. Esto significa que no estarán restringidos y pueden tener la libertad de moverse durante su desempeño.

Dado que Arduino solo es capaz de audio de 8 bits, es imposible realizar un procesamiento de señal de alta fidelidad. Por eso elegimos los efectos que hicimos, ya que se basan en crear un sonido distorsionado de baja fidelidad. Estos son los únicos efectos que son razonablemente posibles con un Arduino.

Paso 3: Piezas / herramientas necesarias

Piezas / herramientas necesarias
Piezas / herramientas necesarias

● Taladro de impacto

● Cortadores de alambre

● Pelacables

● Soldador

● Pistola de pegamento caliente

● Bomba desoldadora

● Guitarra ● Caja

● Soldar

● pegamento caliente

● Arduino

● Proto Board

● Alambre revestido

● Conectores de audio (x2)

● Potenciómetros (x3)

● Condensadores: 2,2 uF (x2)

● Alambre de cobre expuesto

● Tornillos (M3.5 * 8)

● Resistencias: 1 k, 10 k, 1,2 k, 1,5 k, 390 k

● * Amplificador operacional (LM358) / * Transistor (2N3442)

Paso 4: estrategia técnica

Estrategia técnica
Estrategia técnica

Circuito interno

De entrada y salida

Necesitamos convertir la señal de audio proveniente de una guitarra a algo que el arduino pueda usar y modificar. Luego, necesitaremos convertir la señal proveniente del arduino nuevamente en una señal de audio. Arduino lee voltajes de 0V a 5V, las señales de audio son de -1V a 1V. Estas conversiones se realizan mediante resistencias. La señal también se convertirá en el circuito de salida.

Biblioteca Arduino: ArduinoDSP

Descripción del proyecto (interfaz)

Perillas Perilla 1: Frecuencia de muestreo

Perilla 2: Trituradora de bits

Perilla 3: Desplazador de bits

Paso 5: Código

Código
Código

#include "dsp.h"

#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))

boolean div32; boolean div16;

voltile boolean f_sample; byte volátil badc0; byte volátil badc1; byte volátil ibb;

int fx1; int fx2; int fx3; int fx4;

int cnta; int icnt; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; byte bb;

byte dd [512]; // Matriz de memoria de audio de 8 bits

configuración vacía () {setupIO ();

// recarga la onda después de 1 segundo fill_sinewave ();

// establece adc prescaler en 64 para la frecuencia de muestreo de 19kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // ADC de 8 bits en el registro ADCH sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Modo Timer2 PWM configurado en PWM cbi rápido (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Configuración para Timer2 cbi (TCCR2B, WGM22); // Preescalador de reloj Timer2 a: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Enable sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

bucle vacío () {

// verifica el estado del potenciómetro de efecto y del interruptor giratorio readKnobs ();

// ************* // ***Normal*** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (izquierda); salida (izquierda, entrada); }

// ************* // *** Phasor *** // *************

si (fx4> 100) {

fx1 = 0; fx2 = 0; fx3 = 0;

while (! f_sample) {// espera el valor de muestra de ADC} // ciclo 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = falso; bb = badc1; dd [icnt1] = bb; // escribir en el búfer fx4 = iw * badc0 / 255; // escalar la muestra retardada con potenciómetro iw1 = dd [icnt2]; // leer el búfer de retardo badc0 = badc0 / 20; // valor límite a 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 y 511; // índice de límite 0.. icnt1 = icnt1 & 511; // índice de límite 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Valor de muestra para salida PWM

PORTD = PORTD ^ 128; salida (izquierda, PORTD); // Producción }

// ************* // *** Flanger *** // ************* if (fx3> 100) {

fx1 = 0; fx2 = 0; fx4 = 0;

while (! f_sample) {// espera el valor de muestra de ADC} // ciclo 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = falso; bb = dd [icnt]; // lee el búfer de retardo iw = 127 - bb; // restar el desplazamiento fx3 = iw * badc0 / 255; // escalar la muestra retardada con potenciómetro iw1 = 127 - badc1; // resta el desplazamiento de la nueva muestra iw1 = iw1 + iw; // agrega una muestra retrasada y una nueva muestra if (iw1 127) iw1 = 127; // Limitador de audio bb = 127 + iw1; // agregue el desplazamiento dd [icnt] = bb; // almacena la muestra en el búfer de audio icnt ++; icnt = icnt & 511; // limite bufferindex 0..511 OCR2A = bb; // Valor de muestra para salida PWM

PORTD = PORTD ^ 128; salida (izquierda, PORTD); // Producción

} }

anular readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);

}

void fill_sinewave () {float pi = 3.141592; float dx; float fd; flotador fcnt; dx = 2 * pi / 512; // llena el búfer de 512 bytes para (iw = 0; iw <= 511; iw ++) {// con 50 puntos sinewawe fd = 127 * sin (fcnt); // tono fundamental fcnt = fcnt + dx; // en el rango de 0 a 2xpi y 1/512 incrementos bb = 127 + fd; // agrega un desplazamiento de CC a sinewawe dd [iw] = bb; // escribe el valor en la matriz

} }

// ********************************************** ****************** // Servicio de interrupción de Timer2 a 62.5 KHz // aquí la señal de audio y potenciómetro se muestrea a una velocidad de: 16Mhz / 256/2/2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // divide la frecuencia del timer2 / 2 a 31.25kHz if (div32) {div16 =! div16; if (div16) {// muestrea el canal 0 y 1 alternativamente para que cada canal sea muestreado con 15.6kHz badc0 = ADCH; // obtener el canal ADC 0 sbi (ADMUX, MUX0); // establece el multiplexor en el canal 1} else {badc1 = ADCH; // obtener el canal 1 de ADC cbi (ADMUX, MUX0); // establece el multiplexor en el canal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // breve retraso antes de iniciar la conversión sbi (ADCSRA, ADSC); // iniciar la siguiente conversión}

}

Paso 6: video

Problemas potenciales ● La pastilla es demasiado débil para alimentar el circuito; necesita un amplificador operacional. - En el video usamos un amplificador de señal. (La caja gris sobre la mesa.)

Recomendado: