Tartalomjegyzék:

NeckCrusher (gitárra szerelt effektpedál): 6 lépés (képekkel)
NeckCrusher (gitárra szerelt effektpedál): 6 lépés (képekkel)

Videó: NeckCrusher (gitárra szerelt effektpedál): 6 lépés (képekkel)

Videó: NeckCrusher (gitárra szerelt effektpedál): 6 lépés (képekkel)
Videó: Neck Deep - Crushing Grief (No Remedy) (Guitar Cover) 2024, November
Anonim
NeckCrusher (gitárra szerelt effektpedál)
NeckCrusher (gitárra szerelt effektpedál)

Dale Rosen, Carlos Reyes és Rob Koch

DATT 2000

1. lépés: Probléma

Probléma
Probléma

A gitárpedálok a zenészt a pedálplatformra korlátozzák. Megoldás: Építsen és illesszen be egy gitárpedál funkciót a gitárba. Ez lehetővé teszi a zenész számára, hogy szabadon mozogjon a színpadon, a gitár nyakát használva interfészként, ahelyett, hogy a pedál tábla helyére korlátozódna. Ezt a koncepciót fogjuk feltárni egy bitzúzó/mintavételi effektus eszköz létrehozásával.

2. lépés: A projekt kontextusa

A projekt kontextusa
A projekt kontextusa

Sok gitárpedált használnak a zenészek, hogy manipulálják gitárjuk hangját. Ezek többsége általában rack alapú vagy stomp box egységekben van, ezért az effektek vezérlését az effekt egység helyére korlátozzák. A készüléket a gitárra szerelve a játékosok bárhol a színpadon szabályozhatják a hatás paramétereit. Ez azt jelenti, hogy nem korlátozzák őket, és szabadon mozoghatnak teljesítményük érdekében.

Mivel az Arduino csak 8 bites hangra képes, lehetetlen nagy pontosságú jelfeldolgozást végezni. Ezért esett a választásunk az effektekre, mivel alacsony hűségű, torz hangzáson alapulnak. Ez az egyetlen olyan hatás, amely ésszerűen lehetséges egy Arduino használatával.

3. lépés: Szükséges alkatrészek / eszközök

Szükséges alkatrészek / szerszámok
Szükséges alkatrészek / szerszámok

● Ütvefúró

● Drótvágók

● Huzalcsupaszítók

● Forrasztópáka

● Forró ragasztópisztoly

● Forrasztószivattyú

● Gitár ● Ház

● Forrasztás

● Forró ragasztó

● Arduino

● Proto Board

● Bevonatú huzal

● Hangcsatlakozók (x2)

● Potenciométerek (x3)

● Kondenzátorok: 2,2 uF (x2)

● Nyitott rézhuzal

● Csavarok (M3,5 *8)

● Ellenállások: 1 k, 10 k, 1,2 k, 1,5 k, 390 k

● * Op erősítő (LM358) / * tranzisztor (2N3442)

4. lépés: Műszaki stratégia

Technikai stratégia
Technikai stratégia

Belső áramkör

Bemenet kimenet

Át kell alakítanunk a gitárból érkező hangjelet olyasmivé, amelyet az arduino használhat és módosíthat. Ezt követően vissza kell alakítanunk az arduino -ból érkező jelet audió jellé. Az Arduino 0V és 5V közötti feszültséget olvas, az audiojelek -1V és 1V között vannak. Ezeket az átalakításokat ellenállások segítségével végezzük. A jel átalakul a kimeneti áramkörben is.

Arduino könyvtár: ArduinoDSP

Projekt leírása (interfész)

Gombok 1. gomb: Mintavételi arány

2. gomb: Bitzúzó

3. gomb: Bitváltó

5. lépés: Kód

Kód
Kód

#include "dsp.h"

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

logikai div32; boolean div16;

illékony logikai f_sample; illékony bájt badc0; illékony bájt badc1; illékony bájt 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; bb bájt;

bájt dd [512]; // Audio memória tömb 8 bites

void setup () {setupIO ();

// hullám újratöltése 1 másodperc után fill_sinewave ();

// az adc prescaler beállítása 64 -re 19 kHz mintavételi frekvenciára cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8 bites ADC az ADCH regiszterben sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Az időzítő2 PWM mód beállítása gyors PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Timer2 cbi beállítása (TCCR2B, WGM22); // Timer2 Clock Prescaler to: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Engedélyezze a sbi -t (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// az effekt potenciométer és a forgókapcsoló állapotának ellenőrzése readKnobs ();

// ************* // ***Normál*** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {bájtos bemenet = analóg Olvasás (balra); kimenet (bal, bemenet); }

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

ha (fx4> 100) {

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

while (! f_sample) {// várjon mintaértéket az ADC -től} // Ciklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_minta = hamis; bb = badc1; dd [icnt1] = bb; // írás a pufferbe fx4 = iw * badc0 / 255; // skálázott késleltetett minta potenciométerrel iw1 = dd [icnt2]; // olvassa el a késleltető puffert badc0 = badc0 / 20; // határérték 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limit index 0.. icnt1 = icnt1 & 511; // limit index 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Mintaérték a PWM kimenethez

PORTD = PORTD ^ 128; kimenet (bal, PORTD); // Kimenet }

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

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

while (! f_sample) {// várjon mintaértéket az ADC -től} // Ciklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_minta = hamis; bb = dd [icnt]; // a késleltető puffer olvasása iw = 127 - bb; // kivonás eltolás fx3 = iw * badc0 / 255; // skála késleltetett minta potenciométerrel iw1 = 127 - badc1; // levonás eltolás az új mintából iw1 = iw1 + iw; // késleltetett minta és új minta hozzáadása, ha (iw1 127) iw1 = 127; // Hanghatároló bb = 127 + iw1; // add offset dd [icnt] = bb; // minta tárolása audio pufferben icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Mintaérték a PWM kimenethez

PORTD = PORTD ^ 128; kimenet (bal, PORTD); // Kimenet

} }

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

}

void fill_sinewave () {float pi = 3.141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // töltse ki az (iw = 0; iw <= 511; iw ++) {512 bájtos ütközőt 50 ponttal sinewawe fd = 127 * sin (fcnt); // alaphang fcnt = fcnt + dx; // 0 és 2xpi közötti tartományban és 1/512 lépésekben bb = 127 + fd; // dc offset hozzáadása a sinewawe -hez dd [iw] = bb; // érték írása tömbbe

} }

// ************************************************ ****************** // Timer2 Interrupt Service 62,5 KHz -en // itt az audio és a pot jel mintavételezése: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // osztja az időzítő2 frekvenciát / 2 -ről 31,25 kHz -re, ha (div32) {div16 =! div16; if (div16) {// mintacsatorna 0 és 1 felváltva, így minden csatorna mintavételezése 15,6 kHz badc0 = ADCH; // ADC csatorna beszerzése 0 sbi (ADMUX, MUX0); // állítsa be a multiplexert az 1 csatornára} else {badc1 = ADCH; // ADC 1. csatorna beszerzése cbi (ADMUX, MUX0); // állítsa a multiplexert a 0 csatornára f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // rövid késleltetés a konverzió megkezdése előtt sbi (ADCSRA, ADSC); // indítsa el a következő konverziót}

}

6. lépés: Videó

Lehetséges problémák ● A hangszedő kissé gyenge az áramkörhöz - op erősítőre van szükség. - A videóban jelfokozót használtunk. (A szürke doboz az asztalon hever.)

Ajánlott: