Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:apredescu:midi_controller [2021/05/02 17:17]
mohamad_kher.al
pm:prj2021:apredescu:midi_controller [2021/06/03 15:48] (current)
mohamad_kher.al
Line 16: Line 16:
 folosite pentru a regla diferite efecte sonore si proprietati precum volumul si frecventa. folosite pentru a regla diferite efecte sonore si proprietati precum volumul si frecventa.
  
-In functie de modul cum decurge proiectul, e posibil sa fie adaugate si alte proprietati precum butoane wireless sau un +**{{:​pm:​prj2021:​apredescu:​midi.png?​600|}}** 
-OLED pentru vizualizarea proprietatilor setate de potentiometru.+ 
 +Schema bloc
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 25: Line 26:
   * potentiometre   * potentiometre
   * fire   * fire
-Alte componente hardware care ar putea fi folosite in proiect sunt: +  ​Led-uri 
-  * Oled color +  * rezistente(pentru conectarea led-urilor)
-  ​telecomanda +
-  * joystick+
  
-**{{:​pm:​prj2021:​apredescu:​midi.png?200|}}**+{{:​pm:​prj2021:​apredescu:​schema_midi_picture.jpg?800|}} 
 + 
 +Schema electrica
  
 ===== Software Design ===== ===== Software Design =====
 +Codul este scris in Arduino IDE, iar pe langa bibilotecile standard Arduino acesta foloseste biblioteca MIDI.h,
 +biblioteca folosita pentru a trimite datele intr-un format MIDI-convertibil. Codul este relativ simplu, acesta procedeaza astfel:
 +
 +          1- citeste datele de la butoane cu digitalRead si datele de la potentiometre cu analogRead
 +
 +          2- pentru butoane va verifica inputurile la fiecare trecere a unei perioade de delay si le va trimite ca note 
 +             ​folosind functia sendNoteOn(). daca se apasa butonul de pauza si ledurile sunt active se vor dezactiva, atlfel daca 
 +             se apasa alt buton si ledurile sunt inactive se vor activa
 +
 +          3- pentru potentiometre se va folosi acelasi principiu de verificare dupa delay, diferenta este ca datele nu se vor trimite ​
 +             ​folosiind sendNoteOn(),​ ci folosiind sendControlChange() pentru a putea modifica controale precum efectele si filterele. Datele
 +             ​trimise de la potentiometru vor trebui scalate pentru a se incadra in intervalul 0-127 deoarece acesta este intervalul notelor MIDI
 +
 +Pe langa scrierea codului am avut nevoie de diverse aplicatii pentru functionarea proiectului. In primul rand, un
 +controller MIDI nu isi are rostul daca nu trimite datele unui instrument muzical. Neavand instrumente pe care sa le pot folosi,
 +am optat la folosirea unei aplicatii de tip sintetizator apeland la programul Ableton Live pentru generarea muzicii. Am ales
 +Ableton Live in principal deoarece este cel mai MIDI-friendly dintre toate aplicatile de acest tip.
 +
 +Deoarece datele trimise de program sunt date seriale, nu date MIDI, acestea nu puteau fi trimise in mod direct
 +aplicatiei, fara sa treaca printr-un convertor care sa le transforme in date MIDI. Pentru a face aceasta conversie am folosit ​
 +Hairless MIDI, o aplicatie ​ care primeste date pe un port serial si le converteste pentru a le transmite mai departe pe un port MIDI.
 +Windows nu are implementate optiuni pentru crearea unui port MIDI, deci am folosit aplicatia LoopMIDI pentru a crea un astfel de port.
 +
 ===== Rezultate Obtinute ===== ===== Rezultate Obtinute =====
 +{{:​pm:​prj2021:​apredescu:​rezultate_mohamad1.jpeg?​200|}}
 +{{:​pm:​prj2021:​apredescu:​rezultate_mohamad2.jpeg?​200|}}
 +!Router sold separately!
 +{{:​pm:​prj2021:​apredescu:​rezultate_mohamad3.jpeg?​200|}}
 ===== Concluzii ===== ===== Concluzii =====
 +Pe langa experienta dobandita in lucrul cu Arduino, am invatat multe despre datele MIDI si modul in care acestea sunt transmise unui mediu
 +muzical. Deasemenea am invatat putin despre lucrul cu potentiometre si ce tipuri de potentiometre sunt potrivite pentru anumite ​
 +tensiuni. ​
 +===== Demo =====
 +https://​youtu.be/​MG1ahkrgh0Y
 ===== Download===== ​ ===== Download===== ​
 https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​midi_controller?​do=export_pdf https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​midi_controller?​do=export_pdf
 ===== Bibliografie ===== ===== Bibliografie =====
 https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​midi_controller https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​midi_controller
 +https://​github.com/​FortySevenEffects/​arduino_midi_library/​blob/​master/​src/​MIDI.h
 +https://​youtu.be/​BzLKtor-6Vg
  
  
pm/prj2021/apredescu/midi_controller.1619965055.txt.gz · Last modified: 2021/05/02 17:17 by mohamad_kher.al
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