This is an old revision of the document!
* 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:
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: