Vladimir DIACONESCU - Procesor de efecte audio

Autorul poate fi contactat la adresa:

Introducere

Pe scurt:

  • Proiectul reprezintă o înglobare a mai multor efecte audio create software;
  • Scopul proiectului este acela de a experimenta cu diferite tipuri de efecte în domeniul audio;
  • Sunt pasionat de DSP hardware/software dedicat pentru audio, drept urmare am ales să încerc și eu să implementez ceva minimal.

Descriere generală

Proiectul constă într-un procesor de efecte audio însoțit de o interfață grafică. O schemă bloc ar fi următoarea:

Un stream audio (preamplificat) este preluat printr-un cablu Jack 1/8” și adus în PA0 pentru a se face conversia Analog-Digital. Mai departe, sample-urile obținute sunt puse într-un buffer circular pentru a se putea realiza efectul de delay (sau ecou/întârziere). Sample-ul rezultant (originalul + delay) este reprodus folosind Fast PWM in conjuncție cu un filtru RC LowPass, fiind preluat mai departe de un cablu Jack Female 1/8”.

Modulul de Elemente de control constă într-un număr de 4 butoane folosite pentru a controla afișajul grafic LCD. Cele 4 butoane au următoarele funcționalități: - primul este folosit pentru a selecta categoria de efect (Delay, uDelay, Chorus); - al doilea este folosit pentru a selecta parametrul din cadrul categoriei/paginii curente; - următorii doi sunt folosiți pentru a incrementa/decrementa parametrul curent selectat.

Hardware Design

Pe partea de design hardware, am folosit plăcuța de PM, un LCD de 20×2, un microfon cu ieșire Jack 1/8” precum și preamplificare și un circuit RC.

Toate componentele au fost achiziționate de la Conex Electronic și Syscom.

Circuitul RC l-am folosit pentru a tăia din frecvențele înalte generate prin Pulse Width Modulation și pentru a obține aproximări mai bune pentru unde sinusoidale.

Am folosit următoarele componente:

LCD BC2002A
Cablu Jack-tata↔Jack-tata 1/8” (3.5mm)
Rezistenta 1K
Capacitate 1uF
Capacitate 10nF
4xPush-Buttons
Bareta de pini circuit integrat
Panglica de 10 fire (2m)
Potentiometru 10K

O schemă de bază:

Software Design

Pentru dezvoltarea software-ului am folosit WinAVR împreună cu Programmer's Notepad.

Codul l-am scris de la 0 dat fiind că am folosit 8 pini de date pentru comunicarea cu LCD-ul iar scheletul de laborator era conceput pentru o comunicare pe 4 biți.

Pentru partea de ADC am mai citit pe forumurile AVRfreaks. Pentru codul de FastPWM m-am uitat pe laboratorul 2.

Implementarea este una foarte simplistă, utilizând un număr redus de funcții.

Rezultate Obţinute

Delay-urile elementare sunt implementate și funcționează (chiar dacă ADC-ul nu obține sample-uri suficient de lungi din input).

Sistemul de meniuri este implementat și funcțional, dar nu se poate testa decât din cod deoarece butoanele sunt nefuncționale.

Sistemul de editare al parametrilor este de asemenea implementat.

Proiectul este foarte extensibil. Se pot crea foarte ușor efecte noi pentru acesta. Există inclusiv posibilitatea extinderii la stereo prin folosirea a două canale ADC, două porturi cu Fast PWM și două filtre RC.

Probleme întâmpinate:

  • conversia nu pare să se realizeze întocmai conform așteptărilor; durata fiecărui sample este foarte mică, drept urmare ecourile sunt mai degrabă cele ale unor păcănituri (impulsul inițial);
  • butoanele nu reușesc să tragă pinii la masă din motive care îmi scapă. Referitor la acest subiect, am întâlnit un bug foarte bizar: dacă încerc să folosesc PORTD pentru butoane, calculatorul nu-mi mai recunoaște placa prin USB.

Concluzii

A fost un experiment interesant, din păcate nu atât de reușit pe cât am sperat. Rezultatul se datorează faptului că am plecat la drum cu dorința de a face cât mai multe (varietate de efecte, implementare stereo, meniuri via LCD, sampling în timp real șamd).

Download

Puteți să downloadați arhiva cu codul C și Makefile.

Jurnal

Bibliografie/Resurse

pm/prj2013/avoinescu/procesor-de-efecte-audio.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