This shows you the differences between two versions of the page.
|
pm:prj2023:apredescu:sintetizator [2023/05/28 23:05] radu_andrei.popescu [Software Design] |
pm:prj2023:apredescu:sintetizator [2023/05/28 23:36] (current) radu_andrei.popescu |
||
|---|---|---|---|
| Line 58: | Line 58: | ||
| * Pentru citirea input-ului MIDI: | * Pentru citirea input-ului MIDI: | ||
| <code> | <code> | ||
| + | ... | ||
| void MIDI_poll(); | void MIDI_poll(); | ||
| Line 94: | Line 95: | ||
| } while (size > 0); | } while (size > 0); | ||
| } | } | ||
| + | ... | ||
| </code> | </code> | ||
| + | |||
| + | * Pentru citirea input-ului de pe cealaltă placă Arduino: | ||
| + | <code> | ||
| + | ... | ||
| + | if (Serial.available() > 0) { | ||
| + | // Read the incoming data | ||
| + | c = Serial.read(); | ||
| + | if (c != '\n'){ | ||
| + | note[i++] = c; | ||
| + | } else { | ||
| + | note[i] = c; | ||
| + | i = 0; | ||
| + | note_int = atoi(note); | ||
| + | Serial.print(note_int); | ||
| + | } | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | * Pentru a cânta nota primită ca input: | ||
| + | <code> | ||
| + | ... | ||
| + | if (note_int != 0){ | ||
| + | sprintf(file, "%s%d.wav", MIDI_to_note(note_int), curr_preset); | ||
| + | Serial.print(file); | ||
| + | Serial.println(); | ||
| + | tmrpcm.play(file); | ||
| + | } | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | * Pentru a citi valoarea potențiometrului și pentru a afișa preset-ul ales: | ||
| + | <code> | ||
| + | ... | ||
| + | void loop() { | ||
| + | val = analogRead(A0); | ||
| + | val = map(val, 0, 1020, 1, 6); | ||
| + | |||
| + | if (val != curr_preset && val != 6){ | ||
| + | curr_preset = val; | ||
| + | printPreset(); | ||
| + | } | ||
| + | } | ||
| + | ... | ||
| + | void printPreset(){ | ||
| + | clearCharacters(); | ||
| + | lcd.setCursor(0,1); | ||
| + | if (curr_preset == 5) | ||
| + | lcd.print("Drums"); | ||
| + | else lcd.print(curr_preset); | ||
| + | } | ||
| + | ... | ||
| + | void clearCharacters() | ||
| + | { | ||
| + | for (int i = 0; i < 10; i++) | ||
| + | { | ||
| + | lcd.setCursor (i,1); // | ||
| + | lcd.write(254); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | De asemenea, pentru a converti valoarea input-ului MIDI într-o notă muzicală, am creat propria bibliotecă. | ||
| + | **input_converter.cpp:** | ||
| + | <code> | ||
| + | #include "input_converter.h" | ||
| + | |||
| + | char* MIDI_to_note(int note) { | ||
| + | if (note == 60) | ||
| + | return "C1"; | ||
| + | if (note == 61) | ||
| + | return "C#1"; | ||
| + | if (note == 62) | ||
| + | return "D1"; | ||
| + | if (note == 63) | ||
| + | return "D#1"; | ||
| + | if (note == 64) | ||
| + | return "E1"; | ||
| + | if (note == 65) | ||
| + | return "F1"; | ||
| + | if (note == 66) | ||
| + | return "F#1"; | ||
| + | if (note == 67) | ||
| + | return "G1"; | ||
| + | if (note == 68) | ||
| + | return "G#1"; | ||
| + | if (note == 69) | ||
| + | return "A1"; | ||
| + | if (note == 70) | ||
| + | return "A#1"; | ||
| + | if (note == 71) | ||
| + | return "B1"; | ||
| + | return ""; | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | <note tip> | ||
| + | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| + | </note> | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | ===== Download ===== | ||
| + | |||
| + | <note warning> | ||
| + | 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 ===== | ||
| + | |||
| + | <note tip> | ||
| + | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| + | </note> | ||
| + | |||
| + | ===== Bibliografie/Resurse ===== | ||
| + | |||
| + | <note> | ||
| + | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
| + | </note> | ||
| + | |||
| + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||