Cuprins:
- Provizii
- Pasul 1: Înțelegerea fluxului
- Pasul 2: Setarea serverului - Ngrok
- Pasul 3: Setarea serverului - Nod-Roșu
- Pasul 4: Setarea serverului - MQTT (Mosquitto)
- Pasul 5: Codul
- Pasul 6: Imprimați modelul 3D
- Pasul 7: Asamblare și sudare
- Pasul 8: Joacă câteva bucle cu prietenii tăi
Video: Melodie: 8 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Alături de numeroasele avantaje și soluții tehnologice care permit munca de acasă, rămâne și dificultatea de a formula și a crea suport pentru viață în rândul colegilor de muncă. MELODY este un dispozitiv digital-fizic care permite crearea de blocaje muzicale scurte colaborative. Colegii de lucru coordonează timpul, iar dispozitivul stabilește o sesiune de blocare cu ture și sunete aleatorii diferite. Primul participant stabilește un ritm specific, după care fiecare participant adaugă propria secțiune muzicală corespunzătoare ritmului stabilit. Pentru a ușura utilizatorii fără fundal muzical, software-ul îi ajută să țină pasul prin eșantionarea clicurilor și ajustarea la ritmul adecvat. Sesiunea se încheie după aproximativ 3 minute, când toți participanții au terminat de înregistrat partea lor.
Cum functioneazã?
Melody se bazează pe hardware-ul ESP2866, care comunică cu un server Node-Red prin protocolul MQTT. Dispozitivul traduce notele jucătorului într-un șir de caractere care este trimis la server și de la server înapoi la ceilalți jucători. Acest lucru permite tuturor să redea și să audă melodia fără întrerupere din conexiunea lor la rețea.
Melodia are doi indicatori vizuali principali. Prima este o bandă LED care îi permite jucătorului să știe când începe Bucla și când se termină și indică dacă este rândul jucătorului. Al doilea este un afișaj LED în centrul produsului, care este utilizat pentru a afișa vizual melodia existentă. O numărătoare inversă de la 3 la 1 indică începerea redării, iar un afișaj de sincronizare direcționează utilizatorul când și cum vrea să contribuie la Melodia grupului. Înregistrarea este salvată automat în cloud-ul companiei pentru utilizare ulterioară.
Acest proiect a fost conceput de patru studenți la laboratorul de inovare media (MiLab) de la Centrul interdisciplinar Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar și Gad Stern. Cu asistența lui Zvika Markfeld, Netta Ofer și Michal Leschinsky și îndrumarea lui Noa Morag și Oren Zuckerman.
mulțumesc lui Tom Granot pentru crearea unui instructabil extraordinar care m-a ajutat să învăț cum să implementez unele dintre lucrurile de aici (unii dintre pașii de aici sunt modelați după acest instructabil extraordinar).
Provizii
- imprimantă 3d
- ESP8266
- 7 butoane
- Matrice LED 8X8
- Benzi LED WS2812B
- Amplificator I2S
- Mufă audio audio de 4 poli, de 1/8 "(3,5 mm)
- Rezistor 4X 1K
- Rezistor 1X3K
Pasul 1: Înțelegerea fluxului
În acest proiect am încercat să abordăm câteva probleme:
- Cum o putem face online, astfel încât jucătorii să poată juca în același timp?
- Cum putem ocoli latențele internetului și să creăm o experiență perfectă?
- Cum putem face ca muzica să sune bine chiar și pentru persoanele fără fond muzical?
Programarea și serializarea muzicii
Pentru a rezolva prima problemă, ne-am uitat la protocolul MIDI și am încercat să-l folosim, dar am văzut că este mai robust decât ceea ce aveam de fapt nevoie, de asemenea, am vrut cu adevărat să îl simplificăm, astfel încât să putem construi primul prototip de lucru. Așa că ne-am inspirat din MIDI și ne-am făcut bucla muzicală reprezentată printr-un șir de numere (de la 0 la 5) de ori cât dimensiunea buclelor este redată de jucători (vom explica toate matematica muzicală mai târziu).
În muzică, împărțim ritmurile în bare muzicale. Fiecare bar este practic un segment de timp redus, alegem să folosim 4/4 (adică 4 bătăi într-un bar muzical) - cel mai comun.
Fiecare ritm este apoi împărțit în 4 ferestre de eșantionare, astfel încât fiecare notă redată va fi aliniată automat la o poziție bună și ne va permite, de asemenea, să reprezentăm o melodie ca un șir de numere pe care să le trimitem la server.
Pentru a fi prietenoși cu jucătorii fără fond muzical, am făcut trei lucruri:
- Limitați numărul de taste pentru a face jucătorul să se concentreze pe mai puține opțiuni.
- Am ales note pe aceeași scară care joacă bine împreună, astfel încât să nu existe sunet disonant.
- Fiecare apăsare este setată la „fereastra” ritmului, astfel înstrăinând muzica playerului la ritm
Protocoale de comunicare
Deci, după ce am înțeles logica din spatele muzicii, cum o putem comunica între jucătorii noștri?
pentru asta, folosim MQTT, un protocol de rețea de publicare-abonare care transportă mesaje între dispozitive.
fiecare jucător este abonat la două subiecte: bucla (obține cea mai actuală buclă) și tura (obține id-ul jucătorului curent în scopuri de sincronizare).
La rândul lor, când un jucător a terminat de redat melodia, el / ea va apăsa butonul SUS și bucla (cea actualizată) va fi trimisă brokerului MQTT, care o va transmite înapoi tuturor jucătorilor de pe canalul buclei.
această buclă va rămâne „inactivă” până când bucla curentă este terminată de redare și apoi o va înlocui. astfel va fi transparent pentru jucător. De asemenea, deoarece noua buclă este salvată în mod local la dispozitivul player nu există o latență pe internet pentru muzică, așa că am rezolvat a doua problemă.
Pasul 2: Setarea serverului - Ngrok
ngrok este un serviciu de tunelare. Ne permite să expunem un serviciu care rulează la nivel local (în cazul nostru, Node-RED) către lumea exterioară - fără a fi nevoie să configurați un server sau să vă ocupați de înregistrări DNS. Pur și simplu rulați Node-RED pe computer și apoi rulați ngrok pe același port pe care se execută Node-RED.
Gata - veți obține o adresă URL pe care o puteți folosi pentru a accesa Node-RED de oriunde în lume, indiferent de rețeaua la care este conectat.
Instalare și configurare
- Descărcați ngrok pentru sistemul dvs. de operare de aici.
- Urmați pasul de pe pagina de descărcare, până la pasul „Fire it up”.
- În „Pasul de pornire”, schimbați 80 pentru 1883 - și http către tcp ca în,./ngrok tcp 1883 în funcție de
- salvați adresa URL și numărul portului (a văzut în imagine) vom avea nevoie de, mai târziu.
Pasul 3: Setarea serverului - Nod-Roșu
Logica Server a proiectului, Node-RED este un mediu de programare vizual care vă permite să conectați diverse software (și hardware!).
Aici am făcut logica comunicării între toți jucătorii (partajarea și primirea buclelor și coordonarea tururilor)
Instalarea Node-Red
urmați pașii următori pentru a încărca fluxul nostru Node-RED pe computerul dvs. local:
- Node-RED necesită Node.js, instalați-l de aici
- instalați Node-RED în sine folosind instrucțiunile de aici.
Acum că aveți instalat Node-RED, rulați-l folosind instrucțiunile de la pasul de mai sus și validați, puteți vedea o pagină de pânză goală. Ar trebui să fie localizat în
Acum va trebui să importați fluxul pe care l-am folosit pentru acest proiect, îl puteți găsi aici și doar apăsați import adăugați fișierul JSON și apăsați pe Deploy.
Instalarea Node-Red:
dacă te uiți la imaginea atașată acestui pas, poți vedea că avem 2 „acțiuni” principale, primim o buclă de curent de la unul dintre jucătorii noștri și apoi o transmitem tuturor celorlalți jucători. în plus, am transmis noul rând la toți jucătorii. deci jocul rămâne sincronizat.
Pasul 4: Setarea serverului - MQTT (Mosquitto)
Deoarece Node-RED nu are propriul broker MQTT și va trebui să comunicăm cu senzorii și activatorii noștri prin MQTT, vom folosi un broker dedicat MQTT. Deoarece Node-RED recomandă Mosquitto, acesta este cel pe care îl vom folosi. Vedeți aici câteva informații despre MQTT și de ce este adesea folosit în proiecte IoT.
Instalare și configurare
- Descărcați Mosquitto de aici și instalați-l, în funcție de sistemul dvs. de operare.
- În mod normal, ar trebui să urmați instrucțiunile de aici pentru a conecta Node-RED la Mosquitto. Cu toate acestea, dacă ați folosit fluxul nostru, acesta este deja preconfigurat pentru dvs. Atâta timp cât instalați fluxul și Mosquitrro în mod corespunzător, iar Mosquitto rulează pe portul 1883 (pe care rulează implicit), ar trebui să funcționeze din cutie.
- Rețineți că acest lucru înseamnă că brokerul MQTT și serverul dvs. Node-RED rulează pe aceeași mașină. Acest lucru este util pentru simplificarea comunicării în interiorul sistemului. Consultați nota de mai jos pentru mai multe informații.
Monitorizarea traficului MQTT
Am folosit MQTTfx pentru a monitoriza traficul, este un instrument grozav cu o interfață grafică foarte simplă.
Pasul 5: Codul
puteți găsi codul în GitHub (cu toate fișierele de date și config.h)
Dependențe:
înainte de a încărca codul pe esp2866 va trebui să instalați câteva biblioteci:
- libmad-8266 (decodează muzica din SPIFF și în I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Încărcați sunetele în ESP utilizând SPIFF:
- urmează acest mare instructabil.
- adăugați folderul de date în directorul codului sursă.
- În IDE-ul Arduino, sub Instrumente, schimbați dimensiunea blițului la „4 MB (FS: 3 MB TOA: ~ 512 KB)”
- De asemenea, sub Instrumente, apăsați ESP2866 Sketch Data Upload
Setarea parametrilor:
după aceea, accesați fișierul config.h și adăugați datele necesare, cum ar fi acreditările WIFI și adresa URL și portul ngrok din pasul anterior (verificați fotografia atașată pentru referință).
p.s - Am adăugat încă o funcție de conectare automată pentru a vă ajuta să setați datele WIFI și ngrok de pe telefonul dvs. inteligent, deoarece a fost doar o primă dovadă a conceptului, aș dori să o adaug într-o zi.
Setați cantitatea de jucător dorită (acest joc funcționează cel mai bine pentru 2-3 jucători și din cutie este încărcat cu o serie de sunete pentru 2 jucători). dar poate fi ajustat cu ușurință pentru mai multe:
pentru fiecare jucător adăugați un alt flux în nod-roșu pentru a publica o buclă într-un sub subiect specific utilizatorului.
de asemenea, puteți edita sunetul muzical modificând această matrice la sunetele dvs. personalizate:
aici puteți vedea 3 tipuri de instrumente (Chrods pentru player 0, Lead pentru player 1 și Bass pentru player 2)
const char * căi [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};
Pasul 6: Imprimați modelul 3D
Pentru primul pas, descărcați STL și imprimați-le.
după îndepărtarea suporturilor și poate un pic de șlefuire (în funcție de rezoluția imprimantei)
pictează-l la culoarea dorită
Pasul 7: Asamblare și sudare
Așadar, practic aici se întâmplă adevărata magie.
puteți urmări aceste scheme și sudura totul împreună.
Rețineți că puteți schimba poziția codurilor PIN, nu uitați să o modificați și în cod.
A0 și I2S sunt destul de fixe la locul lor:
deoarece A0 este pentru podul de rezistență (folosim diferența de curent pentru a ști care buton din 5 a fost apăsat - similar cu acest Instructables.
I2S are o codificare specifică pe care o puteți găsi aici
Pasul 8: Joacă câteva bucle cu prietenii tăi
Recomandat:
Melodie tematică PUBG + animație cu Arduino !: 13 pași (cu imagini)
PUBG Theme Song + Animation With Arduino !: Bună ziua și bine ați venit la acest instructiv distractiv! Sper că toți sunteți bine și să rămâneți sănătoși. Acest proiect mic, dar uimitor, se referă la redarea melodiei tematice PUBG și chiar la crearea unor animații de joc folosind arduino. Componentele utilizate sunt foarte e
Melodie simplă Arduino: 3 pași
Melodie simplă Arduino Tone: Melodia Arduino Tone simplă este un mod de a începe cu proiectele Arduino, deoarece veți încărca codul direct din software-ul Arduino direct, fără a fi nevoie să scrieți nimic
Cum să redați o melodie pe Yamaha EZ-220: 5 pași
Cum să redați o melodie pe Yamaha EZ-220: Acești pași vă vor ajuta să redați melodia folosind cartea de melodii
Adaptarea unui clopoțel video la o melodie digitală: 5 pași
Adaptarea unui clopoțel video la un cântec de cântec digital: scurtă poveste, Best Buy mi-a spus că nu pot instala clopoțelul Simplisafe cu un clopoțel pentru ușa melodiei melodiei. Citind sute de postări a spus că nu se poate face. Simplisafe a spus că nu se poate face, dar a furnizat un kit oricum. Setul de conector este pentru o bară
Ceas cu alarmă cu răsărit cu LED cu alarmă de melodie personalizabilă: 7 pași (cu imagini)
Ceas cu alarmă cu răsărit cu LED cu alarmă de melodie personalizabilă: motivația mea În această iarnă, iubita mea a avut multe probleme la trezire dimineața și părea să sufere de SAD (tulburare afectivă sezonieră). Ba chiar observ cât de greu este să te trezești iarna, deoarece soarele nu a venit