This is an old revision of the document!
Schema bloc:
| Pin Name | Signal / Function | ATmega328P Pin |
|---|---|---|
| OUT | Analog audio output | PC0 (ADC0) |
| VCC | Power supply | 5V |
| GND | Ground | GND |
| Pin Name | Signal / Function | ATmega328P Pin |
|---|---|---|
| VCC | Power supply | 5V |
| GND | Ground | GND |
| MISO | SPI Master In Slave Out | PB4 |
| MOSI | SPI Master Out Slave In | PB3 |
| SCK | SPI Clock | PB5 |
| CS | SPI Chip Select | PB2 |
| Nume Pin | Semnal / Functie | Pin ATmega328P |
|---|---|---|
| IN | Input audio | PD6 |
| VCC | Supply putere | 5V |
| GND | Masa | GND |
| Buton | Semnal / Functie | Pin ATmega328P |
|---|---|---|
| Buton 1 | Buton Next | PB1 |
| Buton 2 | Buton Previous | PB0 |
| Buton 3 | Buton Play | PD7 |
| Nume Pin | Semnal / Functie | Pin ATmega328P |
|---|---|---|
| I/O | PWM / digital output | PD5 |
| VCC | Power supply | 5V |
| GND | Ground | GND |
Implementarea software a proiectului se bazează pe prelucrarea în timp real a semnalului audio recepționat de la un microfon și pe generarea unei frecvențe corectate muzical prin intermediul unui buzzer pasiv. Sistemul funcționează pe microcontrolerul ATmega328P Xplained Mini și utilizează resursele interne ale acestuia pentru achiziția semnalului, analiza frecvenței și generarea semnalului audio de ieșire.
Procesul software este împărțit în mai multe etape principale:
Semnalul audio este captat cu ajutorul unui modul microfon conectat la pinul PC0 al microcontrolerului, corespunzător canalului analogic A0. Microfonul transformă undele sonore în variații de tensiune electrică.
Microcontrolerul utilizează convertorul analog-digital (ADC – Analog to Digital Converter) integrat pentru a eșantiona semnalul audio la intervale regulate de timp. În urma acestui proces se obține o succesiune de valori numerice ce reprezintă amplitudinea semnalului audio în funcție de timp.
Datele rezultate sunt stocate într-un buffer și sunt utilizate ulterior pentru analiza frecvenței fundamentale.
Pentru identificarea notei muzicale cântate sau detectate de microfon se utilizează algoritmul YIN, un algoritm eficient pentru estimarea frecvenței fundamentale a unui semnal periodic.
Algoritmul funcționează prin compararea semnalului cu versiuni decalate ale acestuia și determinarea perioadei dominante. Principalele etape ale algoritmului sunt:
f = fs / T
unde:
Rezultatul obținut reprezintă nota reală emisă de utilizator.
După determinarea frecvenței fundamentale, sistemul compară valoarea detectată cu un set predefinit de note muzicale aparținând unei game selectate.
Fiecare notă are asociată o frecvență standard conform sistemului temperării egale. Software-ul determină cea mai apropiată notă validă din gama activă prin calculul diferenței dintre frecvența detectată și frecvențele notelor disponibile.
Această etapă reprezintă funcția principală de autotune în timp real.
După alegerea notei corectate, microcontrolerul generează un semnal dreptunghiular cu frecvența corespunzătoare notei respective.
Pentru acest lucru este utilizat unul dintre temporizatoarele hardware interne ale microcontrolerului ATmega328P. Timerul este configurat astfel încât să producă o undă PWM sau un semnal periodic la frecvența dorită.
Semnalul generat de timer este transmis către un buzzer pasiv conectat la unul dintre pinii digitali ai microcontrolerului.
Buzzerul convertește semnalul electric periodic în vibrații mecanice, producând astfel sunetul notei corectate.
În acest mod, utilizatorul aude în timp real varianta corectată tonal a notei detectate de microfon.
Întregul proces:
este executat continuu într-o buclă principală de program, ceea ce permite funcționarea sistemului în timp real.