* Autor: Jumărea Ștefan Dorin - 331CC
Proiectul își propune realizarea unei pedale programabile pentru chitară. Pedala va modifica sunetul produs de chitară, va fi amplasată între chitară și amplificator, și va putea fi programată pentru a simula mai multe efecte. Vor exista butoane și switch-uri prin care se vor putea modifica efectele fără a se reprograma plăcuța.
La intrare, semnalul va trece printr-un set de filtre pentru a elimina parte din zgomot. Intrarea va fi amplificată, de la 2.8V (ieșirea pe cablu Jack) la 5V. Semnalul va intra apoi într-o intrare analogică, unde va fi modificat după cerințe. Semnalul de ieșire se va genera folosind PWM. Se vor afișa pe un LCD informații despre modul curent al pedalei.
Pentru pornirea/oprirea pedalei se va folosi un footswitch. Când pedala este oprită, se va face doar bypass la semnalul de intrare spre ieșire. Vor exista butoane și switch-uri ca intrări în Arduino.
Schema electrică:
Surse de inspirație schemă electrică:
Piesele folosite vor fi:
Se vor implementa mai multe efecte, printre care:
Totul se va implementa în întreruperea dată de ADC. În setup()
se vor face configurările pentru IO, ADC și PWM. În funcția loop()
doar se va aprinde ledul și se va seta efectul dorit în funcție de numărul de toogle-uri are switchului.
Pentru a realiza un efect de Volume Booster, se va prelua semnalul de la ADC și se va aduna la el o valoare pentru a modifica volumul:
input += booster_var;
, unde booster_var
este o variablilă ce se va modifica
folosind butoanele. Dacă booster_var
este un întreg pozitiv, volumul va fi mărit, altfel va fi scăzut.
Pentru a se realiza un efect de Distortion, se vor selecta toate armonicele cu un volum mai mic ca o variabilă dată, și se vor ridica toate la un prag:
Mai multe detalii aici: https://en.wikipedia.org/wiki/Distortion#Harmonic_distortion
if (!digitalRead(PUSHBUTTON_2)) { if (distortion_threshold < 32768) distortion_threshold = distortion_threshold + 25; } if (!digitalRead(PUSHBUTTON_1)) { if (distortion_threshold > 0) distortion_threshold = distortion_threshold - 25; } if (input > distortion_threshold) input = distortion_threshold;
Pentru a se realiza un efect de Pitch Shifter, se va modifica frecvența cu care este citit și transmis semnalul. Astfel se poate modifica pitch-ul semnalului, prin întârzierea transmiterii semnalului.
if (!digitalRead(PUSHBUTTON_2)) { if (pitch_var < 500) pitch_var = pitch_var + 25; } if (!digitalRead(PUSHBUTTON_1)) { if (pitch_var > 0) pitch_var = pitch_var - 25; } counter2++; if (counter2 >= dist_variable) { counter2 = 0; // read input ... // write output ... }
Pentru a se realiza un efect de Chorus, se va combina semnalul primit cu o copie a sa, puțin întârziată. Efectul poate fi mai intens sau mai puțin intens în funcție de dimensiunea bufferului în care se reține copia semnalului.
if (!digitalRead(PUSHBUTTON_2)) { if (chorus_counter < MAX_VALUE) chorus_counter = chorus_counter + 1; } if (!digitalRead(PUSHBUTTON_1)) { if (chorus_counter > MIN_VALUE) chorus_counter = chorus_counter - 1; } ch_delay_cnt ++; // Populate the buffer if (ch_delay_cnt >= delay_depth) { ch_delay_cnt = 0; if (count_up) { for (p = 0; p < buff_len + 1; p++) chorusBuffer[delay_depth + p] = chorusBuffer[delay_depth - 1]; delay_depth = delay_depth + buff_len; if (delay_depth > MAX_DELAY) count_up = 0 } else { delay_depth = delay_depth - buff_len; if (delay_depth < MIN_DELAY) count_up = 1 } } // send chorusBuffer[ch_delay_cnt] to output
Cod adaptat de la: https://github.com/ElectroSmash/pedalshield/blob/master/chorus_vibrato/chorus_vibrato.ino.
Resurse pentru hardware:
Resurse pentru software: