MIDI Controler

Introducere

Proiectul implementeaza un MIDI Controler care actioneaza la apasarea butoanelor touch. Este un instrument care poate inregistra sunetele redate si le poate reinterpreta. Instrumentul muzical va putea fi folosit pentru a crea melodii proprii si pentru a dezvolta skill-urile artistice ale utilizatorului. MIDI controlerul dat poate inregistra pana la 15 melodii personale pe SD card. O data cu pornirea inregistrarii, acesta creeaza un fisier si salveaza toate notele folosite pentru a reinterpreta melodia la dorinta utilizatorului.

Descriere generală

Utilizatorul interactioneaza cu butoanele puse la dispozitie pentru a reda diferite sunete. MIDI controler-ul pune la dispozitie inregistrarea de sunete pentru a crea o melodie proprie. O data ce controleru-ul porneste, se aprinde un led rosu, indicand starea neutra a sistemului. In aceasta stare utilizatorul poate face cunostinta cu toate notele puse la dispozitie si poate incerca sa redea diferite sunete. La apasarea butonului de inregistrare, ledul din rosu devine verde si controlerul incepe inregistrarea, iar la a 2 apasare, ledul devine din nou rosu si termina inregistrarea. O data cu finisarea inregistrarii se va crea un fisier cu melodia interpretata. La apasarea butonului 16 de pe sensorul capacitiv, utilizatorul va fi interogat de a alegea una din melodiile inregistrate pe care ar vrea sa o interpreteze. Dupa ce utilizatorul alege fisierul dorit, se aprinde culoarea albastra a ledului si incepe redarea melodiei salvate. Utilizatorul poate inregistra pana la 15 melodii a cate 50 note fiecare.

Hardware Design

Lista Piese Utilizate

  • Placa PCB
  • Arduino Nano ATMega328P
  • Led RGB - anod comun
  • Fire rigide
  • Rezistente
  • Butoane
  • Sensor capacitiv cu 16 butoane
  • Speaker
  • Amplificator
  • Modul Miscro SD

Schema Hardware

Module Folosite

  • Modul Micro SD:

  • Amplificator 5W:

  • Sensor Capacitiv TTP229:

Link Video Rezultate Simulare: https://youtu.be/_GzoAbnV8mI?si=Hp-pCNU80KUU_brN

Software Design

Codul este scris in aplicatia Arduino si foloseste bibliotecile SPI, SD, TMRpcm si o biblioteca importata manual pentru Sensorul Capacitiv - TTP229. Din motiv ca functiile existente nu-mi ajungeau, am trebui sa fac cateva mici modificari asupra codului din biblioteca TTP229. Pentru a nu incarca memoria, folosesc variabilele pentru pini ca fiind uint8_t de marime 1 byte. Deoarece placuta arduino nu este in stare sa faca o scriere intr-un modul periferic si o redare de sunet in paralel, cat timp inregistrarea este pornita, informatia se salveaza in 2 array-uri, unul pentru note si altul pentru delay. La final, cand este actionat butonul, array-urile sunt transcrise in fisierele de pe SD card. Fiecarui buton de pe sensorul capacitiv ii este atribuit un sunet anume, iar pentru butonul 16, o functie de redare a unei melodii inregistrate(la alegerea utilizatorului).

  • Setup - initializeaza datele
  • registerNote - inregistreaza o nota si delay-ul daca becul este verde si este actionat un buton capacitiv
  • playRegisteredSound - reda melodia salvata in array
  • saveNotesFromFileInArray - transcrie melodia din fisier in array
  • playMusicFile - interpreteaza un sunet in functie de buton (1-15) sau reda o melodie a utilizatorului (buton 16)
  • readKey - citeste intrarile de pe sensorul capacitiv si reseteaza keya citita la 0 pentru a nu avea coliziuni
  • checkRecordingButtonState - asteapta apasarea butonului de inregistrare
  • saveMusic - transcrie melodia din array in fisier
  • loop - functia principala de rulare a progarmului

Rezultate Obţinute

  • Regim normal

mod-simplu.jpg

  • Regim inregistrare

mod-inregistrare.jpg

  • Link Youtube - rezultat obtinut

https://www.youtube.com/watch?v=_GzoAbnV8mI&ab_channel=VladBu%C8%9Bcan

Download

Bibliografie/Resurse

Export to PDF

pm/prj2024/fstancu/vlad.butcan.txt · Last modified: 2024/05/26 19:25 by vlad.butcan
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