Taula de continguts:

NeckCrusher (pedal d'efecte muntat a la guitarra): 6 passos (amb imatges)
NeckCrusher (pedal d'efecte muntat a la guitarra): 6 passos (amb imatges)

Vídeo: NeckCrusher (pedal d'efecte muntat a la guitarra): 6 passos (amb imatges)

Vídeo: NeckCrusher (pedal d'efecte muntat a la guitarra): 6 passos (amb imatges)
Vídeo: Одна история интереснее другой ► 4 Прохождение Dying Light 2: Stay Human 2024, Desembre
Anonim
NeckCrusher (pedal d'efecte muntat a la guitarra)
NeckCrusher (pedal d'efecte muntat a la guitarra)

Dale Rosen, Carlos Reyes i Rob Koch

DATT 2000

Pas 1: problema

Problema
Problema

Els pedals de guitarra restringeixen el músic a la plataforma del pedal. Solució: creeu i incorporeu una funcionalitat de pedals de guitarra a la mateixa guitarra. Això permet al músic desplaçar-se lliurement per l'escenari, fent servir el coll de la guitarra com a interfície en lloc de restringir-se a la ubicació del pedalboard. Explorarem aquest concepte creant un dispositiu d’efecte de velocitat de mostreig / bits.

Pas 2: context del projecte

Context del projecte
Context del projecte

Hi ha molts pedals de guitarra que els músics fan servir per manipular el so de les seves guitarres. La majoria d'aquests solen estar en unitats basades en bastidors o bascules, restringint el control dels efectes a la ubicació de la unitat d'efectes. El muntatge del dispositiu a la guitarra permet als jugadors controlar els paràmetres de l’efecte en qualsevol lloc de l’escenari. Això significa que no es restringiran i poden tenir la llibertat de moure's per la seva actuació.

Atès que Arduino només és capaç d’àudio de 8 bits, és impossible fer processaments de senyal d’alta fidelitat. Per això vam escollir els efectes que vam fer, ja que es basen en la creació d’un so distorsionat de baixa fidelitat. Aquests són els únics efectes raonablement possibles amb un Arduino.

Pas 3: es necessiten parts / eines

Es necessiten peces / eines
Es necessiten peces / eines

● simulacre d’impacte

● Talladors de filferro

● Decapants de filferro

● Soldador

● Pistola de cola calenta

● Bomba de dessoldatge

● Guitarra ● Tancament

● Soldar

● Hot Glue

● Arduino

● Proto Board

● Fil recobert

● Preses d'àudio (x2)

● Potenciòmetres (x3)

● Condensadors: 2,2 uF (x2)

● Fil de coure exposat

● Cargols (M3.5 * 8)

● Resistències: 1 k, 10 k, 1,2 k, 1,5 k, 390 k

● * Op Amp (LM358) / * Transistor (2N3442)

Pas 4: Estratègia tècnica

Estratègia tècnica
Estratègia tècnica

Circuit intern

D'entrada i sortida

Hem de convertir el senyal d'àudio provinent d'una guitarra a quelcom que l'arduino pugui utilitzar i modificar. Aleshores haurem de convertir el senyal que prové de l’arduino en un senyal d’àudio. Arduino llegeix tensions de 0V a 5V, els senyals d'àudio són de -1V a 1V. Aquestes conversions es fan mitjançant resistències. El senyal es convertirà també al circuit de sortida.

Biblioteca Arduino: ArduinoDSP

Descripció del projecte (interfície)

Botons Botó 1: freqüència de mostra

Pom 2: trituradora de bits

Botó 3: canvi de bits

Pas 5: Codi

Codi
Codi

#include "dsp.h"

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

div32 booleà; div16 booleà;

f_sample booleà volàtil; 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]; // Matriu de memòria d'àudio de 8 bits

void setup () {setupIO ();

// recarregar l'ona després d'1 segon fill_sinewave ();

// estableix l'adc prescaler a 64 per a una freqüència de mostreig de 19 kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // ADC de 8 bits a ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // El mode PWM del Temporitzador2 s'ha definit com a PWM cbi ràpid (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Configuració de Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler 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 buit () {

// comproveu l'estat del potenciòmetre d'efecte i del commutador rotatiu readKnobs ();

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

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

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

si (fx4> 100) {

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

while (! f_sample) {// espereu el valor de mostra de ADC} // Cicle 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = fals; bb = badc1; dd [icnt1] = bb; // escriu al buffer fx4 = iw * badc0 / 255; // mostra retardada a escala amb potenciòmetre iw1 = dd [icnt2]; // llegeix el buffer de retard badc0 = badc0 / 20; // limita el valor a 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // límit índex 0.. icnt1 = icnt1 & 511; // límit índex 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Valor de mostra a la sortida PWM

PORTD = PORTD ^ 128; sortida (esquerra, PORTD); // Sortida}

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

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

while (! f_sample) {// espereu el valor de mostra d'ADC} // Cicle 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = fals; bb = dd [icnt]; // llegeix el buffer de retard iw = 127 - bb; // restar offset fx3 = iw * badc0 / 255; // mostra retardada a escala amb potenciòmetre iw1 = 127 - badc1; // restar el desplaçament de la nova mostra iw1 = iw1 + iw; // afegir mostra retardada i mostra nova si (iw1 127) iw1 = 127; // Limitador d'àudio bb = 127 + iw1; // afegir compensació dd [icnt] = bb; // emmagatzema la mostra a la memòria intermèdia d'àudio icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Valor de mostra a la sortida PWM

PORTD = PORTD ^ 128; sortida (esquerra, PORTD); // Sortida

} }

void 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; // ompliu el bufferarry de 512 bytes per a (iw = 0; iw <= 511; iw ++) {// amb 50 períodes sinewawe fd = 127 * sin (fcnt); // to fonamental fcnt = fcnt + dx; // en el rang de 0 a 2xpi i increments de 1/512 bb = 127 + fd; // afegir dc offset a sinewawe dd [iw] = bb; // escriu valor a la matriu

} }

// ************************************************* ****************** // Servei d'interrupció del temporitzador2 a 62,5 KHz // aquí es mostra el senyal d'àudio i pot a una velocitat de: 16Mhz / 256/2/2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // divideix la freqüència del temporitzador2 / 2 a 31,25 kHz si (div32) {div16 =! div16; if (div16) {// mostra el canal 0 i 1 alternativament, de manera que cada canal es mostra amb 15,6 kHz badc0 = ADCH; // obtenir el canal ADC 0 sbi (ADMUX, MUX0); // estableix el multiplexor al canal 1} else {badc1 = ADCH; // obtenir el canal ADC 1 cbi (ADMUX, MUX0); // estableix el multiplexor al canal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // poc temps abans de començar la conversió sbi (ADCSRA, ADSC); // iniciar la següent conversió}

}

Pas 6: vídeo

Problemes potencials ● La recollida és una mica massa feble per alimentar el circuit; necessiteu un amplificador operatiu. - Al vídeo hem utilitzat un amplificador de senyal. (La caixa gris estesa sobre la taula.)

Recomanat: