Sisällysluettelo:

Kaulamurskain (kitaralle asennettu tehopedaali): 6 vaihetta (kuvilla)
Kaulamurskain (kitaralle asennettu tehopedaali): 6 vaihetta (kuvilla)

Video: Kaulamurskain (kitaralle asennettu tehopedaali): 6 vaihetta (kuvilla)

Video: Kaulamurskain (kitaralle asennettu tehopedaali): 6 vaihetta (kuvilla)
Video: Squid game #shorts 2024, Marraskuu
Anonim
Kaulamurskain (kitaralle asennettu tehopedaali)
Kaulamurskain (kitaralle asennettu tehopedaali)

Dale Rosen, Carlos Reyes ja Rob Koch

DATT 2000

Vaihe 1: Ongelma

Ongelma
Ongelma

Kitarapedaalit rajoittavat muusikon pedaalialustalle. Ratkaisu: Rakenna ja upota kitarapedaalitoiminnot itse kitaraan. Tämä antaa muusikolle mahdollisuuden liikkua vapaasti lavan yli käyttäen kitaran kaulaa rajapintana sen sijaan, että se rajoittuisi pedaalilaudan sijaintiin. Tutkimme tätä konseptia luomalla bittimurskain/näytteenottotaajuuslaite.

Vaihe 2: Projektin konteksti

Projektin konteksti
Projektin konteksti

On olemassa monia kitarapedaaleja, joita muusikot käyttävät manipuloidakseen kitaransa ääntä. Useimmat näistä ovat yleensä telinepohjaisissa tai stomp-laatikoissa, mikä rajoittaa tehosteiden hallinnan tehosteyksikön sijaintiin. Laitteen asentaminen kitaraan antaa soittajille mahdollisuuden hallita tehosteen parametreja missä tahansa vaiheessa. Tämä tarkoittaa, että heitä ei rajoiteta, ja he voivat vapaasti liikkua esityksensä vuoksi.

Koska Arduino pystyy tuottamaan vain 8 -bittistä ääntä, on mahdotonta suorittaa tarkkaa signaalinkäsittelyä. Siksi valitsimme tehosteet, koska ne perustuvat matalan tarkkuuden, vääristyneen äänen luomiseen. Nämä ovat ainoat vaikutukset, jotka ovat kohtuullisesti mahdollisia Arduinolla.

Vaihe 3: Tarvittavat osat / työkalut

Tarvittavat osat / työkalut
Tarvittavat osat / työkalut

● Iskuporakone

● Lankaleikkurit

● Langanpoistimet

● Juotin

● Kuuma liimapistooli

● Juotospoistopumppu

● Kitara ● Kotelo

● Juotos

● Kuuma liima

● Arduino

● Proto Board

● Päällystetty lanka

● Ääniliittimet (x2)

● Potentiometrit (x3)

● Kondensaattorit: 2,2 uF (x2)

● Paljastettu kuparilanka

● Ruuvit (M3.5 *8)

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

● * Op -vahvistin (LM358) / * Transistori (2N3442)

Vaihe 4: Tekninen strategia

Tekninen strategia
Tekninen strategia

Sisäinen piiri

Tulo/lähtö

Meidän on muutettava kitarasta tuleva äänisignaali sellaiseksi, jota arduino voi käyttää ja muokata. Meidän on sitten muutettava arduinosta tuleva signaali takaisin audiosignaaliksi. Arduino lukee jännitteet 0V -5V, äänisignaalit ovat -1V -1V. Nämä muunnokset tehdään vastuksilla. Signaali muunnetaan myös lähtöpiirissä.

Arduino -kirjasto: ArduinoDSP

Projektin kuvaus (käyttöliittymä)

Nupit Nuppi 1: Näytteenottotaajuus

Nuppi 2: Bittimurskain

Nuppi 3: Bittivaihtaja

Vaihe 5: Koodi

Koodi
Koodi

#include "dsp.h"

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

boolen div32; boolen div16;

haihtuva boolen f_esample; haihtuva tavu badc0; haihtuva tavu badc1; haihtuva tavu 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; tavu bb;

tavu dd [512]; // Äänimuistijärjestelmä 8-bittinen

void setup () {setupIO ();

// lataa aalto uudelleen 1 sekunnin kuluttua fill_sinewave ();

// aseta adc -esiskaalauslaite 64: ksi 19 kHz: n näytteenottotaajuudelle cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bittinen ADC ADCH-rekisterissä sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Ajastin2 PWM -tilaksi asetettu nopea PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Timer2 cbi: n asetukset (TCCR2B, WGM22); // Timer2 Clock Prescaler to: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Ajastin2 PWM -portti Ota sbi käyttöön (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// tarkista tehopotentiometrin ja kiertokytkimen tila ReadKnobs ();

// ************* // *** Normaali *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {tavutulo = analoginen luku (vasen); lähtö (vasen, tulo); }

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

jos (fx4> 100) {

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

while (! f_sample) {// odota ADC: n näytteen arvoa} // Sykli 15625 KHz = 64uSec PORTD = PORTD | 128; f_näyte = epätosi; bb = badc1; dd [icnt1] = bb; // kirjoittaa puskuriin fx4 = iw * badc0 / 255; // mittakaavan viivästetty näyte potentiometrillä iw1 = dd [icnt2]; // lue viivepuskuri badc0 = badc0 / 20; // raja -arvo 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // rajaindeksi 0.. icnt1 = icnt1 & 511; // rajaindeksi 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Esimerkkiarvo PWM -lähtöön

PORTD = PORTD ^ 128; lähtö (vasen, PORTD); // Tulos}

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

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

while (! f_sample) {// odota ADC: n näytteen arvoa} // Sykli 15625 KHz = 64uSec

PORTD = PORTD | 128; f_näyte = epätosi; bb = dd [icnt]; // lue viivepuskuri iw = 127 - bb; // vähennä offset fx3 = iw * badc0 / 255; // mittakaavan viivästetty näyte potentiometrillä iw1 = 127 - badc1; // vähennä siirtymä uuden näytteen iw1 = iw1 + iw; // lisää viivästetty näyte ja uusi näyte, jos (iw1 127) iw1 = 127; // Äänenrajoitin bb = 127 + iw1; // lisää offset dd [icnt] = bb; // tallenna näyte äänipuskuriin icnt ++; icnt = icnt & 511; // rajapuskurin indeksi 0..511 OCR2A = bb; // Esimerkkiarvo PWM -lähtöön

PORTD = PORTD ^ 128; lähtö (vasen, PORTD); // Lähtö

} }

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

}

void fill_sinewave () {float pi = 3.141592; kellua dx; float fd; kellua fcnt; dx = 2 * pi / 512; // täytä 512 tavun puskurivaraus (iw = 0; iw <= 511; iw ++) {// 50 pisteellä sinewawe fd = 127 * sin (fcnt); // perusääni fcnt = fcnt + dx; // alueella 0 - 2xpi ja 1/512 askelin bb = 127 + fd; // lisää dc -offset sinewaween dd [iw] = bb; // kirjoittaa arvon matriisiin

} }

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

PORTB = PORTB | 1;

div32 =! div32; // jaa ajastimen2 taajuus / 2 - 31,25 kHz, jos (div32) {div16 =! div16; if (div16) {// näytekanava 0 ja 1 vuorotellen, joten jokaisesta kanavasta näytteistetään 15,6 kHz badc0 = ADCH; // hanki ADC -kanava 0 sbi (ADMUX, MUX0); // aseta multiplekseri kanavalle 1} else {badc1 = ADCH; // hanki ADC -kanava 1 cbi (ADMUX, MUX0); // aseta multiplekseri kanavalle 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // lyhyt viive ennen muunnoksen aloittamista sbi (ADCSRA, ADSC); // aloita seuraava tulos}

}

Vaihe 6: Video

Mahdolliset ongelmat ● Nouto on hieman liian heikko virtapiiriin - tarvitset lisävahvistimen. - Videossa käytimme signaalinvahvistinta. (Harmaa laatikko makaa pöydällä.)

Suositeltava: