Kazalo:
- 1. korak: Težava
- 2. korak: Kontekst projekta
- 3. korak: Potrebni deli / orodja
- 4. korak: Tehnična strategija
- 5. korak: Koda
- 6. korak: Video
Video: NeckCrusher (pedal z učinkom na kitaro): 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Dale Rosen, Carlos Reyes in Rob Koch
DATT 2000
1. korak: Težava
Pedala za kitaro omejujejo glasbenika na platformo za pedale. Rešitev: Vgradite in vgradite funkcionalnost pedal za kitaro v kitaro samo. To omogoča glasbeniku, da se prosto giblje po odru in uporablja vrat kitare kot vmesnik, namesto da bi bil omejen na lokacijo pedalboard -a. Ta koncept bomo raziskovali z ustvarjanjem naprave za bitcrusher/učinek vzorčne frekvence.
2. korak: Kontekst projekta
Glasbeniki uporabljajo veliko pedal za kitaro za manipulacijo z zvokom svojih kitar. Večina teh je običajno v regalih ali stomp box enotah, zato je nadzor učinkov omejen na lokacijo enote za učinke. Namestitev naprave na kitaro igralcem omogoča nadzor parametrov učinka kjer koli na odru. To pomeni, da ne bodo omejeni in se bodo lahko svobodno gibali za svoje delovanje.
Ker Arduino zmore samo 8 -bitni zvok, ni mogoče obdelati signala visoke zvestobe. Zato smo izbrali učinke, ki smo jih naredili, saj temeljijo na ustvarjanju popačenega zvoka z nizko zvestobo. To so edini učinki, ki so razumno možni pri Arduinu.
3. korak: Potrebni deli / orodja
● udarni vrtalnik
● Rezalniki žice
● Odstranjevalci žice
● spajkalnik
● Pištola za vroče lepilo
● Črpalka za spajkanje
● kitara ● ohišje
● Spajkanje
● Vroče lepilo
● Arduino
● Proto Board
● prevlečena žica
● avdio priključki (x2)
● Potenciometri (x3)
● Kondenzatorji: 2,2 uF (x2)
● izpostavljena bakrena žica
● Vijaki (M3,5 *8)
● Upori: 1 k, 10 k, 1,2 k, 1,5 k, 390 k
● * Op ojačevalec (LM358) / * Tranzistor (2N3442)
4. korak: Tehnična strategija
Notranje vezje
Vhod/izhod
Zvočni signal, ki prihaja iz kitare, moramo pretvoriti v nekaj, kar lahko arduino uporablja in spreminja. Nato bomo morali signal, ki prihaja iz arduina, pretvoriti v zvočni signal. Arduino bere napetosti od 0V do 5V, zvočni signali so od -1V do 1V. Te pretvorbe se izvajajo z upori. Signal se pretvori tudi v izhodnem vezju.
Knjižnica Arduino: ArduinoDSP
Opis projekta (vmesnik)
Gumbi Gumb 1: Sample Rate
Ročaj 2: Bit Crusher
Ročaj 3: Bit Shifter
5. korak: Koda
#include "dsp.h"
#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))
logični div32; logični div16;
hlapni logični f_sample; nestanovitni bajt badc0; hlapna bajta badc1; hlapna bajta 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-bitni niz pomnilnika zvoka
void setup () {setupIO ();
// ponovno naloži val po 1 sekundi fill_sinewave ();
// nastavimo predkaler adc na 64 za frekvenco vzorčenja 19 kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bitni ADC v registru ADCH sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM Mode nastavljen na hitro PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Nastavitev za Timer2 cbi (TCCR2B, WGM22); // Prednastavitev ure Timer2 za: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Vmesnik PWM Timer2 Omogoči sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;
}
void loop () {
// preverimo stanje potenciometra učinka in vrtljivega stikala readKnobs ();
// ************* // *** Normal *** // *************
if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {bajtni vnos = analogRead (levo); izhod (levo, vhod); }
// ************* // *** Phasor *** // *************
če (fx4> 100) {
fx1 = 0; fx2 = 0; fx3 = 0;
while (! f_sample) {// počakajte na vrednost vzorca iz ADC} // Cikel 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // zapis v vmesnik fx4 = iw * badc0 / 255; // merjenje zakasnjenega vzorca s potenciometrom iw1 = dd [icnt2]; // preberemo zakasnitveni vmesnik badc0 = badc0 / 20; // mejna vrednost na 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // mejni indeks 0.. icnt1 = icnt1 & 511; // mejni indeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Vzorčna vrednost za izhod PWM
PORTD = PORTD ^ 128; izhod (levo, PORTD); // izhod}
// ************* // *** Flanger *** // ************* if (fx3> 100) {
fx1 = 0; fx2 = 0; fx4 = 0;
while (! f_sample) {// počakajte na vrednost vzorca iz ADC} // Cikel 15625 KHz = 64uSec
PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // preberemo zakasnitveni vmesnik iw = 127 - bb; // odmik odmika fx3 = iw * badc0 / 255; // merjenje zakasnjenega vzorca s potenciometrom iw1 = 127 - badc1; // odsek odmika od novega vzorca iw1 = iw1 + iw; // dodamo zapozneli vzorec in nov vzorec, če (iw1 127) iw1 = 127; // Omejevalnik zvoka bb = 127 + iw1; // dodaj odmik dd [icnt] = bb; // shranimo vzorec v avdio vmesnik icnt ++; icnt = icnt & 511; // mejni vmesni indeks 0..511 OCR2A = bb; // Vzorčna vrednost za izhod PWM
PORTD = PORTD ^ 128; izhod (levo, PORTD); // Izhod
} }
void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);
}
void fill_sinewave () {float pi = 3,141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // zapolnimo 512 bajtno bazo za (iw = 0; iw <= 511; iw ++) {// s 50 točkami sinewawe fd = 127 * sin (fcnt); // osnovni ton fcnt = fcnt + dx; // v območju od 0 do 2xpi in 1/512 korakov bb = 127 + fd; // dodamo enosmerni odmik sinewawe dd [iw] = bb; // zapiše vrednost v matriko
} }
// ********************************************** ****************** // Timer2 Interrupt Service pri 62,5 KHz // tukaj se zvočni in potni signal vzorči s hitrostjo: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {
PORTB = PORTB | 1;
div32 =! div32; // deli časovnik 2 časovnika / 2 na 31,25 kHz if (div32) {div16 =! div16; if (div16) {// vzorec kanala 0 in 1 izmenično, tako da se vsak kanal vzorči s 15,6kHz badc0 = ADCH; // dobimo ADC kanal 0 sbi (ADMUX, MUX0); // nastavi multipleksor na kanal 1} else {badc1 = ADCH; // dobimo ADC kanal 1 cbi (ADMUX, MUX0); // nastavite multiplekser na kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kratka zakasnitev pred začetkom pretvorbe sbi (ADCSRA, ADSC); // začni naslednjo pretvorbo}
}
6. korak: Video
Možne težave ● Pobiralnik je nekoliko prešibak za napajalni tokokrog - potrebujete op ojačevalnik. - V videu smo uporabili ojačevalnik signala. (Siva škatla leži na mizi.)
Priporočena:
Pedal za kitaro Phaser: 14 korakov (s slikami)
Pedal za kitaro Phaser: Phaser kitarski pedal je učinek kitare, ki razdeli signal, pošlje eno pot skozi vezje čisto in premakne fazo drugega. Ta dva signala se nato ponovno združita in ko nista v fazi, se drug drugega prekličeta. To ustvarja tako
Pedal za kitaro DIY: 24 korakov (s slikami)
DIY Guitar Pedal: Izdelava DIY kitarskega fuzz pedala je zabaven in enostaven elektronski vikend projekt za ljubitelje in kitariste. Izdelava klasičnega fuzz pedala je veliko lažja, kot si mislite. Uporablja le dva tranzistorja in peščico drugih komponent. Poleg sh
Pedal za kitaro Raspberry Pi Zero: 5 korakov (s slikami)
Raspberry Pi Zero Guitar Pedal: Pedal-Pi je lo-fi programabilni kitaralni pedal, ki deluje z Raspberry Pi ZERO Board. Projekt je popolnoma odprtokoden & Odprta strojna oprema za hekerje, programerje in glasbenike, ki želijo eksperimentirati z zvoki in se naučiti kopati
Pedal za kitaro Arduino MEGA: 5 korakov
Arduino MEGA kitara: pedal SHIELD MEGA je programabilni kitaralni pedal, ki deluje s ploščami Arduino MEGA 2560 in MEGA ADK. Projekt je odprtokodni & Odprta strojna oprema, namenjena hekerjem, glasbenikom in programerjem, ki želijo spoznati DSP (digitalni signal p
ATMega1284P Pedal za kitaro in glasbene učinke: 6 korakov (s slikami)
Pedal za kitaro in glasbene učinke ATMega1284P: Prenosil sem Pedal ščit Arduino Uno ATMega328 (kot ga je razvil Electrosmash in deloma temelji na delu v odprtem glasbenem laboratoriju) na ATMega1284P, ki ima osemkrat več RAM -a kot Uno (16 kB proti 2 kB). Dodatna nepričakovana korist je