Përmbajtje:

NeckCrusher (Pedale me efekt të montuar në kitarë): 6 hapa (me fotografi)
NeckCrusher (Pedale me efekt të montuar në kitarë): 6 hapa (me fotografi)

Video: NeckCrusher (Pedale me efekt të montuar në kitarë): 6 hapa (me fotografi)

Video: NeckCrusher (Pedale me efekt të montuar në kitarë): 6 hapa (me fotografi)
Video: New 2024 Honda CB650R Neo Sports Café | Engine Sound 2024, Nëntor
Anonim
NeckCrusher (Pedale me efekt të montuar në kitarë)
NeckCrusher (Pedale me efekt të montuar në kitarë)

Dale Rosen, Carlos Reyes dhe Rob Koch

DATT 2000

Hapi 1: Problemi

Problemi
Problemi

Pedalët e kitarës e kufizojnë muzikantin në platformën e pedaleve. Zgjidhja: Ndërtoni dhe futni një funksionalitet të pedaleve të kitarës në vetë kitarë. Kjo i lejon muzikantit të lëvizë lirshëm nëpër skenë, duke përdorur qafën e kitarës si një ndërfaqe në vend që të kufizohet në vendndodhjen e tabelës së pedalimit. Ne do ta eksplorojmë këtë koncept duke krijuar një pajisje efekti të efektit të shkallës së bitcrusher/mostrës.

Hapi 2: Konteksti i projektit

Konteksti i projektit
Konteksti i projektit

Ka shumë pedale kitare të përdorura nga muzikantët për të manipuluar tingullin e kitareve të tyre. Shumica e tyre zakonisht gjenden në njësitë e bazuara në raft ose stomp, prandaj kufizojnë kontrollin e efekteve në vendndodhjen e njësisë së efekteve. Montimi i pajisjes në kitarë u mundëson lojtarëve të kontrollojnë parametrat e efektit kudo në skenë. Kjo do të thotë se ata nuk do të kufizohen dhe mund të kenë lirinë të lëvizin për performancën e tyre.

Meqenëse Arduino është i aftë vetëm për audio 8 bit, është e pamundur të bëhet përpunimi i sinjalit me besnikëri të lartë. Kjo është arsyeja pse ne zgjodhëm efektet që bëmë, pasi ato bazohen në krijimin e një tingulli besnikërie të ulët, të shtrembëruar. Këto janë efektet e vetme që janë të mundshme në mënyrë të arsyeshme me një Arduino.

Hapi 3: Pjesët / mjetet e kërkuara

Pjesët / Mjetet e kërkuara
Pjesët / Mjetet e kërkuara

Ill Stërvitja e Ndikimit

Ters Prerës telash

St Zhveshëset me tela

I Hekuri për saldim

Gun Armë me ngjitës të nxehtë

P Pompë e shkrirjes

● kitarë los mbyllje

● Saldator

. Ngjitës i nxehtë

Arduino

● Proto Board

Ire Tela të veshur

Acks Priza audio (x2)

● Potenciometra (x3)

● Kondensatorët: 2.2 uF (x2)

Ire Tela bakri e ekspozuar

● Vida (M3.5 *8)

● Rezistenca: 1 k, 10 k, 1.2 k, 1.5 k, 390 k

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

Hapi 4: Strategjia Teknike

Strategjia Teknike
Strategjia Teknike

Qarqet e Brendshme

Hyrje dalje

Ne duhet të konvertojmë sinjalin audio që vjen nga një kitarë në diçka që arduino mund të përdorë dhe modifikojë. Atëherë do të na duhet të konvertojmë sinjalin që vjen nga arduino përsëri në një sinjal audio. Arduino lexon tensione nga 0V në 5V, sinjalet audio janë nga -1V në 1V. Këto konvertime bëhen duke përdorur rezistorë. Sinjali do të konvertohet edhe në qarkun dalës.

Biblioteka Arduino: ArduinoDSP

Përshkrimi i Projektit (Ndërfaqja)

Çelësat Çelësa 1: Shkalla e Mostrës

Doreza 2: Thërrmues Bit

Doreza 3: Shifter Bit

Hapi 5: Kodi

Kodi
Kodi

#përfshi "dsp.h"

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

boolean div32; boolean div16;

mostër boolean e paqëndrueshme f_sampull; bajt i paqëndrueshëm badc0; bajt i paqëndrueshëm badc1; bajt i paqëndrueshëm 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]; // Array Memory Audio 8-Bit

void setup () {setupIO ();

// ringarkoni valën pas 1 sekonde fillimi_inal ();

// vendos prescaler adc në 64 për frekuencën e marrjes së mostrave 19kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // ADC 8-bitësh në ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Mënyra Timer2 PWM e vendosur në PWM cbi të shpejtë (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Konfigurimi për Timer2 cbi (TCCR2B, WGM22); // Ora Timer2 Precaler në: 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;

}

lak void () {

// kontrolloni statusin e potenciometrit të efektit dhe kaloni rrotullues readKnobs ();

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

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (majtas); dalje (majtas, hyrëse); }

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

nëse (fx4> 100) {

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

ndërsa (! f_sample) {// prisni Vlerën e Mostrës nga ADC} // Cikli 15625 KHz = 64uSec PORTD = PORTD | 128; mostër f_ e rreme; bb = badc1; dd [icnt1] = bb; // shkruaj në tampon fx4 = iw * badc0 / 255; // shkallëzoni mostrën e vonuar me potenciometër iw1 = dd [icnt2]; // lexoni tamponin e vonesës badc0 = badc0 / 20; // kufizo vlerën në 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // indeksi limit 0.. icnt1 = icnt1 & 511; // indeksi limit 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Vlera e mostrës për daljen e PWM

PORTD = PORTD ^ 128; dalje (majtas, PORTD); // dalje}

// ************* *** *** Flanger *** // ************ nëse (fx3> 100) {

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

ndërsa (! f_sample) {// prisni Vlerën e Mostrës nga ADC} // Cikli 15625 KHz = 64uSec

PORTD = PORTD | 128; mostër f_ e rreme; bb = dd [icnt]; // lexoni tamponin e vonesës iw = 127 - bb; // nxjerr kompensimin fx3 = iw * badc0 / 255; // shkalla e vonesës së mostrës me potenciometër iw1 = 127 - badc1; // nxjerr kompensimin nga mostra e re iw1 = iw1 + iw; // shtoni mostër të vonuar dhe mostër të re nëse (iw1 127) iw1 = 127; // Kufizuesi i zërit bb = 127 + iw1; // shtoni offset dd [icnt] = bb; // ruani mostrën në tampon audio icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Vlera e mostrës për daljen e PWM

PORTD = PORTD ^ 128; dalje (majtas, PORTD); // Dalja

} }

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

}

void fillo_sinewave () {float pi = 3.141592; noton dx; noton fd; noton fcnt; dx = 2 * pi / 512; // mbushni bufferin 512 bajt për (iw = 0; iw <= 511; iw ++) {// me 50 periudha sinewawe fd = 127 * sin (fcnt); // toni themelor fcnt = fcnt + dx; // në rangun nga 0 deri në 2xpi dhe 1/512 rritje bb = 127 + fd; // shtoni dc offset në sinewawe dd [iw] = bb; // shkruaj vlerën në grup

} }

// ******************************************** ****************** // Shërbimi i ndërprerjes së kohëmatësit 2 në 62.5 KHz // këtu mostra e sinjalit audio dhe tenxhere është marrë me një shpejtësi prej: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // ndani kohëmatësin2 frekuencën / 2 në 31.25kHz nëse (div32) {div16 =! div16; nëse (div16) {// mostra e kanalit 0 dhe 1 në mënyrë alternative kështu që secili kanal të merret mostra me 15.6kHz badc0 = ADCH; // merrni kanalin ADC 0 sbi (ADMUX, MUX0); // vendosni multiplexerin në kanalin 1} tjetër {badc1 = ADCH; // merrni kanalin ADC 1 cbi (ADMUX, MUX0); // vendosni multiplexer në kanalin 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // vonesë e shkurtër para fillimit të konvertimit sbi (ADCSRA, ADSC); // fillo konvertimin tjetër}

}

Hapi 6: Video

Problemet e mundshme ● Marrja është pak më e dobët për qarkun e energjisë - keni nevojë për një amplifikator op. - Në video kemi përdorur një përforcues sinjali. (Kutia gri e shtrirë në tryezë.)

Recommended: