Detector de note muzicale

Lepădatu Darius - 332CB

Introducere

Detectarea notelor muzicale este o sarcină dificilă, din cauza memoriei și puterii de procesare limitate, dar si a compentelor hardware necesare. Proiectul presupune implementarea unui detector de note muzicale precis si eficient. Scopul acestuia este de a prelucra orice sunet melodios de la un instrument pe care il va transforma intr-o nota, fiind afisata ulterior pe ecran. Prin apasarea unui buton poate fi redata aceasta nota prin buzzer. Acest proiect este util pentru muzicienii si artistii care vor sa se asigure ca melodiile lor respecta anumite tonalitati si note.

Descriere generală

Proiectul presupune captarea unui semnal audio care este transmis ca intrare către un senzor de sunet. Acest semnal este ulterior procesat și transformat într-o frecvență specifică. Frecvența înregistrată este apoi comparată cu frecvențele asociate notelor muzicale cunoscute, cum ar fi DO, RE, MI, FA, SOL, LA, SI. În cazul în care nota muzicală este recunoscută de către program, aceasta este afișată pe ecranul LCD. În caz contrar, se afișează mesajul “UNKNOWN NOTE”. Afisarea se face conform standardului universal ce utilizează denumirile C, D, E, F, G, A, B pentru notele muzicale. Acest proces permite utilizatorilor să identifice și să interpreteze corect notele muzicale. Totodata, prin apasarea unui buton se poate reda ultima nota inregistrata de microfon.

Schemă electrică

Hardware Design

Componente:

  • 1 X Arduino Uno
  • 1 x Senzor sunet
  • 1 x I2C Display
  • 1 x Buzzer
  • 1 x Buton
  • 1 X Breadboard
  • Fire de legătură

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Arduino IDE
  • librării şi surse 3rd-party: Easy FFT, LiquidCrystal_I2C.h, Wire.h
  • realizarea schemei bloc: Draw.io
  • realizarea schemei electrice: Circuit.io
  • surse şi funcţii implementate:
    1. printToLCD: sterge toate caracterele existente pe ecran si afiseaza noul text
    2. isButtonPressed: returneaza True sau False daca butonul e apasat sau nu
    3. FFT: aplica transformari Fourier pentru a procesa sunetul
    4. Tone_det: intoarce nota muzicala care a fost identificata

Concepte folosite:

  • GPIO (buton)
  • Întreruperi (microfon)
  • PWM (buzzer)
  • I2C (LCD)

Rezultate Obţinute

Eu am dezvoltat si testat codul lucrand cu o aplicatie virtuala care reda notele unui pian, de aceea, pentru acest instrument algoritmul este foarte precis (mai ales pentru sunete in intervalul 200-500 Hz), in timp ce alte pentru alte instrumente are o precizie mai mica.

Concluzii

Acest proiect m-a ajutat sa inteleg cum este creat un device cu o anumita functionalitate de la zero din toate punctele de vedere: financiar, hardware si software. A fost o experienta interesanta si totodata distractiva.

Download

Jurnal

  • 17.04.2024: Alegere tema proiect
  • 28.04.2024: Cumparare componente
  • 02.05.2024: Scriere documentatie
  • 10.05.2024: Creare repo github
  • 16.05.2024: Dezvoltare demo functional al codului in Arduino
  • 19.05.2024: Testare buzzer
  • 21.05.2024: Finalizare cod

Bibliografie/Resurse

pm/prj2024/ccontasel/darius.lepadatu.txt · Last modified: 2024/05/24 17:37 by darius.lepadatu
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