INHOUDSOPGAWE:

NeckCrusher (kitaar gemonteerde effekpedaal): 6 stappe (met foto's)
NeckCrusher (kitaar gemonteerde effekpedaal): 6 stappe (met foto's)

Video: NeckCrusher (kitaar gemonteerde effekpedaal): 6 stappe (met foto's)

Video: NeckCrusher (kitaar gemonteerde effekpedaal): 6 stappe (met foto's)
Video: Part 3 - The Last of the Plainsmen Audiobook by Zane Grey (Chs 12-17) 2024, Julie
Anonim
NeckCrusher (kitaar gemonteerde effekpedaal)
NeckCrusher (kitaar gemonteerde effekpedaal)

Dale Rosen, Carlos Reyes en Rob Koch

DATT 2000

Stap 1: Probleem

Probleem
Probleem

Kitaarpedale beperk die musikant tot die pedaalplatform. Oplossing: Bou en sluit 'n kitaarpedaal -funksie in die kitaar self in. Dit stel die musikant in staat om vrylik oor die verhoog te beweeg, met die kitaarhals as 'n koppelvlak in plaas van om beperk te word tot die ligging van die pedaalbord. Ons sal hierdie konsep ondersoek deur 'n apparaat vir bitcrusher/sample rate effek te skep.

Stap 2: Projekkonteks

Projekkonteks
Projekkonteks

Daar is baie kitaarpedale wat musikante gebruik om die klank van hul kitare te manipuleer. Die meeste hiervan is gewoonlik in rek-gebaseerde eenhede of stampbakke, en beperk die beheer van die effekte tot die plek van die effekteenheid. Deur die toestel op die kitaar te monteer, kan spelers die parameters van die effek oral op die verhoog beheer. Dit beteken dat hulle nie beperk sal word nie en dat hulle die vryheid kan hê om rond te beweeg vir hul optrede.

Aangesien Arduino slegs 8 -bis -klank kan gebruik, is dit onmoontlik om 'n hoë -getrouheidsseinverwerking te doen. Dit is die rede waarom ons die effekte wat ons gedoen het, gekies het, aangesien dit gebaseer is op die skep van 'n lae -getroue, verwronge klank. Dit is die enigste effekte wat redelik moontlik is met 'n Arduino.

Stap 3: Onderdele / gereedskap benodig

Onderdele / gereedskap benodig
Onderdele / gereedskap benodig

● Impakboor

● Draadsnyers

● Draadstroppers

● Soldeerbout

● Warmlijmpistool

● Desoldeerpomp

● Kitaar ● Omhulsel

● Soldeer

● Warm gom

● Arduino

● Proto Board

● Bedekte draad

● Audio -aansluitings (x2)

● Potensiometers (x3)

● Kapasitors: 2,2 uF (x2)

● Blootgestelde koperdraad

● Skroewe (M3,5 *8)

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

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

Stap 4: Tegniese strategie

Tegniese strategie
Tegniese strategie

Interne stroombane

Invoer/uitvoer

Ons moet die klanksignaal van 'n kitaar omskakel na iets wat die arduino kan gebruik en verander. Ons sal dan die sein van die arduino terug moet omskakel in 'n klanksein. Arduino lees spanning van 0V tot 5V, klankseine is van -1V tot 1V. Hierdie omskakelings word gedoen met behulp van weerstande. Die sein sal ook in die uitsetstroombaan omgeskakel word.

Arduino -biblioteek: ArduinoDSP

Projekbeskrywing (koppelvlak)

Knoppe Knop 1: Monstertempo

Knop 2: Bit Crusher

Knop 3: Bit Shifter

Stap 5: Kode

Kode
Kode

#sluit "dsp.h" in

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

boolean div32; booleaanse div16;

vlugtige booleaanse f_monster; vlugtige byte badc0; vlugtige byte badc1; vlugtige 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; byte bb;

greep dd [512]; // Audiogeheue-reeks 8-bis

ongeldige opstelling () {setupIO ();

// herlaai golf na 1 sekonde fill_sinewave ();

// stel adc prescaler op 64 vir 19kHz bemonsteringsfrekwensie cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bis ADC in ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM -modus ingestel op vinnige PWM -cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Opstel vir Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler na: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM -poort Aktiveer sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

leemte -lus () {

// kyk na die status van die effekpotensiometer en draaiskakelaar readKnobs ();

// ************* // ***Normaal*** // *************

as (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (links); uitset (links, invoer); }

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

as (fx4> 100) {

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

terwyl (! f_sample) {// wag vir monsterwaarde van ADC} // siklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_monster = vals; bb = badc1; dd [icnt1] = bb; // skryf na buffer fx4 = iw * badc0 / 255; // skaal vertraagde monster met potensiometer iw1 = dd [icnt2]; // lees die vertragingsbuffer badc0 = badc0 / 20; // grenswaarde tot 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limietindeks 0.. icnt1 = icnt1 & 511; // limietindeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Voorbeeldwaarde tot PWM -uitset

PORTD = PORTD ^ 128; uitset (links, PORTD); // Uitgawe}

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

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

terwyl (! f_sample) {// wag vir monsterwaarde van ADC} // siklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_monster = vals; bb = dd [icnt]; // lees die vertragingsbuffer iw = 127 - bb; // aftrek offset fx3 = iw * badc0 / 255; // skaal vertraagde monster met potensiometer iw1 = 127 - badc1; // aftrek van nuwe monster iw1 = iw1 + iw; // voeg vertraagde monster en nuwe monster by as (iw1 127) iw1 = 127; // Audio limiter bb = 127 + iw1; // voeg offset dd [icnt] = bb; // stoor monster in klankbuffer icnt ++; icnt = icnt & 511; // limiet bufferindeks 0..511 OCR2A = bb; // Voorbeeldwaarde tot PWM -uitset

PORTD = PORTD ^ 128; uitset (links, PORTD); // Uitset

} }

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

}

void fill_sinewave () {float pi = 3.141592; float dx; dryf fd; float fcnt; dx = 2 * pi / 512; // vul die 512 byte bufferarry vir (iw = 0; iw <= 511; iw ++) {// met 50 periodes sinewawe fd = 127 * sin (fcnt); // fundamentele toon fcnt = fcnt + dx; // in die reeks van 0 tot 2xpi en 1/512 inkremente bb = 127 + fd; // voeg dc offset by sinwawe dd [iw] = bb; // skryf waarde in skikking

} }

// ************************************************ ****************** // Timer2 -onderbrekingsdiens by 62,5 KHz // hier word die klank- en potsein getoets in 'n snelheid van: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // verdeel timer2 frekwensie / 2 tot 31,25 kHz as (div32) {div16 =! div16; as (div16) {// monster kanaal 0 en 1 om die beurt, sodat elke kanaal bemonster word met 15,6 kHz badc0 = ADCH; // kry ADC -kanaal 0 sbi (ADMUX, MUX0); // stel multiplexer op kanaal 1} else {badc1 = ADCH; // kry ADC kanaal 1 cbi (ADMUX, MUX0); // stel multiplexer op kanaal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kort vertraging voor die begin van die omskakeling sbi (ADCSRA, ADSC); // begin volgende omskakeling}

}

Stap 6: Video

Moontlike probleme ● Die bakkie is 'n bietjie te swak om 'n stroombaan aan te skakel - benodig 'n op -amp. - In die video gebruik ons 'n seinversterker. (Die grys boks wat op die tafel lê.)

Aanbeveel: