Turinys:

„NeckCrusher“(su gitara montuojamas efekto pedalas): 6 žingsniai (su nuotraukomis)
„NeckCrusher“(su gitara montuojamas efekto pedalas): 6 žingsniai (su nuotraukomis)

Video: „NeckCrusher“(su gitara montuojamas efekto pedalas): 6 žingsniai (su nuotraukomis)

Video: „NeckCrusher“(su gitara montuojamas efekto pedalas): 6 žingsniai (su nuotraukomis)
Video: Голубая стрела (1958) фильм 2024, Lapkritis
Anonim
„NeckCrusher“(gitaros efekto pedalas)
„NeckCrusher“(gitaros efekto pedalas)

Dale'as Rosenas, Carlosas Reyesas ir Robas Kochas

DATT 2000

1 žingsnis: problema

Problema
Problema

Gitaros pedalai apriboja muzikanto pedalų platformą. Sprendimas: sukurkite ir įterpkite gitaros pedalų funkcionalumą į pačią gitarą. Tai leidžia muzikantui laisvai judėti scenoje, naudojant gitaros kaklą kaip sąsają, o ne apsiribojant pedalo lentos vieta. Mes išnagrinėsime šią koncepciją sukurdami bitų trupintuvo/imties dažnio efekto įrenginį.

2 žingsnis: projekto kontekstas

Projekto kontekstas
Projekto kontekstas

Yra daug gitaros pedalų, kuriuos muzikantai naudoja manipuliuodami savo gitaros garsu. Dauguma jų dažniausiai yra stelažo arba „stomp box“įrenginiuose, todėl efektų valdymas apribojamas efektų bloko vieta. Prietaiso pritvirtinimas prie gitaros leidžia žaidėjams valdyti efekto parametrus bet kurioje scenos vietoje. Tai reiškia, kad jie nebus apriboti ir galės laisvai judėti dėl savo pasirodymo.

Kadangi „Arduino“gali tik 8 bitų garsą, neįmanoma apdoroti aukštos kokybės signalų. Štai kodėl mes pasirinkome padarytus efektus, nes jie pagrįsti žemo tikslumo, iškreipto garso sukūrimu. Tai yra vieninteliai efektai, kurie pagrįstai įmanomi naudojant „Arduino“.

3 žingsnis: reikalingos dalys / įrankiai

Reikalingos dalys / įrankiai
Reikalingos dalys / įrankiai

● Smūginis gręžtuvas

● Vielos pjaustytuvai

● Vielos nuėmikliai

● Lituoklis

● Karšto klijų pistoletas

● Lydymosi siurblys

● Gitara ● Gaubtas

● Lituoklis

● Karštas klijai

● Arduino

● Proto lenta

● Dengta viela

● Garso lizdai (x2)

● Potenciometrai (x3)

● Kondensatoriai: 2,2 uF (x2)

● Atvira varinė viela

● Varžtai (M3.5 *8)

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

● * Galinis stiprintuvas (LM358) / * tranzistorius (2N3442)

4 žingsnis: Techninė strategija

Techninė strategija
Techninė strategija

Vidinė grandinė

Įvesties išvesties

Turime iš gitaros sklindantį garso signalą paversti kažkuo, ką arduino gali naudoti ir keisti. Tada mes turėsime paversti signalą, gaunamą iš arduino, į garso signalą. „Arduino“nuskaito įtampą nuo 0V iki 5V, garso signalai yra nuo -1V iki 1V. Šios konversijos atliekamos naudojant rezistorius. Signalas taip pat bus paverstas išėjimo grandinėje.

„Arduino“biblioteka: „ArduinoDSP“

Projekto aprašymas (sąsaja)

Rankenėlės 1 rankenėlė: mėginio dažnis

2 rankenėlė: bitų smulkintuvas

3 rankenėlė: bitų perjungiklis

5 žingsnis: kodas

Kodas
Kodas

#include "dsp.h"

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

loginis div32; loginis div16;

nepastovus loginis f_pavyzdys; nepastovus baitas badc0; nepastovus baitas badc1; nepastovus baitas 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; baitas bb;

baitas dd [512]; // Garso atminties masyvas 8 bitų

void setup () {setupIO ();

// reload wave po 1 sekundės fill_sinewave ();

// nustatyti adc prescaler į 64 19kHz mėginių ėmimo dažniui cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8 bitų ADC ADCH registre sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Laikmatis2 PWM režimas nustatytas į greitą PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // „Timer2 cbi“sąranka (TCCR2B, WGM22); // „Timer2 Clock Prescaler“į: 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 = blogas1;

}

void loop () {

// patikrinti efekto potenciometro ir sukamojo jungiklio būseną readKnobs ();

// ************* // ***Normalus*** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {baitų įvestis = analogRead (kairėje); išėjimas (kairėje, įvestis); }

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

jei (fx4> 100) {

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

while (! f_sample) {// laukti mėginio vertės iš ADC} // Ciklas 15625 KHz = 64uSec PORTD = PORTD | 128; f_pavyzdys = klaidinga; bb = badc1; dd [icnt1] = bb; // rašyti į buferį fx4 = iw * badc0 / 255; // mastelio atidėtas mėginys su potenciometru iw1 = dd [icnt2]; // skaityti delsos buferį badc0 = badc0 / 20; // ribinė vertė iki 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // ribinis indeksas 0.. icnt1 = icnt1 & 511; // ribinis indeksas 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Pavyzdinė vertė į PWM išvestį

PORTD = PORTD ^ 128; išėjimas (kairėje, PORTD); // Išvestis}

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

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

while (! f_sample) {// laukti ADC vertės pavyzdžio} // ciklas 15625 KHz = 64uSec

PORTD = PORTD | 128; f_pavyzdys = klaidinga; bb = dd [icnt]; // skaityti delsos buferį iw = 127 - bb; // atimti poslinkį fx3 = iw * badc0 / 255; // mastelio atidėtas mėginys su potenciometru iw1 = 127 - badc1; // atimti poslinkį iš naujo mėginio iw1 = iw1 + iw; // pridėti uždelstą pavyzdį ir naują pavyzdį, jei (iw1 127) iw1 = 127; // Garso ribotuvas bb = 127 + iw1; // pridėti poslinkį dd [icnt] = bb; // saugoti pavyzdį garso buferyje icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Pavyzdinė vertė į PWM išvestį

PORTD = PORTD ^ 128; išėjimas (kairėje, PORTD); // Išėjimas

} }

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

}

void fill_sinewave () {plūdė pi = 3.141592; plūdė dx; plūdė fd; float fcnt; dx = 2 * pi / 512; // užpildykite 512 baitų buferį (iw = 0; iw <= 511; iw ++) {// 50 taškų sinewawe fd = 127 * sin (fcnt); // pagrindinis tonas fcnt = fcnt + dx; // intervale nuo 0 iki 2xpi ir 1/512 žingsniais bb = 127 + fd; // pridėti dc ofsetą prie sinewawe dd [iw] = bb; // įrašyti reikšmę į masyvą

} }

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

PORTB = PORTB | 1;

div32 =! div32; // padalinti laikmatį2 dažnis / 2 į 31,25 kHz, jei (div32) {div16 =! div16; if (div16) {// mėginio kanalas 0 ir 1 pakaitomis, todėl iš kiekvieno kanalo imama 15,6 kHz badc0 = ADCH; // gauti ADC kanalą 0 sbi (ADMUX, MUX0); // nustatyti multiplekserį į kanalą 1} else {badc1 = ADCH; // gauti ADC 1 kanalą cbi (ADMUX, MUX0); // nustatyti multiplekserį į kanalą 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // trumpas atidėjimas prieš pradedant konversiją sbi (ADCSRA, ADSC); // pradėti kitą konversiją}

}

6 žingsnis: vaizdo įrašas

Galimos problemos ● Imtuvas yra šiek tiek per silpnas maitinimo grandinei - reikia operacinio stiprintuvo. - Vaizdo įraše panaudojome signalo stiprintuvą. (Pilka dėžutė guli ant stalo.)

Rekomenduojamas: