Բովանդակություն:

Մեղեդի ՝ 8 քայլ (նկարներով)
Մեղեդի ՝ 8 քայլ (նկարներով)

Video: Մեղեդի ՝ 8 քայլ (նկարներով)

Video: Մեղեդի ՝ 8 քայլ (նկարներով)
Video: Երգեց հայերեն😳😍Իսպանացին երգեց հայերեն🥰🥰🥰 #reels #shorts #trending 2024, Հուլիսի
Anonim
Image
Image
Հասկանալով հոսքը
Հասկանալով հոսքը

Բազմաթիվ առավելությունների և տեխնոլոգիական լուծումների կողքին, որոնք թույլ են տալիս աշխատել տնից, գործընկերների միջև ձևավորելու և կյանքի աջակցություն ստեղծելու դժվարությունը մնում է: MELODY- ը թվային-ֆիզիկական սարք է, որը հնարավորություն է տալիս ստեղծել համատեղ կարճ երաժշտական խցանումներ: Գործընկերները համակարգում են ժամանակը, և սարքը սահմանում է շրջափակման հերթափոխ և տարբեր պատահական հնչյուններ: Առաջին մասնակիցը սահմանում է որոշակի ռիթմ, որից հետո յուրաքանչյուր մասնակից ավելացնում է սահմանված ռիթմին համապատասխան սեփական երաժշտական հատվածը: Առանց երաժշտական ֆոն չունեցող օգտվողների համար ավելի դյուրին դարձնելու համար ծրագրակազմն օգնում է նրանց պահել տեմպը ՝ նմուշառելով իրենց կտտոցները և հարմարեցվելով համապատասխան ռիթմին: Նիստը ավարտվում է մոտ 3 րոպե հետո, երբ բոլոր մասնակիցներն ավարտում են իրենց մասի ձայնագրումը:

Ինչպես է դա աշխատում?

Melody- ն հիմնված է ESP2866 սարքաշարի վրա, որը կապվում է Node-Red սերվերի հետ MQTT արձանագրության միջոցով: Սարքը նվագարկիչի գրառումները թարգմանում է մի շարք նիշերի, որոնք ուղարկվում են սերվերին, իսկ սերվերից հետ դեպի մյուս խաղացողները: Սա թույլ է տալիս բոլորին նվագել և լսել մեղեդին ՝ առանց ցանցային կապի ընդհատման:

Մեղեդին ունի երկու հիմնական տեսողական ցուցիչ: Առաջինը LED շերտ է, որը թույլ է տալիս խաղացողին իմանալ, թե երբ է սկսվում և երբ է ավարտվում Loop- ը և ցույց է տալիս, թե արդյոք հերթը խաղացողի հերթն է: Երկրորդը արտադրանքի կենտրոնում LED էկրան է, որն օգտագործվում է առկա մեղեդին տեսողականորեն ցուցադրելու համար: 3 -ից 1 -ի հետհաշվարկը ցույց է տալիս, որ պետք է սկսել խաղալ, և ժամերի ցուցադրումը օգտվողին ուղղորդում է, թե երբ և ինչպես է նա ցանկանում իր ներդրումն ունենալ խմբի Melody- ում: Ձայնագրությունը ավտոմատ կերպով պահվում է ընկերության ամպում ՝ հետագա օգտագործման համար:

Այս նախագիծը մշակվել է «Հերցլիա» միջառարկայական կենտրոնի Մեդիա նորարարական լաբորատորիայի (MiLab) չորս ուսանողների կողմից `Շահար Ագասիս, Էդեն Բար-Թով, Գալ Էշչար և Գադ Շտերն: Vվիկա Մարկֆելդի, Նետտա Օֆերի և Միխալ Լեշինսկու աջակցությամբ և Նոա Մորագի և Օրեն uckուկերմանի ղեկավարությամբ:

շնորհակալություն Թոմ Գրանոյին հիանալի հրահանգ ստեղծելու համար, որն ինձ օգնեց սովորել, թե ինչպես իրականացնել որոշ բաներ այստեղ (որոշ քայլեր այստեղ մոդելավորված են այս հիանալի ուսուցանող օրինակով):

Պարագաներ

  • 3D տպիչ
  • ESP8266
  • 7 կոճակ
  • 8X8 LED մատրիցա
  • WS2812B LED ժապավեն
  • I2S ուժեղացուցիչ
  • Իգական 1/8 դյույմ (3,5 մմ) 4 բևեռ աուդիո խցիկ
  • 4X 1K դիմադրություն
  • 1X3K դիմադրություն

Քայլ 1: Հասկանալով հոսքը

Հասկանալով հոսքը
Հասկանալով հոսքը
Հասկանալով հոսքը
Հասկանալով հոսքը

Այս նախագծում մենք փորձեցինք լուծել որոշ խնդիրներ

  1. Ինչպե՞ս կարող ենք այն դարձնել առցանց, որպեսզի խաղացողները կարողանան միաժամանակ խաղալ:
  2. Ինչպե՞ս կարող ենք շրջանցել ինտերնետի ուշացումները և ստեղծել անթերի փորձ:
  3. Ինչպե՞ս կարող ենք երաժշտությունը լավ հնչեցնել նույնիսկ այն մարդկանց համար, ովքեր չունեն երաժշտական ծագում:

Երաժշտության ժամանակը և սերիալացումը

Առաջին հարցը լուծելու համար մենք նայեցինք MIDI արձանագրությանը և փորձեցինք օգտագործել այն, բայց տեսանք, որ այն ավելի ամուր է, քան այն, ինչ մեզ իրականում անհրաժեշտ էր: Մենք իսկապես ցանկանում էինք այն պարզեցնել, որպեսզի կարողանանք կառուցել առաջին աշխատող նախատիպը: Այսպիսով, մենք ներշնչանք ստացանք MIDI- ից և մեր երաժշտական հանգույցը ներկայացրեցինք մի շարք թվերով (0-5-ից), քանի որ օղակները չափում էին նվագարկիչների ժամանակը (երաժշտական բոլոր մաթեմատիկան կբացատրենք ավելի ուշ):

Երաժշտության մեջ մենք ռիթմերը բաժանեցինք երաժշտական շերտերի: Յուրաքանչյուր բար հիմնականում փոքր ժամանակի հատված է, որը մենք ընտրում ենք օգտագործել 4/4 (նկատի ունի երաժշտական բարում 4 հարված) - ամենատարածվածը:

Յուրաքանչյուր ռիթմ այնուհետև բաժանվում է 4 նմուշառման պատուհանների, այնպես որ յուրաքանչյուր նվագած նոտա ինքնաբերաբար կհամապատասխանի գ լավ դիրքի և նաև թույլ կտա մեզ ներկայացնել երգը որպես թվերի տող `սերվեր ուղարկելու համար:

Երաժշտական ֆոն չունեցող խաղացողների հետ ընկերություն անելու համար մենք երեք բան արեցինք.

  1. Սահմանափակեք ստեղների քանակը, որպեսզի խաղացողը կենտրոնանա ավելի քիչ տարբերակների վրա:
  2. Մենք ընտրեցինք նույն մասշտաբի նոտաներ, որոնք լավ են նվագում միասին, այնպես որ անհամաձայնության ձայն չի լինի:
  3. Յուրաքանչյուր սեղմում դրված է ռիթմի «պատուհանի» վրա ՝ այդպիսով նվագարկողի երաժշտությունը խորթ դարձնելով ռիթմին

Հաղորդակցության արձանագրություններ

Այսպիսով, երաժշտության հիմքում ընկած տրամաբանությունից հետո, ինչպե՞ս կարող ենք այն հաղորդակցվել մեր նվագարկիչների միջև:

դրա համար մենք օգտագործում ենք MQTT ՝ հրապարակման և բաժանորդագրման ցանցի արձանագրություն, որը հաղորդագրություններ է փոխադրում սարքերի միջև:

յուրաքանչյուր խաղացող բաժանորդագրված է երկու թեմայի ՝ հանգույց (ստացեք ամենաարդիական օղակը) և շրջադարձ (համաժամացման նպատակով ստանում է ընթացիկ նվագարկչի ID- ն):

Իր հերթին, երբ նվագարկիչն ավարտում է մեղեդու նվագարկումը, նա կսեղմի UP կոճակը, և հանգույցը (թարմացվածը) կուղարկվի MQTT բրոքերին, որը այն հետ կփոխանցի օղակի ալիքի բոլոր խաղացողներին:

այս հանգույցը կմնա «քնած», մինչև ընթացիկ հանգույցը չավարտվի և այն կփոխարինի: Այսպիսով, այն թափանցիկ կլինի խաղացողի համար: նաև, քանի որ ներկայումս նոր հանգույցը պահվում է տեղում նվագարկիչի սարքում, երաժշտության համար ինտերնետի ուշացում չկա, ուստի մենք լուծեցինք երկրորդ հարցը:

Քայլ 2: Սերվերի կարգավորում - Ngrok

Սերվերի կարգավորում - Ngrok
Սերվերի կարգավորում - Ngrok
Սերվերի կարգավորում - Ngrok
Սերվերի կարգավորում - Ngrok

ngrok- ը թունելային ծառայություն է: Այն թույլ է տալիս արտաքին աշխարհին ենթարկել տեղական գործող ծառայությունը (մեր դեպքում ՝ Node -RED) ՝ առանց սերվերի ստեղծման կամ DNS գրառումների հետ աշխատելու դժվարությունների: Դուք պարզապես գործարկում եք Node-RED- ը ձեր համակարգչի վրա, այնուհետև աշխատում եք ngrok- ով նույն նավահանգստում, որի վրա գործում է Node-RED- ը:

Վերջ, դուք կստանաք URL, որը կարող եք օգտագործել աշխարհի ցանկացած կետից Node -RED մուտք գործելու համար ՝ անկախ նրանից, թե որ ցանցին է այն միացված:

Տեղադրում և կազմաձևում

  1. Ներբեռնեք ngrok ձեր օպերացիոն համակարգի համար այստեղից:
  2. Հետևեք ներբեռնման էջի քայլին ՝ մինչև «Կրակել այն» քայլը:
  3. «Fire it up step» - ում փոխանակեք 80 -ը 1883 -ով - և http- ը tcp- ով, ինչպես./ngrok tcp 1883 -ով ՝ կախված ձեր
  4. պահպանել URL- ն ու պորտի համարը (տեսել ենք նկարում), մեզ ավելի ուշ պետք կգա:

Քայլ 3. Սերվերի կարգավորում - հանգույց -կարմիր

Սերվերի կարգավորում - հանգույց -կարմիր
Սերվերի կարգավորում - հանգույց -կարմիր

Serverրագրի Server տրամաբանությունը ՝ Node-RED- ը տեսողական ծրագրավորման միջավայր է, որը թույլ է տալիս միացնել տարբեր ծրագրակազմեր (և ապարատային սարքավորումներ):

Այստեղ մենք կազմեցինք բոլոր խաղացողների միջև հաղորդակցության տրամաբանությունը (կիսել և ստանալ օղակները և համակարգել շրջադարձերը)

Տեղադրեք Node-Red- ը

հետևեք հետևյալ քայլերին ՝ ձեր Node-RED հոսքը ձեր տեղական համակարգչում բեռնելու համար.

  1. Node-RED- ը պահանջում է Node.js, տեղադրեք այստեղից
  2. տեղադրեք Node-RED- ը ՝ օգտագործելով հրահանգները այստեղ:

Այժմ, երբ դուք տեղադրել եք Node-RED- ը, գործարկեք այն ՝ օգտագործելով վերը նշված քայլին տրված հրահանգները և հաստատեք, կարող եք տեսնել դատարկ կտավի էջ: Այն պետք է տեղակայված լինի https://127.0.0.1:1880 հասցեում

Այժմ ձեզ հարկավոր է ներմուծել այն հոսքը, որը մենք օգտագործել ենք այս նախագծի համար, այն կարող եք գտնել այստեղ և պարզապես սեղմել ներմուծել ավելացնել JSON ֆայլը և սեղմել Տեղակայել:

Node-Red- ի տեղադրում

եթե նայեք այս քայլին կցված պատկերին, կարող եք տեսնել, որ մենք ունենք 2 հիմնական «գործողություն», մենք ստանում ենք ընթացիկ հանգույց մեր խաղացողներից մեկից, այնուհետև այն փոխանցում ենք մյուս բոլոր խաղացողներին: բացի այդ, մենք նոր հերթափոխը հեռարձակում ենք բոլոր խաղացողներին: այնպես որ խաղը մնում է համաժամեցված:

Քայլ 4: Սերվերի կարգավորում - MQTT (Mosquitto)

Սերվերի կարգավորում - MQTT (Mosquitto)
Սերվերի կարգավորում - MQTT (Mosquitto)

Քանի որ Node-RED- ը չունի իր MQTT միջնորդը, և մենք պետք է շփվենք մեր տվիչների և ակտիվացնողների հետ MQTT- ի միջոցով, մենք կօգտագործենք նվիրված MQTT բրոքեր: Քանի որ Node-RED- ը խորհուրդ է տալիս Mosquitto- ին, սա այն է, ինչ մենք կօգտագործենք: Տեսեք այստեղ որոշ տեղեկություններ MQTT- ի և այն մասին, թե ինչու է այն հաճախ օգտագործվում IoT նախագծերում:

Տեղադրում և կազմաձևում

  1. Ներբեռնեք Mosquitto- ն այստեղից և տեղադրեք այն ՝ ըստ ձեր օպերացիոն համակարգի:
  2. Սովորաբար, դուք պետք է հետևեք այստեղ տրված հրահանգներին ՝ Node-RED- ը Mosquitto- ին միացնելու համար: Այնուամենայնիվ, եթե դուք օգտագործել եք մեր հոսքը, այն արդեն նախապես կազմաձևված է ձեզ համար: Քանի դեռ հոսքը և Mosquitrro- ն ճիշտ եք տեղադրում, և Mosquitto- ն աշխատում է 1883 նավահանգստում (որի վրա այն լռելյայն աշխատում է), այն պետք է աշխատի տուփից դուրս:
  3. Նկատի ունեցեք, որ սա նշանակում է, որ MQTT բրոքերը և ձեր Node-RED սերվերը աշխատում են նույն մեքենայի վրա: Սա օգտակար է համակարգի ներսում հաղորդակցությունը պարզեցնելու համար: Լրացուցիչ տեղեկությունների համար տե՛ս ստորև բերված գրառումը:

MQTT տրաֆիկի մոնիտորինգ

Ես օգտագործել եմ MQTTfx ՝ երթևեկությունը վերահսկելու համար, դա հիանալի գործիք է շատ պարզ GUI- ով:

Քայլ 5: Կոդ

Օրենսգիրքը
Օրենսգիրքը

կոդը կարող եք գտնել GitHub- ում (բոլոր տվյալների ֆայլերով և config.h)

Կախվածություններ

esp2866 կոդը բեռնելուց առաջ ձեզ հարկավոր է տեղադրել մի քանի գրադարան.

  1. libmad-8266 (երաժշտությունը վերծանեք SPIFF- ից I2S- ի մեջ)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Վերբեռնեք հնչյունները ESP- ում ՝ օգտագործելով SPIFF:

  1. հետևեք այս մեծ հրահանգին:
  2. ավելացնել տվյալների թղթապանակը աղբյուրի կոդի գրացուցակում:
  3. Arduino IDE- ում Գործիքներ բաժնում փոխեք Flash չափը «4 ՄԲ (FS: 3MB TOA: ~ 512KB)»
  4. Նաև Գործիքների ներքո Կտտացրեք ESP2866 Էսքիզների տվյալների վերբեռնում

Պարամետրերի սահմանում

Դրանից հետո գնացեք config.h ֆայլ և ավելացրեք անհրաժեշտ տվյալները, ինչպիսիք են WIFI- ի հավատարմագրերը և ngrok URL- ն և նավահանգիստը նախորդ քայլից (հղման համար ստուգեք կցված լուսանկարը):

p.

Սահմանեք ձեր ուզած խաղացողի քանակը (այս խաղը լավագույնս աշխատում է 2-3 խաղացողի համար և տուփից դուրս այն բեռնված է 2 խաղացողների համար նախատեսված հնչյունների զանգվածով): բայց հեշտությամբ կարող է ճշգրտվել ավելին.

յուրաքանչյուր խաղացողի համար կարմիր հոսանքի մեջ ավելացրեք ևս մեկ հոսք ՝ օգտվողին հատուկ թեմայի շրջանակում հրապարակելու համար:

նաև, կարող եք խմբագրել երաժշտական ձայնը ՝ այս զանգվածը ձեր անհատականացված հնչյուններին փոխելով.

այստեղ կարող եք տեսնել 3 տեսակի գործիքներ (Chrods նվագարկչի համար 0, Lead for the player 1, և Bass for the player 2)

const char* ուղիներ [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"};

Քայլ 6: Տպեք 3D մոդելը

Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը
Տպել 3D մոդելը

Առաջին քայլի համար ներբեռնեք STL- ը և տպեք դրանք:

հենարանները հանելուց և գուցե մի փոքր հղկելուց հետո (կախված տպիչի լուծաչափից)

ներկեք այն ցանկալի գույնով

Քայլ 7: Հավաքում և եռակցում

Հավաքում և եռակցում
Հավաքում և եռակցում

Այսպիսով, հիմնականում այստեղ է, որ տեղի է ունենում իսկական կախարդանքը:

կարող եք հետևել այս սխեմաներին և ամեն ինչ միասին զոդել:

հաշվի առեք, որ կարող եք փոխել PIN- ների դիրքը, պարզապես հիշեք, որ այն պետք է փոխվի նաև ծածկագրում:

A0- ն և I2S- ը բավականին ամրագրված են տեղում.

քանի որ A0- ն ռեզիստորային կամրջի համար է (մենք օգտագործում ենք հոսանքի տարբերությունը `իմանալու համար, թե 5 -ից որ կոճակն է սեղմված` նման սույն Հրահանգներին:

I2S- ն ունի հատուկ կոդավորում, որը կարող եք գտնել այստեղ

Քայլ 8: Խաղացեք որոշ օղակներ ձեր ընկերների հետ

Խորհուրդ ենք տալիս: