Sisukord:

Meloodia: 8 sammu (piltidega)
Meloodia: 8 sammu (piltidega)

Video: Meloodia: 8 sammu (piltidega)

Video: Meloodia: 8 sammu (piltidega)
Video: Как проверить свечи зажигания при помощи мультиметра🙀 и вообще зачем это нужно делать? 2024, November
Anonim
Image
Image
Voolu mõistmine
Voolu mõistmine

Lisaks paljudele eelistele ja tehnoloogilistele lahendustele, mis võimaldavad kodust tööd teha, on endiselt raskusi töökaaslaste seas elutoe formuleerimise ja loomisega. MELODY on digitaalne-füüsiline seade, mis võimaldab luua koostööl põhinevaid lühikesi muusikalisi moose. Töökaaslased koordineerivad aega ja seade määrab pöörete ja erinevate juhuslike helidega moosiseansi. Esimene osaleja määrab kindla rütmi, misjärel lisab iga osaleja oma muusikalise lõigu, mis vastab määratud rütmile. Muusikalise taustaga kasutajate hõlbustamiseks aitab tarkvara neil sammu pidada, proovides klikke ja kohanedes sobiva rütmiga. Seanss lõpeb umbes 3 minuti pärast, kui kõik osalejad on oma osa salvestamise lõpetanud.

Kuidas see töötab?

Melody põhineb riistvaral ESP2866, mis suhtleb sõlmpunase serveriga üle MQTT protokolli. Seade teisendab mängija märkmed tähemärkideks, mis saadetakse serverisse ja serverist tagasi teistele mängijatele. See võimaldab kõigil mängida ja kuulda meloodiat ilma võrguühenduseta.

Meloodial on kaks peamist visuaalset indikaatorit. Esimene on LED -riba, mis annab mängijale teada, millal Loop algab ja millal see lõpeb, ning näitab, kas on mängija kord. Teine on toote keskel olev LED -ekraan, mida kasutatakse olemasoleva viisi visuaalseks kuvamiseks. Pöördloendus 3 -st 1 -ni viitab mängimise alustamisele ja ajastusekraan suunab kasutajat, millal ja kuidas ta soovib rühma meloodiasse panustada. Salvestis salvestatakse automaatselt ettevõtte pilve edaspidiseks kasutamiseks.

Selle projekti kavandasid neli tudengit meediauuenduslaboris (MiLab) interdistsiplinaarses keskuses Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar ja Gad Stern. Zvika Markfeldi, Netta Oferi ja Michal Leschinsky abiga ning Noa Moragi ja Oren Zuckermani juhendamisel.

aitäh Tom Granotile suurepärase juhendatava loomise eest, mis aitas mul õppida mõningaid asju siin rakendama (mõned siinsed sammud on selle suurepärase juhendatava järgi modelleeritud).

Tarvikud

  • 3D printer
  • ESP8266
  • 7 nuppu
  • 8x8 LED maatriks
  • WS2812B LED -riba
  • I2S võimendi
  • Naiste 1/8 "(3,5 mm) 4 -pooline helipistik
  • 4X 1K takisti
  • 1X3K takisti

1. samm: voo mõistmine

Voolu mõistmine
Voolu mõistmine
Voolu mõistmine
Voolu mõistmine

Selle projektiga püüdsime lahendada mõningaid probleeme:

  1. Kuidas saaksime selle võrgus teha, et mängijad saaksid samal ajal mängida?
  2. Kuidas saaksime Interneti latentsusaegadest mööda minna ja sujuva kogemuse luua?
  3. Kuidas saame panna muusika kõlama hästi ka ilma muusikalise taustata inimestele?

Muusika ajastus ja serialiseerimine

Esimese probleemi lahendamiseks vaatasime MIDI -protokolli ja proovisime seda kasutada, kuid nägime, et see on tugevam kui see, mida tegelikult vajame, samuti tahtsime selle lihtsaks muuta, et saaksime luua esimese töötava prototüübi. Nii et saime inspiratsiooni MIDI-st ja tegime oma muusikalise silmuse numbrite jadaga (0–5), mis on mängijate silmuste suuruse kordne (me selgitame kogu muusikalise matemaatika hiljem).

Muusikas jagasime rütmid muusikalisteks ribadeks. Iga riba on põhimõtteliselt väikese aja segment, mida me kasutame 4/4 (see tähendab 4 lööki muusikalises taktis) - kõige tavalisem.

Seejärel jagatakse iga löök neljaks proovivõtuaknaks, nii et iga mängitav noot joondatakse automaatselt heale positsioonile ja võimaldab meil ka laulu esitada numbrina, mida serverisse saata.

Selleks, et olla muusikataustaga mängijate suhtes sõbralikud, tegime kolm asja:

  1. Piirake klahvide arvu, et mängija keskenduks vähematele võimalustele.
  2. Valisime sama skaalaga noote, mis mängivad hästi koos, nii et dissonantsi ei teki.
  3. Iga vajutus on seatud rütmi "aknale", seega on mängija muusika rütmist võõras

Suhtlusprotokollid

Niisiis, kui oleme muusika loogikast aru saanud, kuidas saame seda oma mängijate vahel suhelda?

selleks kasutame võrguprotokolli MQTT, mis edastab sõnumeid seadmete vahel.

iga mängija on tellinud kaks teemat: tsükkel (saada uusim silmus) ja kord (saab sünkroonimise eesmärgil praeguse mängija ID).

Kui mängija on viimistluse lõpetanud, vajutab ta omakorda nuppu ÜLES ja silmus (uuendatud) saadetakse MQTT maaklerile, kes edastab selle tagasi kõigile silmusekanali mängijatele.

see tsükkel jääb seisma, kuni praegune tsükkel on mängitud ja asendab selle. seega on see mängijale läbipaistev. ka kuna uus tsükkel salvestatakse praegu mängija seadmesse kohalikult, pole muusika Interneti -latentsusaega ja seega lahendasime teise probleemi.

2. samm: serveri seadistamine - Ngrok

Serveri seadistamine - Ngrok
Serveri seadistamine - Ngrok
Serveri seadistamine - Ngrok
Serveri seadistamine - Ngrok

ngrok on tunneliteenus. See võimaldab meil paljastada kohapeal töötava teenuse (meie puhul Node -RED) välismaailmale - ilma probleemideta serveri seadistamise või DNS -kirjetega tegelemisega. Lihtsalt käivitage oma arvutis Node-RED ja seejärel käivitage ngrok samas pordis, kus Node-RED töötab.

See on kõik - saate URL -i, mille abil saate Node -RED -i juurde pääseda kõikjal maailmas, olenemata sellest, millisesse võrku see on ühendatud.

Paigaldamine ja seadistamine

  1. Laadige siit alla oma operatsioonisüsteemi jaoks ngrok.
  2. Järgige allalaadimislehe juhiseid kuni sammuni „Käivita see”.
  3. Vahetage "Käivita üles" etapis 80 väärtuseks 1883 - ja http tcp -ks, nagu on./ngrok tcp 1883 sõltuvalt teie
  4. salvestage URL ja pordi number (on pildil näha), vajame hiljem.

3. samm: serveri seadistamine - sõlm punane

Serveri seadistamine - sõlme -punane
Serveri seadistamine - sõlme -punane

Projekti serveriloogika Node-RED on visuaalne programmeerimiskeskkond, mis võimaldab ühendada erinevat tarkvara (ja riistvara!).

Siin tegime kõigi mängijate vahelise suhtluse loogika (silmuste jagamine ja vastuvõtmine ning käikude koordineerimine)

Punase sõlme paigaldamine

meie Node-RED voo laadimiseks kohalikku arvutisse järgige järgmisi samme:

  1. Node-RED nõuab Node.js, installige see siit
  2. installige Node-RED ise, kasutades siin toodud juhiseid.

Nüüd, kui olete installinud Node-RED, käivitage see ülaltoodud juhiste järgi ja kinnitage, et näete tühja lõuendilehte. See peaks asuma aadressil

Nüüd peate importima voo, mida me selle projekti jaoks kasutasime. Selle leiate siit ja vajutage lihtsalt nuppu Import, lisage JSON -fail ja vajutage Juuruta.

Punase sõlme installimine:

kui vaatate sellele sammule lisatud pilti, näete, et meil on kaks peamist "toimingut", saame ühelt mängijalt vooluringi ja seejärel edastame selle kõigile teistele mängijatele. lisaks edastasime uue pöörde kõigile mängijatele. nii et mäng jääb sünkroonis.

4. samm: serveri seadistamine - MQTT (Mosquitto)

Serveri seadistamine - MQTT (Mosquitto)
Serveri seadistamine - MQTT (Mosquitto)

Kuna Node-RED-il pole oma MQTT-vahendajat ja peame suhtlema oma andurite ja aktiveerijatega MQTT-i kaudu, kasutame spetsiaalset MQTT-maaklerit. Kuna Node-RED soovitab Mosquitto, kasutame seda. Siit leiate teavet MQTT ja selle kohta, miks seda sageli IoT -projektides kasutatakse.

Paigaldamine ja seadistamine

  1. Laadige Mosquitto siit alla ja installige see kõik vastavalt oma opsüsteemile.
  2. Tavaliselt peate Node-RED ühendamiseks Mosquittoga järgima siin toodud juhiseid. Kui aga kasutasite meie voogu, on see teie jaoks juba eelseadistatud. Niikaua kui installite voo ja Mosquitrro korralikult ning Mosquitto töötab pordis 1883 (millel see vaikimisi töötab), peaks see karbist välja töötama.
  3. Pange tähele, et see tähendab, et MQTT maakler ja teie Node-RED server töötavad samas masinas. See on kasulik süsteemisisese suhtluse lihtsustamiseks. Lisateabe saamiseks vaadake allolevat märkust.

MQTT liikluse jälgimine

Kasutasin liikluse jälgimiseks MQTTfxi, see on suurepärane tööriist väga lihtsa GUI -ga.

Samm: kood

Kood
Kood

koodi leiate GitHubist (koos kõigi andmefailide ja konfiguratsiooniga h)

Sõltuvused:

enne koodi esp2866 laadimist peate installima mõned teegid:

  1. libmad-8266 (dekodeerige muusika SPIFF-ist I2S-i)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Laadige helid ESP -sse üles SPIFF -i abil:

  1. järgige seda suurepärast juhendit.
  2. lisage andmekaust lähtekoodi kataloogi.
  3. Muutke Arduino IDE -s Tööriistad välklambi suuruseks "4 MB (FS: 3 MB TOA: ~ 512 KB)"
  4. Ka tööriistade all Vajutage ESP2866 Sketch Data Upload

Parameetrite seadistamine:

pärast seda minge faili config.h ja lisage nõutavad andmed, nagu WIFI mandaat ning eelmise sammu ngrok URL ja port (vaadake lisatud fotot).

p.s-Olen veel lisanud automaatse ühendamise funktsiooni, mis aitab teil nutitelefonist WIFI- ja ngrok-andmeid seadistada, kuna see oli alles esimene kontseptsiooni tõestus, tahaksin selle mõnel päeval lisada.

Määrake soovitud mängija hulk (see mäng sobib kõige paremini 2-3 mängijale ja karbist välja laaditakse see kahe mängija jaoks erinevate helidega). kuid seda saab hõlpsasti reguleerida rohkemateks:

iga mängija jaoks lisage sõlme punasesse teise voog, et avaldada silmust kasutajapõhises teemas.

Samuti saate muusikalist heli muuta, koondades selle massiivi oma kohandatud helideks:

siin näete kolme tüüpi instrumente (Chrods mängijale 0, Lead mängijale 1 ja Bass mängijale 2)

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

Samm: printige 3D -mudel

Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel
Printige 3D -mudel

Esimese sammuna laadige alla STL ja printige need.

pärast tugede eemaldamist ja võib -olla natuke lihvimist (olenevalt printeri eraldusvõimest)

värvige see soovitud värviga

Samm: kokkupanek ja keevitamine

Kokkupanek ja keevitamine
Kokkupanek ja keevitamine

Nii et põhimõtteliselt siin toimub tõeline maagia.

saate neid skeeme järgida ja kõik kokku keevitada.

pidage meeles, et saate muuta PIN -koodide asukohta, lihtsalt pidage meeles, et muutke seda ka koodis.

A0 ja I2S on üsna paigas:

kuna A0 on takisti silla jaoks (me kasutame voolu erinevust, et teada saada, millist nuppu viiest vajutati - sarnaselt selle juhendiga.

I2S -il on konkreetne kodeering, mille leiate siit

8. samm: mängige oma sõpradega mõnda silmust

Soovitan: