Taula de continguts:

Melodia: 8 passos (amb imatges)
Melodia: 8 passos (amb imatges)

Vídeo: Melodia: 8 passos (amb imatges)

Vídeo: Melodia: 8 passos (amb imatges)
Vídeo: Музыка для очищения ауры и увеличения положительной энергии | Соединитесь с Энергией Вселенной 2024, Desembre
Anonim
Image
Image
Comprensió del flux
Comprensió del flux

Al costat dels nombrosos avantatges i solucions tecnològiques que permeten treballar des de casa, es manté la dificultat de formular i crear suport vital entre els companys de feina. MELODY és un dispositiu digital-físic que permet la creació de melodies musicals curtes col·laboratives. Els companys de feina coordinen el temps i el dispositiu estableix una jam session amb torns i diferents sons aleatoris. El primer participant estableix un ritme específic, després del qual cada participant afegeix la seva secció musical corresponent al ritme establert. Per tal de facilitar als usuaris sense antecedents musicals, el programari els ajuda a mantenir el ritme mitjançant el mostreig dels seus clics i l’ajust al ritme adequat. La sessió finalitza al cap d’uns 3 minuts quan tots els participants han acabat de gravar la seva part.

Com funciona?

Melody es basa en el maquinari ESP2866, que es comunica amb un servidor Node-Red mitjançant el protocol MQTT. El dispositiu tradueix les notes del reproductor en una cadena de caràcters que s’envia al servidor i des del servidor als altres jugadors. Això permet que tothom pugui reproduir i escoltar la melodia sense interrupcions de la seva connexió de xarxa.

La melodia té dos indicadors visuals principals. La primera és una tira LED que permet al jugador saber quan comença Loop i quan acaba i indica si és el torn del jugador. El segon és una pantalla LED al centre del producte, que s’utilitza per mostrar visualment la melodia existent. Un compte enrere de 3 a 1 indica començar a jugar i una pantalla de temps indica a l’usuari quan i com vol contribuir a la melodia del grup. La gravació es desa automàticament al núvol de l’empresa per al seu ús futur.

Aquest projecte va ser dissenyat per quatre estudiants del laboratori d’innovació de mitjans (MiLab) del Centre interdisciplinari Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar i Gad Stern. Amb l’assistència de Zvika Markfeld, Netta Ofer i Michal Leschinsky i l’orientació de Noa Morag i Oren Zuckerman.

gràcies a Tom Granot per crear un fantàstic instructiu que em va ajudar a aprendre a implementar algunes de les coses aquí (alguns dels passos aquí es basen en aquest fantàstic instructiu).

Subministraments

  • Impressora 3D
  • ESP8266
  • 7 botons
  • Matriu LED 8X8
  • Tira LED WS2812B
  • Amplificador I2S
  • Connector d'àudio femella de 3,5 polzades de 1/8 "(3,5 mm)
  • Resistència 4X 1K
  • Resistència 1X3K

Pas 1: entendre el flux

Comprensió del flux
Comprensió del flux
Comprensió del flux
Comprensió del flux

En aquest projecte hem intentat abordar alguns problemes:

  1. Com ho podem fer en línia perquè els jugadors puguin jugar al mateix temps?
  2. Com podem evitar les latències d’Internet i crear una experiència perfecta?
  3. Com podem fer que la música soni bé fins i tot per a persones sense formació musical?

Temporització i serialització de la música

Per resoldre el primer problema, vam mirar el protocol MIDI i vam intentar utilitzar-lo, però vam veure que és més robust que el que realment necessitàvem, també volíem que fos senzill per poder construir el primer prototip de treball. Així que ens vam inspirar en el MIDI i vam fer que el nostre bucle musical es representés per una cadena de números (de 0 a 5) vegades la mida del bucle que els jugadors (explicarem més endavant totes les matemàtiques musicals).

A la música, dividim els ritmes en barres musicals. Cada barra és bàsicament un segment de temps reduït que escollim utilitzar 4/4 (és a dir, 4 pulsacions en una barra musical), la més habitual.

A continuació, cada ritme es divideix en 4 finestres de mostreig, de manera que cada nota reproduïda s'alinea automàticament a una bona posició i també ens permetrà representar una cançó com una cadena de números per enviar al servidor.

Per ser amables amb jugadors sense formació musical, vam fer tres coses:

  1. Limiteu el nombre de tecles per fer que el jugador se centri en menys opcions.
  2. Hem agafat notes a la mateixa escala que toquen bé juntes, de manera que no hi haurà cap so de dissonància.
  3. Cada premsa s'ajusta a la "finestra" del ritme, per la qual cosa la música del reproductor s'allunya del ritme

Protocols de comunicació

Llavors, després d’entendre la lògica que hi ha darrere de la música, com podem comunicar-la entre els nostres reproductors?

per a això, fem servir MQTT, un protocol de xarxa de publicació-subscripció que transporta missatges entre dispositius.

cada jugador està subscrit a dos temes: el bucle (obtenir el bucle més actual) i el torn (obté l'identificador del jugador actual amb finalitats de sincronització).

Al seu torn, quan un jugador hagi acabat de reproduir la cançó, premrà el botó UP i el bucle (l’actualitzat) s’enviarà al corredor MQTT, que el transmetrà a tots els jugadors del canal del bucle.

aquest bucle romandrà "inactiu" fins que es completi el bucle actual i el substituirà. per tant, serà transparent per al jugador. també, ja que el nou bucle actualment es guarda localment al dispositiu del reproductor, no hi ha latència a Internet per a la música, de manera que hem resolt el segon problema.

Pas 2: Configuració del servidor - Ngrok

Configuració del servidor - Ngrok
Configuració del servidor - Ngrok
Configuració del servidor - Ngrok
Configuració del servidor - Ngrok

ngrok és un servei de túnels. Ens permet exposar un servei en execució local (en el nostre cas, Node-RED) al món exterior, sense la molèstia de configurar un servidor ni tractar registres DNS. Simplement executeu Node-RED a l'ordinador i, a continuació, executeu ngrok al mateix port on s'està executant Node-RED.

Això és tot: obtindreu un URL que podeu utilitzar per accedir a Node-RED des de qualsevol part del món, independentment de la xarxa a la qual estigui connectat.

Instal·lació i configuració

  1. Descarregueu ngrok per al vostre sistema operatiu des d’aquí.
  2. Seguiu el pas de la pàgina de descàrrega fins al pas "Activa'l".
  3. Al "Fire it up step", canvieu el 80 per 1883 i el http a tcp com a,./ngrok tcp 1883 en funció del vostre
  4. deseu l'URL i el número de port (que s'ha vist a la imatge) que necessitarem, més endavant.

Pas 3: Configuració del servidor - Node-Red

Configuració del servidor - Node-Red
Configuració del servidor - Node-Red

La lògica del servidor del projecte, Node-RED, és un entorn de programació visual que us permet connectar diversos programes (i maquinari).

Aquí vam fer la lògica de la comunicació entre tots els jugadors (compartir i rebre els bucles i coordinar els torns)

Instal·lació de Node-Red

seguiu els passos següents per carregar el flux Node-RED al vostre equip local:

  1. Node-RED necessita Node.js, instal·leu-lo des d’aquí
  2. instal·leu el propi Node-RED seguint les instruccions aquí.

Ara que teniu instal·lat Node-RED, executeu-lo seguint les instruccions del pas anterior i valideu-lo, podeu veure una pàgina de llenç buida. Ha d’estar ubicat a

Ara haureu d’importar el flux que hem utilitzat per a aquest projecte; el podeu trobar aquí i només heu de prémer importa afegir el fitxer JSON i prémer Implementa.

Instal·lació de Node-Red:

si mireu la imatge que s'adjunta a aquest pas, podeu veure que tenim 2 "accions" principals que rebem un bucle actual d'un dels nostres jugadors i després el transmetem a la resta de jugadors. a més, transmetem el nou torn a tots els jugadors. de manera que el joc es manté sincronitzat.

Pas 4: Configuració del servidor - MQTT (Mosquitto)

Configuració del servidor - MQTT (Mosquitto)
Configuració del servidor - MQTT (Mosquitto)

Com que Node-RED no té el seu propi broker MQTT, i haurem de comunicar-nos amb els nostres sensors i activadors mitjançant MQTT, utilitzarem un broker MQTT dedicat. Com que Node-RED recomana Mosquitto, aquest és el que farem servir. Vegeu aquí per obtenir informació sobre MQTT i per què s’utilitza sovint en projectes IoT.

Instal·lació i configuració

  1. Descarregueu Mosquitto des d’aquí i instal·leu-lo, tot segons el vostre sistema operatiu.
  2. Normalment, haureu de seguir les instruccions aquí per connectar Node-RED a Mosquitto. Tanmateix, si heu utilitzat el nostre flux, ja està preconfigurat per a vosaltres. Mentre instal·leu correctament el flux i Mosquitrro, i Mosquitto funcioni al port 1883 (en el qual s’executa per defecte), hauria de sortir fora de la caixa.
  3. Tingueu en compte que això significa que el corredor MQTT i el servidor Node-RED funcionen a la mateixa màquina. Això és útil per simplificar la comunicació dins del sistema. Consulteu la nota següent per obtenir més informació.

Supervisió del trànsit MQTT

He utilitzat MQTTfx per controlar el trànsit, és una gran eina amb una interfície gràfica d’usuari molt senzilla.

Pas 5: el codi

El codi
El codi

podeu trobar el codi a GitHub (amb tots els fitxers de dades i config.h)

Dependències:

abans de carregar el codi a l'esp2866, haureu d'instal·lar algunes biblioteques:

  1. libmad-8266 (descodifica la música des de SPIFF fins a I2S)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Pengeu els sons a l'ESP mitjançant SPIFF:

  1. segueix aquest gran instructable.
  2. afegiu la carpeta de dades al directori del codi font.
  3. A l'IDE Arduino, a Eines, canvieu la mida del flaix a "4 MB (FS: 3 MB TOA: ~ 512 KB)"
  4. També a Eines, premeu ESP2866 Sketch Data Upload

Configuració dels paràmetres:

després, aneu al fitxer config.h i afegiu les dades necessàries, com ara les credencials WIFI i l'URL i el port ngrok del pas anterior (consulteu la foto adjunta per obtenir-ne referència).

ps - Encara he afegit una funció de connexió automàtica per ajudar-vos a configurar les dades WIFI i ngrok des del vostre telèfon intel·ligent, ja que només era una primera prova de concepte, voldria afegir-la algun dia.

Establiu la quantitat de jugadors que desitgeu (aquest joc funciona millor per a 2-3 jugadors i, fora de la caixa, es carrega amb una gran varietat de sons per a 2 jugadors). però es pot ajustar fàcilment per obtenir-ne més:

per a cada jugador, afegiu un altre flux al vermell del node per publicar un bucle en un tema específic de l'usuari.

també podeu editar el so musical canviant aquesta matriu als vostres sons personalitzats:

aquí podeu veure tres tipus d’instruments (Chrods per al jugador 0, Lead per al jugador 1 i Bass per al jugador 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"};

Pas 6: imprimiu el model 3D

Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D
Imprimiu el model 3D

Per al primer pas, descarregueu el STL i imprimiu-los.

després de treure els suports i potser una mica de poliment (segons la resolució de la impressora)

pinteu-lo al color desitjat

Pas 7: Muntatge i soldadura

Muntatge i soldadura
Muntatge i soldadura

Així que bàsicament aquí és on passa la veritable màgia.

podeu seguir aquests esquemes i soldar-ho tot.

Tingueu en compte que podeu canviar la posició dels PIN. Recordeu-vos de canviar-lo també al codi.

l'A0 i l'I2S estan força fixats al seu lloc:

ja que l'A0 és per al pont de la resistència (fem servir la diferència de corrent per saber quin botó del 5 es va prémer, similar a aquest Instructables.

l'I2S té una codificació específica que podeu trobar aquí

Pas 8: reprodueix alguns bucles amb els teus amics

Recomanat: