Sisukord:

NeckCrusher (kitarrile paigaldatud efektipedaal): 6 sammu (piltidega)
NeckCrusher (kitarrile paigaldatud efektipedaal): 6 sammu (piltidega)

Video: NeckCrusher (kitarrile paigaldatud efektipedaal): 6 sammu (piltidega)

Video: NeckCrusher (kitarrile paigaldatud efektipedaal): 6 sammu (piltidega)
Video: ПЛОВ. Как приготовить Вкусный и Рассыпчатый плов! Простой рецепт. В гостях у Липована 2024, Detsember
Anonim
NeckCrusher (kitarrile paigaldatud efektipedaal)
NeckCrusher (kitarrile paigaldatud efektipedaal)

Dale Rosen, Carlos Reyes ja Rob Koch

DATT 2000

Samm: probleem

Probleem
Probleem

Kitarripedaalid piiravad muusikut pedaaliplatvormiga. Lahendus. Ehitage ja kinnitage kitarripedaalide funktsioonid kitarrisse. See võimaldab muusikul vabalt üle lava liikuda, kasutades kitarrikaela liidesena, selle asemel et piirduda pedaalilaua asukohaga. Uurime seda kontseptsiooni, luues bitipurustaja/diskreetimissageduse seadme.

2. samm: projekti kontekst

Projekti kontekst
Projekti kontekst

On palju kitarripedaale, mida muusikud kasutavad oma kitarride heli manipuleerimiseks. Enamik neist on tavaliselt riiulipõhistes või stomp-kastides, piirates seega efektide juhtimist efektide üksuse asukohaga. Seadme paigaldamine kitarrile võimaldab mängijatel kontrollida efekti parameetreid kõikjal laval. See tähendab, et neid ei piirata ja neil on vabadus oma esinemise nimel ringi liikuda.

Kuna Arduino on võimeline edastama ainult 8 -bitist heli, on võimatu teha täpset signaalitöötlust. Seetõttu valisime meie tehtud efektid, kuna need põhinevad madala täpsusega moonutatud heli loomisel. Need on ainsad efektid, mis on Arduinoga mõistlikult võimalikud.

3. samm: vajalikud osad / tööriistad

Vajalikud osad / tööriistad
Vajalikud osad / tööriistad

● Lööktrell

● Traadilõikurid

● Traadi eemaldajad

● jootekolb

● Kuumliimipüstol

● jootmispump

● Kitarr ● Korpus

● jootma

● Kuum liim

● Arduino

● Proto Board

● Kaetud traat

● Helipistikud (x2)

● potentsiomeetrid (x3)

● Kondensaatorid: 2,2 uF (x2)

● Avatud vasktraat

● Kruvid (M3.5 *8)

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

● * Op võimendi (LM358) / * Transistor (2N3442)

4. samm: tehniline strateegia

Tehniline strateegia
Tehniline strateegia

Sisemine vooluring

Sisend väljund

Peame teisendama kitarrist tuleva helisignaali millekski, mida arduino saab kasutada ja muuta. Seejärel peame arduinost tuleva signaali helisignaaliks teisendama. Arduino loeb pingeid vahemikus 0V kuni 5V, helisignaalid on vahemikus -1V kuni 1V. Need teisendused tehakse takistite abil. Signaal teisendatakse ka väljundahelas.

Arduino raamatukogu: ArduinoDSP

Projekti kirjeldus (liides)

Nupud Nupp 1: Proovikiirus

Nupp 2: bitipurustaja

Nupp 3: bittide nihutaja

Samm: kood

Kood
Kood

#include "dsp.h"

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

boolean div32; boolean div16;

lenduv boolean f_sample; lenduv bait badc0; lenduv bait badc1; lenduv bait 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; bait bb;

bait dd [512]; // Helimälu massiiv 8-bitine

void setup () {setupIO ();

// uuesti laine 1 sekundi pärast fill_sinewave ();

// määrake 19kHz diskreetimissageduse cbi jaoks ADC prescaler 64 -le (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bitine ADC ADCH registris sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Taimer2 PWM -režiim on seatud kiireks PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Seadistus Timer2 cbi jaoks (TCCR2B, WGM22); // Timer2 Clock Prescaler to: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Taimer2 PWM -port Luba sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// efekti potentsiomeetri ja pöördlüliti oleku kontrollimine readKnobs ();

// ************* // *** Tavaline *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {baidi sisend = analoogLugemine (vasakul); väljund (vasakul, sisend); }

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

kui (fx4> 100) {

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

while (! f_sample) {// oodake ADC prooviväärtust} // tsükkel 15625 KHz = 64uSec PORTD = PORTD | 128; f_näide = vale; bb = badc1; dd [icnt1] = bb; // kirjuta puhvrisse fx4 = iw * badc0 / 255; // skaleerige viivitatud proov potentsiomeetriga iw1 = dd [icnt2]; // loe viivituspuhvrit badc0 = badc0 / 20; // piirväärtus kuni 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limiidi indeks 0.. icnt1 = icnt1 & 511; // piirindeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // PWM -väljundi näidisväärtus

PORTD = PORTD ^ 128; väljund (vasakul, PORTD); // Väljund}

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

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

while (! f_sample) {// oodake ADC prooviväärtust} // tsükkel 15625 KHz = 64uSec

PORTD = PORTD | 128; f_näide = vale; bb = dd [icnt]; // viivituspuhvri lugemine iw = 127 - bb; // lahutada nihe fx3 = iw * badc0 / 255; // skaleeritud viivitatud proov potentsiomeetriga iw1 = 127 - badc1; // lahutada nihkega uuest proovist iw1 = iw1 + iw; // lisage viivitatud proov ja uus proov, kui (iw1 127) iw1 = 127; // Helipiiraja bb = 127 + iw1; // lisa nihke dd [icnt] = bb; // salvestada näidis helipuhvrisse icnt ++; icnt = icnt & 511; // limiteeri puhverindeks 0..511 OCR2A = bb; // PWM -väljundi näidisväärtus

PORTD = PORTD ^ 128; väljund (vasakul, PORTD); // Väljund

} }

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

}

void fill_sinewave () {float pi = 3.141592; ujuk dx; float fd; float fcnt; dx = 2 * pi / 512; // täitke 512 -baidine puhverplaat (iw = 0; iw <= 511; iw ++) {// 50 punktiga sinewawe fd = 127 * sin (fcnt); // põhitoon fcnt = fcnt + dx; // vahemikus 0 kuni 2xpi ja 1/512 sammuga bb = 127 + fd; // lisage sinewawe -le dc -nihke dd [iw] = bb; // väärtuse kirjutamine massiivi

} }

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

PORTB = PORTB | 1;

div32 =! div32; // jaga taimer2 sagedust / 2 kuni 31,25 kHz, kui (div32) {div16 =! div16; if (div16) {// proovikanal 0 ja 1 vaheldumisi, nii et igast kanalist võetakse 15,6 kHz badc0 = ADCH; // hangi ADC kanal 0 sbi (ADMUX, MUX0); // seadista multiplekser kanalile 1} else {badc1 = ADCH; // hangi ADC kanal 1 cbi (ADMUX, MUX0); // määra multiplekser kanalile 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // lühike viivitus enne teisendamise alustamist sbi (ADCSRA, ADSC); // alusta järgmist konversiooni}

}

6. samm: video

Võimalikud probleemid ● Pickup on toiteahela jaoks pisut liiga nõrk - vajate võimendit. - Videos kasutasime signaali võimendit. (Hall karp laual.)

Soovitan: