Procesor de efecte pentru chitară electrică

Introducere

Poate v-aţi întrebat la un moment dat ce face ca un anumit tip de muzică să fie de bun gust sau de prost gust, ce te face să simţi că vibrezi odată cu fiecare acord cântat de muzicianul tău preferat sau ce te face să îţi scoţi imediat căştile din urechi atunci când un prieten îţi arată ce melodie a descoperit pe internet, tu privindu-l cu dezgust în timp ce el savurează auditiv din fiecare rimă aruncată pe un beat de pe SoundCloud. Ei bine, acest lucru este dat de cât de mult se identifică persoana respectivă cu versurile cântecului, acustica acestuia sau mai bine zis cu energia în sine transmisă de către cântecul respectiv. Tocmai pentru a permite unui muzician să îşi exprime mai bine imaginaţia muzicală, cum gandurile sale au anumite nuanţe şi texturi, ele trebuie transmise şi în muzica sa, nu să rămâne veşnic încătuşate în a lui minte. Pentru acest lucru, muzicienii folosesc diverse efecte chit că sunt ele aplicate pe vocea sa sau pe sunetele emise de instrumentul său. Astfel, trăirile sale sunt transmise în manieră pură şi nealterată către ascultătorii săi. Pentru acest proiect, ne vom limita la efectele aplicate asupra sunetului emis de o chitară electrică.

Descriere generală

Acest proiect la PM are ca scop realizarea unui procesor multi-efect pentru o chitară electrică. Modul de funcţionare este unul intuitiv: chitara electrică va funcţiona drept input, ea transmiţând semnalul către ansamblul nostru electronic, semnalul analog primit de la sursă va fi convertit în semnal digital, semnal digital peste care vom aplica transformările necesare aplicării efectelor respective, după care îi facem conversia în sens invers, din semnal digital în semnal analog care printr-o mufă jack va ieşi prin cablul conectat la mufă direct în amplificatorul pe care îl vom folosi pe post de punct de redare a output-ului. Procesorul pe care îl vom construi va pune la dispoziţie o suită de efecte, accesibile dintr-un meniu scrollabil. Utilizatorul poate alege din efectele prezente pe placă, unul sau mai multe, depinde de preferinţele sale. Lista de efecte pe care o punem la dispoziţie este una diversă:

  • Distortion
  • Tremolo
  • Flanger
  • Echo
  • Compression

De asemenea, vom încerca şi implementarea unui sistem de preset-uri care permite utilizatorului să îşi salveze combinaţia sa favorită de efecte pentru utilizări viitoare. Parametrii efectelor pe care le punem la dispoziţie vor putea fi modificaţi pentru a oferi o libertate mai mare utilizatorului cu privire la tonul pe care acesta doreşte să îl imprime sunetului pe care vrea sa îl emită instrumentul său.

Design Hardware

Pe lângă suita standard de componente, pentru a implementa funcţionalităţile dorite, vom utiliza:

  1. Mufe Jack
    1. input
    2. output
  2. LCD Text - afişarea meniului de selecţie a efectelor şi a parametrilor acestora
  3. Convertoare
    1. un ADC (analog→digital pentru intrare) - am folosit pinii ADC de pe AtMega
    2. un DAC (digital→analog pentru ieşire)
  4. Potenţiometre pe care le vom folosi pentru a calibra parametrii efectelor - cum acest lucru nu putea fi realizat, am folosit butoanele de Up si Down pentru a calibra parametrii efectelor
  5. Chitară electrică model Epiphone Les Paul Ultra III - semnal de intrare
  6. Amplificator Dimavery 15W - pentru propagarea semnalului rezultat
  7. Filtre aplicate la intrarea si iesirea circuitului pentru a elimina din frecventele nedorite si a aduce o claritate mai mare sunetului emis si transmis

NOTĂ Lista prezentată mai sus poate suferi modificări în timpul dezvoltării proiectului. Vom vedea dacă implementarea gândită la acest moment este de ajuns pentru a furniza un produs cu un nivel de calitate de la acceptabil în sus sau dacă va fi necesară adăugarea unor module de filtrare a semnalului, amplificare adiţională, adaptarea impedanţei de intrare etc.

Schema Bloc

Schema Electrică

Design Software

La nivel software, programul care ruleaza pe microcontroller este impartit in mai multe sectiuni pentru a putea realiza diversele functionalitati puse la dispozitie:

Captarea si procesarea semnalului de intrare

Pentru a prelua semnalul de intrare si a il converti in digital pentru a putea fi procesat de catre microcontroller, utilizam intreruperile ADC de pe pinii corespunzatori. ADC-ul de pe aceasta varianta de AtMega va fi folosit in mod diferential, setat pe Auto-Trigger si Free-Running Mode, astfel avand o conversie imediat dupa ce s-a terminat cea anterioara. Rezultatele obtinute in urma conversiei sunt situate in intervalul [-512, 511], dar numerele negative sunt salvate in complement fata de 2.

// preluam info de la ADC
    adc_sig = ADC;

    // realizam conversia in complement fata de 2
    if (adc_sig & _BV(9)) {
        //negative number
        adc_sig = adc_sig | ~(_BV(10) - 1);
    }

Preluarea informatiei digitale si conversia ei in analogic pentru a fi emisa la iesire

Dupa ce aplicam efectele selectate asupra semnalului captat de la intrare, trebuie sa il transmitem catre modulul nostru DAC MCP4725 care il va converti inapoi in semnal analogic, propagandu-l la iesire. Efectele sunt aplicate de functia process_signal care verifica ce efecte sunt active pe pedala noastra la un moment dat.

// semnalul a trebui normalizat pentru a il trece inapoi in analogic
    dac_output = (int16_t)(process_signal(((float)adc_sig) / 512) * 512);
    
    dac_output = dac_output + 512;
    DAC_output(output_dac);

Interactiunea cu utilizatorul

Prin interactiunea cu utilizatorul intelegem realizarea meniului interactiv care permite selectarea efectului dorit, activarea sau dezactivarea acestuia si calibrarea parametrilor ce definesc efectul respectiv.

Meniul pus la dispozitie pe aceasta placa poate fi considerat un automat finit cu stari, el parcurgand fiecare stare in functie de ce buton am selectat la un moment dat. Butoanele puse la dispozitie sunt in numar de 4 care realizeaza niste operatii simple: selectare, deselectare, scroll up si scroll down. Initial, utilizatorul pedalei este intampinat de un mesaj, dupa care prin apasarea butonului de selectie (OK), va fi indreptat catre meniu, meniu definit de o enumerare a efectelor puse la dispozitie. Dupa, prin selectarea unui anumit efect, utilizatorul este indreptat catre un sub-meniu care prezinta optiunile pe care le avem pentru efectul respective, anume status-ul efectului - daca este pornit sau opritsi parametrii acestuia care pot fi calibrati prin selectia optiunii si folosirea butoanelor de Up si Down.

Exista cate un astfel de sub-meniu pentru fiecare efect in parte. Din lucrurile enumerate mai sus, se poate deduce o functie foarte interesanta a placutei, anume aceea ce permite aplicarea mai multor efecte simultan.

Butoanele realizeaza operatiile pentru care sunt destinate prin intreruperi PCINT.

Intregul meniu este afisat pe un display 16×2 pentru care am folosit sursele puse la dispozitie in laborator.

Urmatorul exemplu arata cum realizam afisarea pentru mesajul de intampinare al pedalei:

LCD_writeInstr(LCD_INSTR_clearDisplay);
LCD_printAt(0, "   >PUSH OK<   ");
LCD_printAt(LCD_INSTR_nextLine, ">TO ENTER MENU<");

Aplicarea efectelor

Pentru aplicarea efectelor de chitara avem cate o functie care altereaza semnalul astfel incat sa obtinem efectul dorit. Ca exemplu vom folosi functia care aplica efectul de distortion asupra semanlului:

float apply_distortion(float x)
{
    return (1-distortion_depth) * x + distortion_depth * tanh(distortion_gain * x);
}

Rezultate obtinute

Rezultatele obtinute in urma realizarii acestui proiect sunt mai mult decat satisfacatoare, dar in acelasi timp surprinzatoare avand in vedere lipsa experientei in dezvoltarea circuitelor integrate. Sunetul inca ar mai avea nevoie de putina finisare, el nefiind echivalentul unuia emis de o pedala de fabrica, lucru dat conditiile de lucru, lipsa experientei si posibile contacte imperfecte sau calcule imprecise la proiectarea filtrelor si a functiilor de prelucrare a semnalului. Insa, ca prim proiect in aceasta sfera, un proiect din care am invatat foarte multe, rezultatul este unul de apreciat.

final_proj_koz.jpeg final_proj_koz_2.jpeg display_koz.jpeg

Bibliografie

pm/prj2019/ostiru/kozguitarfx.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0