This shows you the differences between two versions of the page.
pm:prj2022:cristip:midi_footswitch [2022/05/30 11:03] marian.cioltan |
pm:prj2022:cristip:midi_footswitch [2022/06/01 20:26] (current) marian.cioltan |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== MIDI footswitch ====== | + | ====== MIDI footswitch - Cioltan Marian Alexandru 331CA ====== |
- | Cioltan Marian Alexandru | + | |
===== Introducere ===== | ===== Introducere ===== | ||
Line 6: | Line 5: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Vor fi 10 butoane, mapate la semnale MIDI, conform unui preset sau mapate la actiuni de ce schimba presetul curent. | + | Exista 10 butoane, mapate la semnale MIDI, conform unui preset sau mapate la actiuni ce schimba presetul curent. |
- | Fiecare buton are asociat un LED pentru a indica starea acestuia, iar in centrul board-ului se afla un ecran pe care sunt afisate informatii despre starea curenta, cum ar fi: acordajul folosit de pitch shifter, numele presetului folosit si efectele active. | + | Fiecare buton are asociat un LED pentru a indica starea acestuia, iar in centrul board-ului se afla un ecran pe care sunt afisate informatii despre starea curenta: tipul presetului, numarul presetului si canalul MIDI. |
- | {{:pm:prj2022:cristip:midi.png?700|}} | + | {{:pm:prj2022:cristip:midi.png?500|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 21: | Line 20: | ||
* Fire | * Fire | ||
* Rezistente | * Rezistente | ||
- | * 1 NOT IC | ||
* 1 MUX 16 iesiri | * 1 MUX 16 iesiri | ||
* 2 shift register IC | * 2 shift register IC | ||
+ | |||
+ | Multiplexorul realizeaza conexiunea intre cele 10 butoane si Arduino. | ||
+ | |||
+ | Cele 2 shift registere sunt cascadate, pentru a putea controla cele 10 leduri printr-un numar minim de pini. | ||
+ | |||
+ | Pentru a putea deconecta usor pisele montate pe cutie, le-am legat la barete de tip tata-tata si le-am conectat pe PCB in barete mama-tata. | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 30: | Line 34: | ||
Am folosit librariile: "MIDIUSB", "Wire" si "LiquidCrystal_I2C". | Am folosit librariile: "MIDIUSB", "Wire" si "LiquidCrystal_I2C". | ||
- | Aparatul are 2 moduri de functionare: Notes si Control. In modul Notes, aparatul va transmite mesaje MIDI de tip nota in functie de butoanele apasate, iar in modul Control va transmite mesaje de tip control CC. Schimbarea intre aceste 2 moduri se face prin apasarea simultana a unor butoane prestabilite. Fiecare mod are 8 preset-uri. Trecerea la urmatorul preset se face prin apasarea unei alte combinatii de butoane. In modul Notes, numarul preset-ului corespunde octavei notelor, iar in modul Control, se trece la urmatorul set de CC-uri. Daca la presetul 0 este folosit intervalul CC0-CC9, in presetul 1 este folosit intervalul CC10-CC19. | + | Aparatul are 2 moduri de functionare: Notes si Control. In modul Notes, aparatul va transmite mesaje MIDI de tip nota in functie de butoanele apasate, iar in modul Control va transmite mesaje de tip control CC. Fiecare mod are 7 preset-uri. In modul Notes, numarul preset-ului corespunde octavei notelor, iar in modul Control, se trece la urmatorul set de CC-uri. Daca la presetul 0 este folosit intervalul CC0-CC8, in presetul 1 este folosit intervalul CC09-CC17. |
- | Pe prima linie a LCD-ului se afiseaza modul curent si presetul folosit, iar pe cea de-a doua linie sunt afisate codurile butoanelor apasate. In modul Notes, codurile sunt notele si octava, iar in modul Control codul este mesajul CC#numar. | + | Schimbarea modului, numarului presetului si canalului se face prin apasarea mai intai a butonului de control care trece dizpositivul in modul de schimbare. In acest mod, prin apasarea unor butoane prestabilite are loc fiecare tip de schimbare. Cand este activat modul de schimbare, pe a doua linie a LCD-ului scrie "CHANGE". |
- | Cand un buton este apasat, ledul corespunzator lui se va aprinde. | + | Pe prima linie a LCD-ului se afiseaza modul curent, presetul folosit si canalul, iar pe cea de-a doua linie sunt afisate codurile butoanelor apasate. In modul Notes, codurile sunt notele si octava, iar in modul Control codul este mesajul CC#numar. |
+ | |||
+ | Cand un buton este apasat, ledul corespunzator lui se va stinge, restul fiind aprinse. | ||
+ | |||
+ | Daca nu se detecteaza nicio apasare in timp de 10 secunde, se va trece in modul idle, mod in care led-urile se sting si se aprind pe rand pana cand este apasat un buton. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2022:cristip:midi.jpeg?500|}} | ||
+ | {{:pm:prj2022:cristip:midi1.jpeg?500|}} | ||
+ | {{:pm:prj2022:cristip:midi2.jpeg?500|}} | ||
+ | {{:pm:prj2022:cristip:midi3.jpeg?500|}} | ||
+ | {{:pm:prj2022:cristip:midi4.jpeg?500|}} | ||
- | Pentru a monta butoanele si led-urile am creat o cutie din acrilic transparent. | + | Pentru a monta butoanele si led-urile am creat o cutie din acrilic transparent. Fundul cutiei este atasat cu magneti si se poate demonta usor. |
- | CC-urile pot fi programate din cadrul plugin-urilor pentru a schimba diversi parametri. Notele sunt interpretate de sintetizatoare si redate corect. Din moment ce sunt afisate si notele transmise, aparatul poate fi folosit impreuna cu un instrument virtual si un instrument real pentru a identifica notele pe gatul unei chitare sau clapele unui pian. | + | CC-urile pot fi programate din cadrul plugin-urilor pentru a schimba diversi parametri. Notele sunt interpretate de sintetizatoare si redate corect. |
+ | |||
+ | Dispozitivul poate transmite CC-uri de la CC0 la CC62 pe 16 canale, deci pot fi programate 16 * 63 = 1008 actiuni distincte. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | In final am reusit sa construiesc ceea ce mi-am propus. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2022:cristip:midi.zip|}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | + | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 59: | Line 72: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | [[https://www.ti.com/lit/ds/symlink/sn74hc595.pdf|Shift Register]] | ||
+ | |||
+ | [[https://www.ti.com/lit/ds/symlink/cd74hc4067.pdf|Mux]] | ||
<note> | <note> |