Sisällysluettelo:

Melodia: 8 vaihetta (kuvilla)
Melodia: 8 vaihetta (kuvilla)

Video: Melodia: 8 vaihetta (kuvilla)

Video: Melodia: 8 vaihetta (kuvilla)
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! 2024, Marraskuu
Anonim
Image
Image
Virtauksen ymmärtäminen
Virtauksen ymmärtäminen

Monien etujen ja teknologisten ratkaisujen ohella, jotka mahdollistavat työskentelyn kotoa käsin, on edelleen vaikeaa muotoilla ja luoda tukea työtovereiden keskuudessa. MELODY on digitaalinen ja fyysinen laite, joka mahdollistaa yhteistyössä syntyvien lyhyiden musiikkitukosten luomisen. Työtoverit koordinoivat aikaa ja laite asettaa jam-istunnon, jossa on käännöksiä ja erilaisia satunnaisia ääniä. Ensimmäinen osallistuja asettaa tietyn rytmin, jonka jälkeen jokainen osallistuja lisää oman musiikkiosionsa, joka vastaa asetettua rytmiä. Helpottaakseen käyttäjiä, joilla ei ole musiikillista taustaa, ohjelmisto auttaa heitä pysymään vauhdissa ottamalla näytteitä napsautuksistaan ja sopeutumalla oikeaan rytmiin. Istunto päättyy noin 3 minuutin kuluttua, kun kaikki osallistujat ovat lopettaneet osan tallentamisen.

Kuinka se toimii?

Melody perustuu ESP2866-laitteistoon, joka kommunikoi solmupunaisen palvelimen kanssa MQTT-protokollan kautta. Laite muuntaa soittimen muistiinpanot merkkijonoksi, joka lähetetään palvelimelle ja palvelimelta takaisin muille pelaajille. Näin kaikki voivat soittaa ja kuulla sävellyksen keskeytymättä verkkoyhteydestään.

Melodialla on kaksi visuaalista ilmaisinta. Ensimmäinen on LED -nauha, joka ilmoittaa pelaajalle, milloin Loop alkaa ja milloin se päättyy, ja osoittaa, onko pelaajan vuoro. Toinen on tuotteen keskellä oleva LED -näyttö, jolla näytetään visuaalisesti olemassa oleva viritys. Lähtölaskenta 3: stä 1: ään osoittaa pelaamisen aloittamisen ja ajoitusnäyttö ohjaa käyttäjää milloin ja miten hän haluaa osallistua ryhmän melodiaan. Tallenne tallennetaan automaattisesti yrityksen pilveen tulevaa käyttöä varten.

Tämän projektin suunnittelivat neljä opiskelijaa Mediainnovaatiolaboratoriossa (MiLab) monitieteisessä Herzliya-keskuksessa (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar ja Gad Stern. Avustavat Zvika Markfeld, Netta Ofer ja Michal Leschinsky sekä Noa Morag ja Oren Zuckerman.

kiitos Tom Granotille loistavan ohjeen luomisesta, joka auttoi minua oppimaan toteuttamaan joitain asioita täällä (jotkut vaiheet täällä on mallinnettu tämän suuren ohjeen mukaan).

Tarvikkeet

  • 3D tulostin
  • ESP8266
  • 7 painiketta
  • 8X8 LED -matriisi
  • WS2812B LED -nauha
  • I2S -vahvistin
  • Naaras 1/8 "(3,5 mm) 4 -napainen ääniliitin
  • 4X 1K vastus
  • 1X3K vastus

Vaihe 1: Virtauksen ymmärtäminen

Virtauksen ymmärtäminen
Virtauksen ymmärtäminen
Virtauksen ymmärtäminen
Virtauksen ymmärtäminen

Tässä projektissa yritimme ratkaista joitain ongelmia:

  1. Miten voimme tehdä sen verkossa, jotta pelaajat voivat pelata samanaikaisesti?
  2. Miten voimme kiertää Internetin viiveet ja luoda saumattoman kokemuksen?
  3. Kuinka voimme saada musiikin kuulostamaan hyvältä myös ihmisille, joilla ei ole musiikillista taustaa?

Musiikin ajoitus ja sarjoittaminen

Ensimmäisen ongelman ratkaisemiseksi tarkastelimme MIDI -protokollaa ja yritimme käyttää sitä, mutta huomasimme, että se on vankempi kuin mitä todella tarvitsimme, ja halusimme todella tehdä siitä yksinkertaisen, jotta voimme rakentaa ensimmäisen toimivan prototyypin. Joten saimme inspiraatiota MIDI: stä ja teimme musiikkisilmukamme numerojonona (0-5) kertaa silmukoiden koon ajan soittajilla (selitämme kaiken musiikillisen matematiikan myöhemmin).

Musiikissa jaamme rytmit musiikkipalkkeihin. Jokainen baari on pohjimmiltaan pienimuotoinen segmentti, jota käytämme 4/4 (eli 4 lyöntiä musiikkipalkissa) - yleisin.

Jokainen lyönti jaetaan sitten 4 näytteenottoikkunaan, joten jokainen soitettu nuotti kohdistetaan automaattisesti hyvään asentoon ja antaa meille myös mahdollisuuden edustaa kappaletta palvelimelle lähetettäväksi numerojonona.

Jotta olisimme ystävällisiä pelaajille, joilla ei ole musiikillista taustaa, teimme kolme asiaa:

  1. Rajoita näppäinten määrää saadaksesi pelaajan keskittymään vähemmän vaihtoehtoihin.
  2. Valitsimme saman mittakaavan nuotit, jotka soittavat hyvin yhdessä, joten dissonanssiääntä ei kuulu.
  3. Jokainen painallus asetetaan rytmin "ikkunaan", joten vieraan musiikin soittaminen vie rytmin

Viestintäprotokollat

Joten kun olemme ymmärtäneet musiikin taustalla olevan logiikan, kuinka voimme kommunikoida sen pelaajiemme välillä?

tätä varten käytämme MQTT: tä, julkaisu-tilaus-verkkoprotokollaa, joka kuljettaa viestejä laitteiden välillä.

jokainen pelaaja on tilannut kaksi aihetta: silmukka (hanki uusin silmukka) ja vuoro (saa nykyisen pelaajan tunnuksen synkronointia varten).

Kun pelaaja on lopettanut virityksen, hän vuorostaan painaa YLÖS -painiketta ja silmukka (päivitetty) lähetetään MQTT -välittäjälle, joka lähettää sen takaisin kaikille silmukkakanavan pelaajille.

tämä silmukka pysyy "lepotilassa", kunnes nykyinen silmukka toistetaan ja korvaa sen. niin se on läpinäkyvä pelaajalle. myös koska uusi silmukka tallennetaan tällä hetkellä paikallisesti soitinlaitteeseen, musiikilla ei ole Internet -latenssia, joten ratkaisimme toisen ongelman.

Vaihe 2: Palvelimen asettaminen - Ngrok

Palvelimen asettaminen - Ngrok
Palvelimen asettaminen - Ngrok
Palvelimen asettaminen - Ngrok
Palvelimen asettaminen - Ngrok

ngrok on tunnelipalvelu. Sen avulla voimme paljastaa paikallisesti toimivan palvelun (tässä tapauksessa Node -RED) ulkomaailmaan - ilman vaivaa palvelimen asentamisesta tai DNS -tietueiden käsittelystä. Suoritat yksinkertaisesti Node-RED tietokoneellasi ja sitten ngrok samassa portissa, jossa Node-RED on käynnissä.

Siinä kaikki - saat URL -osoitteen, jonka avulla voit käyttää Node -REDia kaikkialta maailmasta riippumatta siitä, mihin verkkoon se on kytketty.

Asennus ja kokoonpano

  1. Lataa ngrok käyttöjärjestelmällesi täältä.
  2. Noudata lataussivun ohjeita, kunnes "Sytytä se" -vaihe.
  3. Vaihda "Fire it up" -vaiheessa 80 arvoon 1883 - ja http tcp: ksi,./ngrok tcp 1883 riippuen
  4. Tallenna URL -osoite ja portin numero (näkyy kuvassa) tarvitsemme myöhemmin.

Vaihe 3: Palvelimen asetus - solmu -punainen

Palvelimen asetus - solmu -punainen
Palvelimen asetus - solmu -punainen

Projektin palvelinlogiikka Node-RED on visuaalinen ohjelmointiympäristö, jonka avulla voit yhdistää erilaisia ohjelmistoja (ja laitteistoja!).

Täällä teimme logiikan kaikkien pelaajien välisestä viestinnästä (silmukoiden jakaminen ja vastaanottaminen sekä vuorojen koordinointi)

Node-Redin asennus

lataa Node-RED-kulku paikalliseen tietokoneeseen seuraavasti:

  1. Node-RED vaatii Node.js, asenna se täältä
  2. asenna Node-RED itse käyttämällä tässä annettuja ohjeita.

Nyt kun Node-RED on asennettu, suorita se yllä olevan vaiheen ohjeiden mukaisesti ja vahvista, että näet tyhjän kanvasivun. Sen pitäisi sijaita osoitteessa

Sinun on nyt tuotava kulku, jota käytimme tässä projektissa, löydät sen täältä ja paina vain tuonti lisää JSON -tiedosto ja paina Ota käyttöön.

Punaisen solmun asennus:

Jos katsot tähän vaiheeseen liitettyä kuvaa, näet, että meillä on kaksi päätoimintoa, vastaanotamme nykyisen silmukan yhdeltä pelaajalta ja välitämme sen sitten kaikille muille pelaajille. Lisäksi lähetämme uuden vuoron kaikille pelaajille. joten peli pysyy synkronoituna.

Vaihe 4: Palvelimen asettaminen - MQTT (Mosquitto)

Palvelimen asettaminen - MQTT (Mosquitto)
Palvelimen asettaminen - MQTT (Mosquitto)

Koska Node-RED: llä ei ole omaa MQTT-välittäjää, ja meidän on kommunikoitava anturiemme ja aktivoijiemme kanssa MQTT: n kautta, käytämme omaa MQTT-välittäjää. Koska Node-RED suosittelee Mosquitoa, käytämme tätä. Katso täältä tietoa MQTT: stä ja miksi sitä käytetään usein IoT -projekteissa.

Asennus ja kokoonpano

  1. Lataa Mosquitto täältä ja asenna se käyttöjärjestelmän mukaan.
  2. Normaalisti sinun on noudatettava tässä annettuja ohjeita yhdistääksesi Node-RED Mosquitto -laitteeseen. Jos kuitenkin käytit kulkuamme, se on jo valmiiksi määritetty sinulle. Niin kauan kuin asennat virtauksen ja Mosquitrron oikein ja Mosquitto toimii portissa 1883 (jolla se toimii oletusarvoisesti), sen pitäisi toimia heti.
  3. Huomaa, että tämä tarkoittaa, että MQTT-välittäjä ja Node-RED-palvelimesi toimivat samalla koneella. Tästä on hyötyä järjestelmän sisäisen viestinnän yksinkertaistamiseksi. Katso lisätietoja alla olevasta huomautuksesta.

MQTT -liikenteen seuranta

Käytin MQTTfx: ää liikenteen seurantaan, se on loistava työkalu, jolla on hyvin yksinkertainen käyttöliittymä.

Vaihe 5: Koodi

Koodi
Koodi

löydät koodin GitHubista (kaikki datatiedostot ja config.h)

Riippuvuudet:

ennen kuin lataat koodin esp2866: een, sinun on asennettava muutama kirjasto:

  1. libmad-8266 (purkaa musiikki SPIFF: stä I2S: ään)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Lataa äänet ESP: hen SPIFF: n avulla:

  1. noudata tätä suurta ohjeistusta.
  2. lisää datakansio lähdekoodiluetteloon.
  3. Vaihda Arduino IDE: n Työkalut -kohdassa Flash -kooksi "4 Mt (FS: 3 Mt TOA: ~ 512 kt)"
  4. Myös Työkalut -kohdassa Paina ESP2866 Sketch Data Upload

Parametrien asettaminen:

siirry sen jälkeen config.h -tiedostoon ja lisää vaaditut tiedot, kuten WIFI -kirjautumistiedot ja ngrok -URL -osoite ja portti edellisestä vaiheesta (tarkista liitteenä oleva kuva).

p.s-Olen vielä lisännyt automaattisen yhdistämisominaisuuden, joka auttaa sinua asettamaan WIFI- ja ngrok-tiedot älypuhelimestasi, koska se oli vain ensimmäinen todiste konseptista, haluaisin lisätä sen jonain päivänä.

Aseta haluamasi soittimen määrä (tämä peli toimii parhaiten 2-3 pelaajalle, ja se on ladattu joukolla ääniä kahdelle pelaajalle). mutta voidaan helposti säätää lisää:

lisää jokaiselle pelaajalle toinen kulku solmu-punaisessa, jotta voit julkaista silmukan käyttäjäkohtaisen aiheen alla.

Voit myös muokata musiikkiääntä yhdistämällä tämän taulukon mukautettuihin ääniisi:

Täällä voit nähdä 3 erilaista soitinta (Chrods pelaajalle 0, lyijy pelaajalle 1 ja basso pelaajalle 2)

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

Vaihe 6: Tulosta 3D -malli

Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli
Tulosta 3D -malli

Lataa ensin STL ja tulosta ne.

tukien poistamisen ja hiukan hiomisen jälkeen (tulostimen tarkkuudesta riippuen)

maalaa haluttuun väriin

Vaihe 7: Kokoaminen ja hitsaus

Kokoaminen ja hitsaus
Kokoaminen ja hitsaus

Joten periaatteessa tässä tapahtuu todellinen taikuus.

voit seurata näitä kaavioita ja hitsata kaikki yhteen.

Muista, että voit muuttaa PIN -koodien sijaintia. Muista muuttaa se myös koodissa.

A0 ja I2S ovat melko paikallaan:

koska A0 on vastussilta (käytämme virran eroa tietääksemme, mitä painiketta viidestä painettiin - samanlainen kuin tämä ohje.

I2S: llä on erityinen koodaus, jonka löydät täältä

Vaihe 8: Pelaa joitain silmukoita ystäviesi kanssa

Suositeltava: