Obsah:

Melody: 8 kroků (s obrázky)
Melody: 8 kroků (s obrázky)

Video: Melody: 8 kroků (s obrázky)

Video: Melody: 8 kroků (s obrázky)
Video: how to draw KUROMI from hello kitty 2024, Listopad
Anonim
Image
Image
Pochopení toku
Pochopení toku

Vedle mnoha výhod a technologických řešení, která umožňují práci z domova, přetrvává obtížnost formulování a vytváření podpory života mezi spolupracovníky. MELODY je digitálně-fyzické zařízení, které umožňuje vytváření krátkých hudebních jam ve spolupráci. Spolupracovníci koordinují čas a zařízení nastaví jam session s odbočkami a různými náhodnými zvuky. První účastník nastaví konkrétní rytmus, načež každý účastník přidá vlastní hudební sekci odpovídající nastavenému rytmu. Aby to bylo jednodušší pro uživatele bez hudebního pozadí, software jim pomáhá držet krok vzorkováním jejich klikání a přizpůsobováním příslušnému rytmu. Relace končí přibližně po 3 minutách, když všichni účastníci dokončili nahrávání své části.

Jak to funguje?

Melody je založen na hardwaru ESP2866, který komunikuje se serverem Node-Red prostřednictvím protokolu MQTT. Zařízení převádí poznámky hráče do řetězce znaků, který je odeslán na server a ze serveru zpět ostatním hráčům. To umožňuje každému hrát a slyšet melodii bez přerušení ze svého síťového připojení.

Melody má dva hlavní vizuální indikátory. První je LED pás, který hráče informuje, kdy Loop začíná a kdy končí, a ukazuje, zda je řada na hráči. Druhým je LED displej ve středu produktu, který slouží k vizuálnímu zobrazení stávající melodie. Odpočítávání od 3 do 1 indikuje, že má začít hrát, a zobrazení časování nasměruje uživatele, kdy a jak chce přispět k melodii skupiny. Záznam se automaticky ukládá do cloudu společnosti pro budoucí použití.

Tento projekt navrhli čtyři studenti laboratoře pro inovace médií (MiLab) v interdisciplinárním centru Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar a Gad Stern. S pomocí Zviky Markfelda, Netty Ofer a Michala Leschinského a vedení Noa Morag a Oren Zuckerman.

díky Tomu Granotovi za vytvoření skvělého instruktážního programu, který mi pomohl naučit se implementovat některé věci zde (některé kroky zde jsou modelovány podle tohoto skvělého instruktážního programu).

Zásoby

  • 3D tiskárna
  • ESP8266
  • 7 tlačítek
  • Matice LED 8X8
  • WS2812B LED pásek
  • Zesilovač I2S
  • Samičí 1/8 "(3,5 mm) 4pólový audio konektor
  • 4X 1K odpor
  • Rezistor 1X3K

Krok 1: Porozumění toku

Pochopení toku
Pochopení toku
Pochopení toku
Pochopení toku

V tomto projektu jsme se pokusili vyřešit některé problémy:

  1. Jak to můžeme udělat online, aby hráči mohli hrát současně?
  2. Jak můžeme obejít latence na internetu a vytvořit bezproblémový zážitek?
  3. Jak můžeme zajistit, aby hudba zněla dobře i pro lidi bez hudebního pozadí?

Načasování a serializace hudby

Abychom vyřešili první problém, podívali jsme se na MIDI protokol a pokusili se ho použít, ale viděli jsme, že je robustnější než to, co jsme ve skutečnosti potřebovali. Také jsme to opravdu chtěli zjednodušit, abychom mohli postavit první funkční prototyp. Vzali jsme si inspiraci z MIDI a vytvořili jsme naši hudební smyčku reprezentovanou řetězcem čísel (od 0 do 5) násobkem velikosti smyček a času hráčů (veškerou hudební matematiku vysvětlíme později).

V hudbě rozdělujeme rytmy do hudebních taktů. Každý takt je v zásadě malým časovým segmentem, který se rozhodneme použít 4/4 (což znamená 4 údery v hudebním pruhu) - nejběžnější.

Každý úder je poté rozdělen do 4 vzorkovacích oken, takže každá zahraná nota bude automaticky zarovnána do dobré polohy c a také nám umožní reprezentovat skladbu jako řetězec čísel, která se odešlou na server.

Abychom byli přátelští k hráčům bez hudebního vzdělání, udělali jsme tři věci:

  1. Omezte počet kláves, aby se hráč soustředil na méně možností.
  2. Vybírali jsme noty ve stejném měřítku, které spolu dobře hrají, takže nebude znít žádný nesoulad.
  3. Každé stisknutí je nastaveno na „okno“rytmu, čímž se hudba přehrávače odcizí do rytmu

Komunikační protokoly

Poté, co jsme pochopili logiku hudby, jak ji můžeme komunikovat mezi našimi hráči?

K tomu používáme MQTT, síťový protokol pro publikování a odběr, který přenáší zprávy mezi zařízeními.

každý hráč je přihlášen k odběru dvou témat: smyčka (získání nejaktuálnější smyčky) a tah (získá ID aktuálního hráče pro účely synchronizace).

Ve svém tahu, když hráč dokončí přehrávání melodie, stiskne tlačítko UP a smyčka (aktualizovaná) bude odeslána makléři MQTT, který ji pošle zpět všem hráčům na kanálu smyčky.

tato smyčka zůstane „nečinná“, dokud se aktuální smyčka nepřehraje a poté ji nahradí. bude tedy pro hráče transparentní. také proto, že nová smyčka je aktuálně uložena lokálně na zařízení přehrávače, neexistuje žádná internetová latence pro hudbu a tak jsme vyřešili druhý problém.

Krok 2: Nastavení serveru - Ngrok

Nastavení serveru - Ngrok
Nastavení serveru - Ngrok
Nastavení serveru - Ngrok
Nastavení serveru - Ngrok

ngrok je tunelovací služba. Umožňuje nám vystavit lokálně spuštěnou službu (v našem případě Node -RED) vnějšímu světu - bez starostí s nastavováním serveru nebo řešením záznamů DNS. Jednoduše spustíte Node-RED na počítači a poté spustíte ngrok na stejném portu, na kterém běží Node-RED.

To je vše - získáte adresu URL, pomocí které můžete přistupovat k Node -RED odkudkoli na světě, bez ohledu na to, ke které síti je připojen.

Instalace a konfigurace

  1. Stáhněte si ngrok pro svůj operační systém odtud.
  2. Postupujte podle pokynů na stránce stahování, až do kroku „Vypálit“.
  3. V kroku „Fire it up“vyměňte 80 za 1883 - a http na tcp jako v./ngrok tcp 1883 v závislosti na vašem
  4. uložte adresu URL a číslo portu (na obrázku je vidět), které budeme později potřebovat.

Krok 3: Nastavení serveru - Node -Red

Nastavení serveru - Node -Red
Nastavení serveru - Node -Red

Serverová logika projektu Node-RED je vizuální programovací prostředí, které vám umožňuje připojit různý software (a hardware!).

Zde jsme vytvořili logiku komunikace mezi všemi hráči (sdílení a přijímání smyček a koordinace zatáček)

Instalace Node-Red

podle následujících kroků načtěte náš tok Node-RED do místního počítače:

  1. Node-RED vyžaduje Node.js, nainstalujte jej odtud
  2. nainstalujte samotný Node-RED podle pokynů zde.

Nyní, když máte Node-RED nainstalovaný, spusťte jej podle pokynů v předchozím kroku a ověřte, že vidíte prázdnou stránku na plátně. Měl by být umístěn v

Nyní budete muset importovat tok, který jsme použili pro tento projekt, najdete ho zde a stačí stisknout import, přidat soubor JSON a stisknout nasadit.

Instalace Node-Red:

pokud se podíváte na obrázek, který je připojen k tomuto kroku, můžete vidět, že máme 2 hlavní „akce“, přijmeme aktuální smyčku od jednoho z našich hráčů a poté ji přeneseme všem ostatním hráčům. navíc nový tah vysíláme všem hráčům. takže hra zůstane synchronizovaná.

Krok 4: Nastavení serveru - MQTT (Mosquitto)

Nastavení serveru - MQTT (Mosquitto)
Nastavení serveru - MQTT (Mosquitto)

Protože Node-RED nemá vlastního MQTT brokera a my budeme muset komunikovat s našimi senzory a aktivátory přes MQTT, použijeme vyhrazeného MQTT brokera. Protože Node-RED doporučuje Mosquitto, použijeme právě tento. Zde naleznete několik informací o MQTT a proč se často používá v projektech IoT.

Instalace a konfigurace

  1. Stáhněte si Mosquitto odtud a nainstalujte jej, vše podle vašeho operačního systému.
  2. Pro připojení Node-RED k Mosquitto byste normálně museli postupovat podle zde uvedených pokynů. Pokud jste však použili náš tok, je již pro vás předem nakonfigurován. Dokud správně nainstalujete flow a Mosquitrro a Mosquitto běží na portu 1883 (na kterém ve výchozím nastavení běží), mělo by fungovat.
  3. Všimněte si toho, že to znamená, že broker MQTT a váš server Node-RED běží na stejném počítači. To je užitečné pro zjednodušení komunikace uvnitř systému. Další informace naleznete v poznámce níže.

Monitorování provozu MQTT

Ke sledování provozu jsem použil MQTTfx, je to skvělý nástroj s velmi jednoduchým GUI.

Krok 5: Kód

Kód
Kód

kód najdete v GitHubu (se všemi datovými soubory a konfigurací.h)

Závislosti:

před načtením kódu do esp2866 budete muset nainstalovat několik knihoven:

  1. libmad-8266 (dekódování hudby z SPIFF a do I2S)
  2. Klient EspMQTTC
  3. ESP8266 Wi -Fi
  4. Adafruit_NeoPixel

Nahrajte zvuky do ESP pomocí SPIFF:

  1. následujte tento skvělý návod.
  2. přidejte datovou složku do adresáře zdrojového kódu.
  3. V Arduino IDE v části Nástroje změňte velikost Flash na „4 MB (FS: 3 MB TOA: ~ 512 kB)“
  4. Také v nabídce Nástroje Stiskněte ESP2866 Nahrání dat skici

Nastavení parametrů:

poté přejděte do souboru config.h a přidejte požadovaná data, jako jsou přihlašovací údaje WIFI a adresu URL a port ngrok z předchozího kroku (podívejte se na přiloženou fotografii jako referenci).

p.s-Ještě jsem přidal funkci automatického připojení, která vám pomůže nastavit data WIFI a ngrok z vašeho chytrého telefonu, protože to byl jen první důkaz konceptu, rád bych to jednoho dne přidal.

Nastavte požadovaný počet hráčů (tato hra funguje nejlépe pro 2–3 hráče a po vybalení z krabice je nabitá řadou zvuků pro 2 hráče). ale lze je snadno upravit pro více:

pro každého hráče přidejte další tok v uzlu-červená, abyste publikovali smyčku v rámci tématu specifického pro uživatele.

také můžete upravit hudební zvuk přepojením tohoto pole do vašich vlastních zvuků:

zde vidíte 3 druhy nástrojů (Chrods pro hráče 0, Lead pro hráče 1 a Bass pro hráče 2)

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

Krok 6: Vytiskněte 3D model

Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model
Vytiskněte 3D model

V prvním kroku si stáhněte STL a vytiskněte je.

po odstranění podpěr a možná trochu pískování (v závislosti na rozlišení tiskárny)

namalujte na požadovanou barvu

Krok 7: Sestavení a svařování

Sestavování a svařování
Sestavování a svařování

V podstatě zde dochází ke skutečnému kouzlu.

můžete se řídit těmito schématy a vše svařit dohromady.

pamatujte, že můžete změnit polohu PINů, nezapomeňte to také změnit v kódu.

A0 a I2S jsou docela pevně na svém místě:

protože A0 je pro odporový můstek (použijeme rozdíl v proudu, abychom věděli, které tlačítko z 5 bylo stisknuto - podobně jako v tomto Instructables.

I2S má specifické kódování, které najdete zde

Krok 8: Zahrajte si několik smyček se svými přáteli

Doporučuje: