Kazalo:

Melodija: 8 korakov (s slikami)
Melodija: 8 korakov (s slikami)

Video: Melodija: 8 korakov (s slikami)

Video: Melodija: 8 korakov (s slikami)
Video: Rachmaninov "Dream" ("Son") op.8 no.5/Accompaniment /Karaoke/ «Сон» С.Рахманинов/Аккомпанемент/Минус 2024, Julij
Anonim
Image
Image
Razumevanje toka
Razumevanje toka

Poleg številnih prednosti in tehnoloških rešitev, ki omogočajo delo od doma, ostaja težava pri oblikovanju in ustvarjanju življenjske podpore med sodelavci. MELODY je digitalno-fizična naprava, ki omogoča ustvarjanje skupnih kratkih glasbenih zastojev. Sodelavci usklajujejo čas in naprava nastavi jam session z obračanjem in različnimi naključnimi zvoki. Prvi udeleženec nastavi določen ritem, nato pa vsak udeleženec doda svoj glasbeni odsek, ki ustreza nastavljenemu ritmu. Da bi olajšali uporabnike brez glasbenega ozadja, jim programska oprema pomaga vztrajati v koraku z vzorčenjem klikov in prilagajanjem ustreznemu ritmu. Seja se konča po približno 3 minutah, ko vsi udeleženci končajo snemanje svojega dela.

Kako deluje?

Melody temelji na strojni opremi ESP2866, ki prek protokola MQTT komunicira s strežnikom Node-Red. Naprava prevede igralčeve zapiske v niz znakov, ki se pošlje strežniku in s strežnika nazaj drugim igralcem. To vsem omogoča predvajanje in poslušanje melodije brez prekinitve omrežne povezave.

Melodija ima dva glavna vizualna kazalca. Prvi je LED trak, ki igralcu sporoči, kdaj se zanka začne in kdaj konča, ter označi, ali je na vrsti igralec. Drugi je LED zaslon v središču izdelka, ki se uporablja za vizualni prikaz obstoječe melodije. Odštevanje od 3 do 1 označuje začetek predvajanja, prikaz časa pa uporabnika usmeri, kdaj in kako želi prispevati k Melodiji skupine. Posnetek se samodejno shrani v oblak podjetja za nadaljnjo uporabo.

Ta projekt so oblikovali štirje študentje v laboratoriju za inovacije medijev (MiLab) v interdisciplinarnem centru Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar in Gad Stern. S pomočjo Zvike Markfeld, Nette Ofer in Michala Leschinskyja ter pod vodstvom Noe Morag in Orena Zuckermana.

hvala Tomu Granotu za ustvarjanje odličnega pouka, ki mi je pomagal naučiti se izvajati nekatere stvari tukaj (nekateri koraki so oblikovani po tem odličnem navodilu).

Zaloge

  • 3D tiskalnik
  • ESP8266
  • 7 gumbov
  • 8X8 LED matrika
  • WS2812B LED trak
  • Ojačevalnik I2S
  • Samski 1/8 "(3,5 mm) 4 -polni avdio priključek
  • 4X 1K upor
  • 1X3K upor

1. korak: Razumevanje toka

Razumevanje toka
Razumevanje toka
Razumevanje toka
Razumevanje toka

V tem projektu smo poskušali rešiti nekaj vprašanj:

  1. Kako lahko to naredimo na spletu, da lahko igralci igrajo hkrati?
  2. Kako se lahko izognemo internetnim zamudam in ustvarimo brezhibno izkušnjo?
  3. Kako lahko naredimo glasbo dobro tudi za ljudi brez glasbene podlage?

Časovna razporeditev in zaporedje glasbe

Za rešitev prve težave smo si ogledali protokol MIDI in ga poskušali uporabiti, vendar smo videli, da je bolj robusten od tistega, kar smo dejansko potrebovali, prav tako pa smo ga želeli poenostaviti, da lahko izdelamo prvi delujoči prototip. Tako smo vzeli navdih iz MIDI-ja in našo glasbeno zanko predstavili z nizom številk (od 0-5) krat velikosti zank v času igralcev (vso glasbeno matematiko bomo razložili kasneje).

V glasbi ritme razdelimo na glasbene takte. Vsak stolpec je v bistvu majhen segment, za katerega se odločimo uporabiti 4/4 (kar pomeni 4 udarce v glasbeni vrstici) - najpogostejši.

Vsak utrip je nato razdeljen na 4 okna za vzorčenje, tako da bo vsaka predvajana nota samodejno poravnana v dobro pozicijo c in nam bo tudi omogočila, da pesem predstavimo kot niz številk za pošiljanje strežniku.

Da bi bili prijazni do igralcev brez glasbene podlage, smo naredili tri stvari:

  1. Omejite število tipk, da se bo predvajalnik osredotočil na manj možnosti.
  2. Izbrali smo note na isti lestvici, ki dobro igrajo skupaj, tako da ne bo nobenega disonantnega zvoka.
  3. Vsak pritisk je nastavljen na "okno" ritma, zato je glasba predvajalnika tuja

Komunikacijski protokoli

Ko torej razumemo logiko glasbe, kako jo lahko komuniciramo med igralci?

za to uporabljamo MQTT, omrežni protokol za objavo in naročanje, ki prenaša sporočila med napravami.

vsak igralec je naročen na dve temi: zanka (dobi najnovejšo zanko) in obrat (dobi ID trenutnega predvajalnika za namene sinhronizacije).

Ko igralec konča z igranjem melodije, pritisne gumb GOR in zanka (posodobljena) bo poslana posredniku MQTT, ki jo bo poslal nazaj vsem igralcem na kanalu zanke.

ta zanka bo ostala "mirujoča", dokler se trenutna zanka ne predvaja, nato pa jo bo zamenjala. tako bo za igralca pregleden. tudi ker je nova zanka trenutno shranjena lokalno na napravi predvajalnika, internetne zamude pri glasbi ni, zato smo rešili drugo vprašanje.

2. korak: Nastavitev strežnika - Ngrok

Nastavitev strežnika - Ngrok
Nastavitev strežnika - Ngrok
Nastavitev strežnika - Ngrok
Nastavitev strežnika - Ngrok

ngrok je storitev predora. Omogoča nam, da lokalno delujočo storitev (v našem primeru Node -RED) izpostavimo zunanjemu svetu - brez težav pri nastavitvi strežnika ali obravnavanju zapisov DNS. Node-RED preprosto zaženete v računalniku in nato zaženete ngrok na istih vratih, na katerih deluje Node-RED.

To je to - dobili boste URL, s katerim lahko dostopate do Node -RED od koder koli na svetu, ne glede na to, s katerim omrežjem je povezan.

Namestitev in konfiguracija

  1. Od tod prenesite ngrok za svoj operacijski sistem.
  2. Sledite korakom na strani za prenos, vse do koraka »Požari«.
  3. V koraku "Požari ga" zamenjajte 80 za 1883 - in http za tcp kot v./ngrok tcp 1883, odvisno od vašega
  4. shranite URL in številko vrat (prikazano na sliki), ki jih bomo potrebovali kasneje.

3. korak: Nastavitev strežnika - Node -Red

Nastavitev strežnika - Node -Red
Nastavitev strežnika - Node -Red

Strežniška logika projekta, Node-RED, je vizualno programsko okolje, ki vam omogoča povezovanje različne programske opreme (in strojne opreme!).

Tu smo naredili logiko komunikacije med vsemi igralci (deljenje in sprejemanje zank ter usklajevanje zavojev)

Namestitev Node-Red

sledite tem korakom, da naložite naš tok Node-RED v vaš lokalni računalnik:

  1. Node-RED zahteva Node.js, namestite ga od tu
  2. namestite Node-RED sami po navodilih tukaj.

Zdaj, ko imate nameščen Node-RED, ga zaženite po navodilih v zgornjem koraku in potrdite, da vidite prazno stran platna. Najti se mora na

Zdaj boste morali uvoziti tok, ki smo ga uporabili za ta projekt, najdete ga tukaj in samo pritisnite import, dodajte datoteko JSON in pritisnite Deploy.

Namestitev Node-Red:

če pogledate sliko, ki je priložena temu koraku, lahko vidite, da imamo 2 glavni "akciji", od enega od naših igralcev prejmemo trenutno zanko in jo nato posredujemo vsem ostalim igralcem. poleg tega pa smo vsem igralcem oddali nov obrat. tako igra ostane sinhronizirana.

4. korak: Nastavitev strežnika - MQTT (Mosquitto)

Nastavitev strežnika - MQTT (Mosquitto)
Nastavitev strežnika - MQTT (Mosquitto)

Ker Node-RED nima svojega posrednika MQTT in bomo morali komunicirati s svojimi senzorji in aktivatorji prek MQTT, bomo uporabili namenskega posrednika MQTT. Ker Node-RED priporoča Mosquitto, bomo uporabili tega. Tukaj si oglejte nekaj informacij o MQTT in zakaj se pogosto uporablja v projektih IoT.

Namestitev in konfiguracija

  1. Od tu prenesite Mosquitto in ga namestite, vse v skladu z vašim operacijskim sistemom.
  2. Običajno bi morali slediti tem navodilom za povezavo Node-RED z Mosquitto. Če pa ste uporabili naš tok, je za vas že vnaprej konfiguriran. Dokler pravilno namestite tok in Mosquitrro, Mosquitto pa deluje na vratih 1883 (na katerih deluje privzeto), bi moral delovati brez težav.
  3. Upoštevajte, da to pomeni, da posrednik MQTT in vaš strežnik Node-RED delujeta na istem računalniku. To je uporabno za poenostavitev komunikacije znotraj sistema. Za več informacij si oglejte spodnjo opombo.

Spremljanje prometa MQTT

Za spremljanje prometa sem uporabil MQTTfx, to je odlično orodje z zelo preprostim grafičnim vmesnikom.

5. korak: Koda

Kodeks
Kodeks

kodo najdete v GitHubu (z vsemi podatkovnimi datotekami in config.h)

Odvisnosti:

preden naložite kodo v esp2866, boste morali namestiti nekaj knjižnic:

  1. libmad-8266 (dekodiranje glasbe iz SPIFF v I2S)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Naložite zvoke v ESP z uporabo SPIFF:

  1. sledite temu odličnemu navodilu.
  2. mapo s podatki dodajte v imenik izvorne kode.
  3. V Arduino IDE pod Orodja spremenite velikost Flash na "4 MB (FS: 3 MB TOA: ~ 512 KB)"
  4. Tudi pod Orodja Pritisnite ESP2866 Sketch Data Upload

Nastavitev parametrov:

nato pojdite v datoteko config.h in dodajte zahtevane podatke, kot so poverilnice WIFI ter URL in vrata ngrok iz prejšnjega koraka (za referenco preverite priloženo fotografijo).

p.s-Dodal sem še funkcijo samodejne povezave, ki vam bo pomagala nastaviti podatke WIFI in ngrok iz vašega pametnega telefona, saj je bil to le prvi dokaz koncepta, bi ga nekega dne dodal.

Nastavite želeno količino predvajalnika (ta igra najbolje deluje za 2-3 igralce in iz škatle je naložena vrsta zvokov za 2 igralca). vendar jih je mogoče enostavno prilagoditi za več:

za vsakega igralca dodajte še en tok v rdečem vozlišču, da objavite zanko v temi za uporabnika.

glasbeni zvok lahko uredite tudi tako, da ta niz prilagodite svojim zvokom po meri:

tukaj lahko vidite 3 vrste instrumentov (Chrods za igralca 0, Lead za igralca 1 in Bass za igralca 2)

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

6. korak: Natisnite model 3D

Natisnite 3D model
Natisnite 3D model
Natisnite 3D model
Natisnite 3D model
Natisnite 3D model
Natisnite 3D model
Natisnite 3D model
Natisnite 3D model

Za prvi korak prenesite STL in jih natisnite.

po odstranitvi nosilcev in morda malo brušenja (odvisno od ločljivosti tiskalnika)

pobarvaj v želeno barvo

7. korak: Sestavljanje in varjenje

Sestavljanje in varjenje
Sestavljanje in varjenje

Tako se v bistvu tukaj zgodi prava čarovnija.

lahko sledite tem shemam in vse skupaj zvarite.

Upoštevajte, da lahko spremenite položaj kode PIN, ne pozabite pa jo spremeniti tudi v kodi.

A0 in I2S sta precej pritrjena:

ker je A0 za uporniški most (z razliko v toku uporabimo, da vemo, kateri gumb od 5 je bil pritisnjen - podobno kot ta Instructables.

I2S ima posebno kodiranje, ki ga najdete tukaj

8. korak: Predvajajte nekaj zank s prijatelji

Priporočena: