Obsah:

NeckCrusher (efektový pedál namontovaný na gitare): 6 krokov (s obrázkami)
NeckCrusher (efektový pedál namontovaný na gitare): 6 krokov (s obrázkami)

Video: NeckCrusher (efektový pedál namontovaný na gitare): 6 krokov (s obrázkami)

Video: NeckCrusher (efektový pedál namontovaný na gitare): 6 krokov (s obrázkami)
Video: Tipy na kvalitní pluginy zdarma 2024, December
Anonim
NeckCrusher (efektový pedál namontovaný na gitare)
NeckCrusher (efektový pedál namontovaný na gitare)

Dale Rosen, Carlos Reyes a Rob Koch

DATT 2000

Krok 1: Problém

Problém
Problém

Gitarové pedále obmedzujú hudobníka na pedálovú plošinu. Riešenie: Zostavte a vložte funkciu gitarových pedálov do samotnej gitary. To umožňuje hudobníkovi voľne sa pohybovať po pódiu a používať krk ako gitaru, namiesto toho, aby bol obmedzený na umiestnenie pedalboardu. Tento koncept preskúmame vytvorením zariadenia s efektom bitcrusher/vzorkovacej frekvencie.

Krok 2: Kontext projektu

Kontext projektu
Kontext projektu

Hudobníci používajú mnoho gitarových pedálov na manipuláciu so zvukom svojich gitár. Väčšina z nich je zvyčajne v stojanových alebo dupačkových jednotkách, a preto je ovládanie efektov obmedzené na umiestnenie efektovej jednotky. Upevnenie zariadenia na gitaru umožňuje hráčom ovládať parametre efektu kdekoľvek na pódiu. To znamená, že nebudú obmedzení a budú sa môcť voľne pohybovať za svojim výkonom.

Pretože Arduino dokáže iba 8 -bitový zvuk, nie je možné vykonať vysoko kvalitné spracovanie signálu. Preto sme vybrali efekty, ktoré sme urobili, pretože sú založené na vytváraní skresleného zvuku s nízkou vernosťou. Toto sú jediné efekty, ktoré sú u Arduina rozumne možné.

Krok 3: Potrebné diely / nástroje

Potrebné diely / nástroje
Potrebné diely / nástroje

● Príklepová vŕtačka

● Rezačky drôtov

● Odizolovače drôtov

● Spájkovačka

● Horúca lepiaca pištoľ

● Odpájacie čerpadlo

● Gitara ● Kryt

● Spájkovačka

● Horúce lepidlo

● Arduino

● proto rada

● Potiahnutý drôt

● Audio konektory (x2)

● Potenciometre (x3)

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

● Odkrytý medený drôt

● Skrutky (M3,5 *8)

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

● * Operačný zosilňovač (LM358) / * Tranzistor (2N3442)

Krok 4: Technická stratégia

Technická stratégia
Technická stratégia

Vnútorný obvod

Vstup výstup

Potrebujeme previesť zvukový signál pochádzajúci z gitary na niečo, čo arduino môže použiť a upraviť. Potom budeme musieť previesť signál prichádzajúci z arduina späť na zvukový signál. Arduino číta napätie od 0V do 5V, zvukové signály sú od -1V do 1V. Tieto konverzie sa vykonávajú pomocou odporov. Signál bude konvertovaný aj vo výstupnom obvode.

Knižnica Arduino: ArduinoDSP

Popis projektu (rozhranie)

Gombíky Gombík 1: Vzorkovacia frekvencia

Knob 2: Bit Crusher

Knob 3: Bit Shifter

Krok 5: 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))

booleovský div32; booleovský div16;

volatile boolean f_sample; volatile byte badc0; volatile byte badc1; volatile byte 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; bajt bb;

bajt dd [512]; // 8-bitové pole zvukovej pamäte

void setup () {setupIO ();

// znovu načítať vlnu po 1 sekunde fill_sinewave ();

// nastavenie adc prescaleru na 64 pre vzorkovaciu frekvenciu 19kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bitový ADC v ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Režim Timer2 PWM nastavený na rýchly PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Nastavenie pre Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler to: 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;

}

prázdna slučka () {

// kontrola stavu efektového potenciometra a otočného spínača readKnobs ();

// ************ // // *** Normálne *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (vľavo); výstup (vľavo, vstup); }

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

ak (fx4> 100) {

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

while (! f_sample) {// čakajte na ukážkovú hodnotu z ADC} // cyklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = nepravda; bb = badc1; dd [icnt1] = bb; // zapis do buffera fx4 = iw * badc0 / 255; // škálovanie oneskorenej vzorky s potenciometrom iw1 = dd [icnt2]; // prečítajte oneskorenie vyrovnávacej pamäte badc0 = badc0 / 20; // limitná hodnota na 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limitný index 0.. icnt1 = icnt1 & 511; // limitný index 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Ukážková hodnota pre výstup PWM

PORTD = PORTD ^ 128; výstup (vľavo, PORTD); // Výkon }

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

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

while (! f_sample) {// čakajte na ukážkovú hodnotu z ADC} // cyklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = nepravda; bb = dd [icnt]; // prečítajte oneskorenie vyrovnávacej pamäte iw = 127 - bb; // odčítanie ofsetu fx3 = iw * badc0 / 255; // škálovanie oneskorenej vzorky s potenciometrom iw1 = 127 - badc1; // odčítanie posunu od novej vzorky iw1 = iw1 + iw; // pridanie oneskorenej vzorky a novej vzorky, ak (iw1 127) iw1 = 127; // Obmedzovač zvuku bb = 127 + iw1; // pridanie ofsetu dd [icnt] = bb; // uloženie vzorky do zvukovej vyrovnávacej pamäte icnt ++; icnt = icnt & 511; // obmedzenie indexu bufferu 0..511 OCR2A = bb; // Ukážková hodnota pre výstup PWM

PORTD = PORTD ^ 128; výstup (vľavo, PORTD); // Výkon

} }

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

}

neplatné fill_sinewave () {float pi = 3.141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // vyplnenie 512 bajtovej vyrovnávacej pamäte pre (iw = 0; iw <= 511; iw ++) {// 50 bodkami sinewawe fd = 127 * sin (fcnt); // základný tón fcnt = fcnt + dx; // v rozsahu 0 až 2xpi a prírastkoch 1/512 bb = 127 + fd; // pridanie DC offsetu do sinewawe dd [iw] = bb; // zapis hodnoty do poľa

} }

// ***************************************************** ********* *********** Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // delenie frekvencie timer2 / 2 až 31,25kHz, ak (div32) {div16 =! div16; if (div16) {// striedavo vzorkuje kanál 0 a 1, takže každý kanál je vzorkovaný s 15,6 kHz badc0 = ADCH; // získajte kanál ADC 0 sbi (ADMUX, MUX0); // nastav multiplexer na kanál 1} else {badc1 = ADCH; // získajte kanál ADC 1 cbi (ADMUX, MUX0); // nastavenie multiplexera na kanál 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // krátke oneskorenie pred spustením konverzie sbi (ADCSRA, ADSC); // spustenie ďalšej konverzie}

}

Krok 6: Video

Možné problémy ● Snímač je na napájací obvod príliš slabý - potrebujete operačný zosilňovač. - Vo videu sme použili zosilňovač signálu. (Sivý box ležiaci na stole.)

Odporúča: