Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Virtauksen ymmärtäminen
- Vaihe 2: Palvelimen asettaminen - Ngrok
- Vaihe 3: Palvelimen asetus - solmu -punainen
- Vaihe 4: Palvelimen asettaminen - MQTT (Mosquitto)
- Vaihe 5: Koodi
- Vaihe 6: Tulosta 3D -malli
- Vaihe 7: Kokoaminen ja hitsaus
- Vaihe 8: Pelaa joitain silmukoita ystäviesi kanssa
Video: Melodia: 8 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
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
Tässä projektissa yritimme ratkaista joitain ongelmia:
- Miten voimme tehdä sen verkossa, jotta pelaajat voivat pelata samanaikaisesti?
- Miten voimme kiertää Internetin viiveet ja luoda saumattoman kokemuksen?
- 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:
- Rajoita näppäinten määrää saadaksesi pelaajan keskittymään vähemmän vaihtoehtoihin.
- Valitsimme saman mittakaavan nuotit, jotka soittavat hyvin yhdessä, joten dissonanssiääntä ei kuulu.
- 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
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
- Lataa ngrok käyttöjärjestelmällesi täältä.
- Noudata lataussivun ohjeita, kunnes "Sytytä se" -vaihe.
- Vaihda "Fire it up" -vaiheessa 80 arvoon 1883 - ja http tcp: ksi,./ngrok tcp 1883 riippuen
- Tallenna URL -osoite ja portin numero (näkyy kuvassa) tarvitsemme myöhemmin.
Vaihe 3: 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:
- Node-RED vaatii Node.js, asenna se täältä
- 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)
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
- Lataa Mosquitto täältä ja asenna se käyttöjärjestelmän mukaan.
- 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.
- 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
löydät koodin GitHubista (kaikki datatiedostot ja config.h)
Riippuvuudet:
ennen kuin lataat koodin esp2866: een, sinun on asennettava muutama kirjasto:
- libmad-8266 (purkaa musiikki SPIFF: stä I2S: ään)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Lataa äänet ESP: hen SPIFF: n avulla:
- noudata tätä suurta ohjeistusta.
- lisää datakansio lähdekoodiluetteloon.
- Vaihda Arduino IDE: n Työkalut -kohdassa Flash -kooksi "4 Mt (FS: 3 Mt TOA: ~ 512 kt)"
- 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
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
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:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite