Sadržaj:

Melodija: 8 koraka (sa slikama)
Melodija: 8 koraka (sa slikama)

Video: Melodija: 8 koraka (sa slikama)

Video: Melodija: 8 koraka (sa slikama)
Video: Leo Sayer-More Than I Can Say (Karaoke Version) 2024, Studeni
Anonim
Image
Image
Razumijevanje toka
Razumijevanje toka

Uz mnoge prednosti i tehnološka rješenja koja omogućuju rad od kuće, ostaje teškoća u formuliranju i stvaranju podrške za život među suradnicima. MELODY je digitalno-fizički uređaj koji omogućuje stvaranje kolaborativnih kratkih glazbenih džemova. Suradnici koordiniraju vrijeme i uređaj postavlja jam session s okretima i različitim nasumičnim zvukovima. Prvi sudionik postavlja određeni ritam, nakon čega svaki sudionik dodaje vlastitu glazbenu sekciju koja odgovara zadanom ritmu. Kako bi korisnicima bez glazbene podloge olakšao rad, softver im pomaže u održavanju koraka uzorkovanjem njihovih klikova i prilagođavanjem odgovarajućem ritmu. Sesija završava nakon otprilike 3 minute kada svi sudionici završe snimanje svog dijela.

Kako radi?

Melody se temelji na hardveru ESP2866, koji komunicira s poslužiteljem Node-Red preko MQTT protokola. Uređaj prevodi bilješke igrača u niz znakova koji se šalju poslužitelju, a s poslužitelja natrag ostalim igračima. To omogućuje svima da sviraju i čuju melodiju bez prekida mrežne veze.

Melodija ima dva glavna vizualna pokazatelja. Prva je LED traka koja daje informaciju igraču kada počinje petlja i kada završava te pokazuje je li na redu igrač. Drugi je LED zaslon u središtu proizvoda, koji se koristi za vizualni prikaz postojeće melodije. Odbrojavanje od 3 do 1 označava početak reprodukcije, a prikaz vremena usmjerava korisnika kada i kako želi pridonijeti Melodiji grupe. Snimka se automatski sprema u oblak tvrtke za buduću upotrebu.

Ovaj su projekt osmislila četiri učenika u laboratoriju za inovacije u medijima (MiLab) u interdisciplinarnom centru Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar i Gad Stern. Uz pomoć Zvike Markfeld, Nette Ofer i Michala Leschinskya te uz vodstvo Noe Morag i Orena Zuckermana.

hvala Tomu Granotu na stvaranju izvrsnog instruktora koji mi je pomogao naučiti kako implementirati neke stvari ovdje (neki od koraka ovdje modelirani su prema ovom izvrsnom uputstvu).

Pribor

  • 3D pisač
  • ESP8266
  • 7 gumba
  • 8X8 LED matrica
  • WS2812B LED traka
  • I2S pojačalo
  • Ženski 1/8 "(3,5 mm) 4 -polni audio priključak
  • 4X 1K otpornik
  • 1X3K otpornik

Korak 1: Razumijevanje tijeka

Razumijevanje toka
Razumijevanje toka
Razumijevanje toka
Razumijevanje toka

U ovom smo projektu pokušali riješiti neka pitanja:

  1. Kako to možemo učiniti online, kako bi igrači mogli igrati istovremeno?
  2. Kako možemo zaobići latencije interneta i stvoriti besprijekorno iskustvo?
  3. Kako možemo učiniti da glazba zvuči dobro čak i za ljude bez glazbene podloge?

Vrijeme i serijalizacija glazbe

Kako bismo riješili prvi problem, pogledali smo MIDI protokol i pokušali ga upotrijebiti, ali vidjeli smo da je robusniji od onoga što nam je zapravo bilo potrebno. Također smo ga htjeli pojednostaviti kako bismo mogli izgraditi prvi radni prototip. Stoga smo uzeli inspiraciju iz MIDI-ja i učinili našu glazbenu petlju predstavljenom nizom brojeva (od 0-5) puta petlji veće od vremena igrača (kasnije ćemo objasniti svu glazbenu matematiku).

U glazbi dijelimo ritmove na glazbene trake. Svaka traka je u osnovi mali segment koji odabiremo 4/4 (što znači 4 takta u glazbenoj traci) - najčešći.

Svaki ritam se zatim dijeli na 4 prozora za uzorkovanje, tako da će se svaka odsvirana nota automatski poravnati na c dobar položaj, a također će nam omogućiti da predstavimo pjesmu kao niz brojeva za slanje poslužitelju.

Kako bismo bili prijateljski raspoloženi prema igračima bez glazbene podloge, učinili smo tri stvari:

  1. Ograničite broj tipki kako bi se igrač usredotočio na manje opcija.
  2. Odabrali smo note iste ljestvice koje dobro sviraju pa neće doći do disonantnog zvuka.
  3. Svaki pritisak je postavljen na "prozor" ritma, pa je sviraču muzika strana

Komunikacijski protokoli

Dakle, nakon što smo shvatili logiku koja stoji iza glazbe, kako je možemo prenijeti između naših svirača?

za to koristimo MQTT, mrežni protokol za objavljivanje i pretplatu koji prenosi poruke između uređaja.

svaki igrač pretplaćen je na dvije teme: petlja (dobivanje najaktuelnije petlje) i skretanje (dobivanje identifikatora trenutnog igrača za potrebe sinkronizacije).

Zauzvrat, kada igrač završi s sviranjem melodije, on/ona će pritisnuti tipku GORE i petlja (ažurirana) bit će poslana posredniku MQTT, koji će je prenijeti natrag svim igračima na kanalu petlje.

ova će petlja ostati "uspavana" sve dok se trenutna petlja ne završi s reprodukcijom, a zatim će je zamijeniti. tako će igrač biti transparentan. također budući da je nova petlja trenutno spremljena lokalno na uređaju za reprodukciju, nema kašnjenja interneta za glazbu pa smo riješili drugi problem.

Korak 2: Postavljanje poslužitelja - Ngrok

Postavljanje poslužitelja - Ngrok
Postavljanje poslužitelja - Ngrok
Postavljanje poslužitelja - Ngrok
Postavljanje poslužitelja - Ngrok

ngrok je usluga tuneliranja. Omogućuje nam izlaganje lokalno pokrenute usluge (u našem slučaju, Node -RED) vanjskom svijetu - bez gnjavaže pri postavljanju poslužitelja ili bavljenju DNS zapisima. Jednostavno pokrenite Node-RED na svom računalu, a zatim pokrenite ngrok na istom portu na kojem radi Node-RED.

To je to - dobit ćete URL koji možete koristiti za pristup Node -RED -u s bilo kojeg mjesta na svijetu, bez obzira na to s kojom je mrežom spojen.

Instalacija i konfiguracija

  1. Ovdje preuzmite ngrok za svoj operativni sustav.
  2. Slijedite korak na stranici za preuzimanje, sve do koraka "Pokreni ga".
  3. U koraku "Upalite ga" zamijenite 80 za 1883 - a http za tcp kao u./ngrok tcp 1883 ovisno o
  4. spremite URL i broj porta (vidi se na slici), trebat će nam kasnije.

Korak 3: Postavljanje poslužitelja - Node -Red

Postavljanje poslužitelja - Node -Red
Postavljanje poslužitelja - Node -Red

Logika poslužitelja projekta, Node-RED je vizualno programsko okruženje koje vam omogućuje povezivanje različitih softvera (i hardvera!).

Ovdje smo napravili logiku komunikacije između svih igrača (dijeljenje i primanje petlji i koordiniranje zavoja)

Instalacija Node-Red

slijedite ove korake za učitavanje našeg Node-RED toka na vaše lokalno računalo:

  1. Node-RED zahtijeva Node.js, instalirajte ga odavde
  2. instalirajte sam Node-RED koristeći ovdje navedene upute.

Sada kada ste instalirali Node-RED, pokrenite ga koristeći upute u prethodnom koraku i potvrdite da možete vidjeti praznu stranicu s platnom. Trebao bi se nalaziti na

Sada ćete morati uvesti tok koji smo koristili za ovaj projekt, možete ga pronaći ovdje i samo pritisnite import dodaj datoteku JSON i pritisnite Deploy.

Instalacija Node-Reda:

ako pogledate sliku koja je priložena ovom koraku, možete vidjeti da imamo 2 glavne "radnje", primamo trenutnu petlju od jednog od naših igrača, a zatim je prenosimo svim ostalim igračima. osim toga, prenosimo novi zaokret svim igračima. pa igra ostaje sinkronizirana.

Korak 4: Postavljanje poslužitelja - MQTT (Mosquitto)

Postavljanje poslužitelja - MQTT (Mosquitto)
Postavljanje poslužitelja - MQTT (Mosquitto)

Budući da Node-RED nema vlastitog posrednika MQTT, a mi ćemo morati komunicirati sa našim senzorima i aktivatorima preko MQTT-a, koristit ćemo namjenskog posrednika MQTT. Budući da Node-RED preporučuje Mosquitto, mi ćemo ga koristiti. Ovdje pogledajte neke informacije o MQTT -u i zašto se često koristi u IoT projektima.

Instalacija i konfiguracija

  1. Ovdje preuzmite Mosquitto i instalirajte ga, sve u skladu s vašim operativnim sustavom.
  2. Obično biste morali slijediti upute ovdje za povezivanje Node-RED-a s Mosquittom. Međutim, ako ste koristili naš tijek, on je već unaprijed konfiguriran za vas. Sve dok ispravno instalirate flow i Mosquitrro, a Mosquitto radi na portu 1883 (na kojem se pokreće prema zadanim postavkama), trebao bi funkcionirati.
  3. Imajte na umu da to znači da MQTT posrednik i vaš Node-RED poslužitelj rade na istom stroju. Ovo je korisno za pojednostavljivanje komunikacije unutar sustava. Za više informacija pogledajte donju napomenu.

Praćenje MQTT prometa

Koristio sam MQTTfx za praćenje prometa, to je izvrstan alat s vrlo jednostavnim grafičkim sučeljem.

Korak 5: Kôd

Kod
Kod

kôd možete pronaći u GitHubu (sa svim datotekama s podacima i datotekom config.h)

Ovisnosti:

prije učitavanja koda u esp2866 morat ćete instalirati nekoliko knjižnica:

  1. libmad-8266 (dekodiranje glazbe sa SPIFF-a u I2S)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Prenesite zvukove u ESP pomoću SPIFF -a:

  1. slijedite ovu sjajnu pouku.
  2. dodajte mapu s podacima u direktorij izvornog koda.
  3. U Arduino IDE -u u odjeljku Alati promijenite veličinu Flash -a u "4MB (FS: 3MB TOA: ~ 512KB)"
  4. Također pod Alati Pritisnite ESP2866 Sketch Data Upload

Postavljanje parametara:

nakon toga idite u datoteku config.h i dodajte potrebne podatke kao što su vjerodajnice za WIFI te URL i port ngrok iz prethodnog koraka (provjerite priloženu fotografiju za referencu).

p.s-Još sam dodao značajku automatskog povezivanja koja će vam pomoći postaviti WIFI i ngrok podatke s vašeg pametnog telefona, budući da je to bio samo prvi dokaz koncepta, htio bih ga jednog dana dodati.

Odredite količinu igrača koju želite (ova igra najbolje funkcionira za 2-3 igrača, a izvan kutije je učitana nizom zvukova za 2 igrača). ali se lako može prilagoditi za više:

za svakog igrača dodajte još jedan tok u node-red-u da biste objavili petlju u okviru teme specifične za korisnika.

također, možete urediti glazbeni zvuk tako da ovaj niz postavite u prilagođene zvukove:

ovdje možete vidjeti 3 vrste instrumenata (Chrods za svirača 0, Lead za svirača 1 i bas za svirača 2)

const char* putevi [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"};

Korak 6: Ispišite 3D model

Ispišite 3D model
Ispišite 3D model
Ispišite 3D model
Ispišite 3D model
Ispišite 3D model
Ispišite 3D model
Ispišite 3D model
Ispišite 3D model

Za prvi korak preuzmite STL i ispišite ih.

nakon uklanjanja nosača i možda malo brušenja (ovisno o razlučivosti pisača)

obojite ga u željenu boju

Korak 7: Sklapanje i zavarivanje

Sklapanje i zavarivanje
Sklapanje i zavarivanje

Dakle, ovdje se zapravo događa prava čarolija.

možete slijediti ove sheme i zavariti sve zajedno.

imajte na umu da možete promijeniti položaj PIN -a. Ne zaboravite ga promijeniti i u kodu.

A0 i I2S su prilično fiksirani:

budući da je A0 za otpornički most (koristimo razliku u struji kako bismo znali koja je tipka od 5 pritisnuta - slično ovom Instructables.

I2S ima posebno kodiranje koje možete pronaći ovdje

Korak 8: Igrajte petlje sa svojim prijateljima

Preporučeni: