Tartalomjegyzék:

Táncos kesztyű: 9 lépés
Táncos kesztyű: 9 lépés

Videó: Táncos kesztyű: 9 lépés

Videó: Táncos kesztyű: 9 lépés
Videó: Hip Hop tánc Sajóhídvégről 2024, November
Anonim
Táncos kesztyű
Táncos kesztyű

Ebben az oktatóanyagban végigvezetlek egy olyan kesztyű tervezésén, amely lehetővé teszi a zenével való interakciót a tánc segítségével. Felépít egy gyorsulásmérő-kompatibilis kesztyűt, megtervez egy kompozíciót Abletonban, majd összekapcsolja a kettőt olyan bonyolult vagy egyszerű módon, ahogy szeretné!

Kellékek

  • Ableton (vagy ingyenes próba)
  • Egy Arduino
  • Jumper kábelek
  • Forrasztópáka
  • Karton
  • Ragasztópisztoly
  • Sok fantázia

1. lépés: Koncepció

Ez a projekt szórakoztató. Ha az oktatóanyagban szereplő példaprojekt működése nem szórakoztató, tervezze újra!

Azt javaslom, tegye fel néhány kedvenc dalát, mozgassa a kezét hozzájuk, és nézze meg, mi történik. Fel-le mozgatod a kezed? Egyik oldalról a másikra? Lassan vagy gyorsan? A zene mely aspektusai miatt akarod mozgatni a kezed? Ha le van írva ezek listája, akkor valószínűleg ki fog találni néhány módot arra, hogy a tetszés szerinti mozgásokat beépítse az esetleges algoritmusokba.

Íme az általam használt mozdulatok:

  • Egy gyors fel-le mozgás elindítja a dal, a dob vagy a basszus kezdetét. (Ezek a dal különböző pontjain történnek, nem feltétlenül egyszerre!)
  • A lassú, dőlésszerű oldalirányú mozgás visszhangosabb, magas hangot vált ki.
  • A dal egy adott szakaszánál a kezem felfelé billentése elcsendesíti a zenét - tehát "elkaptam" a zárt öklömben.

Használja ezeket vagy készítse el sajátját!

(Kérjük, vegye figyelembe: ez az oktatóanyag nem terjed ki arra, hogyan lehet zenét vagy dallamokat előállítani élőben Abletonban! Ha betartja ezeket az utasításokat, csak növelheti/csökkentheti a műsorszámok hangerejét vagy a hanghatások alkalmazását.)

Lépés: Készítse elő a gyorsulásmérőt

Készítse elő a gyorsulásmérőt
Készítse elő a gyorsulásmérőt

Először is döntse el, hogy milyen típusú gyorsulásmérővel rendelkezik. Ezt használtam; bármelyik háromtengelyes gyorsulásmérő megteszi. (Vagy próbáljon ki egy másik típusú érzékelőt, ha meg akar vadulni.) Győződjön meg róla, hogy tudja, hogyan kell leolvasni az Arduino gyorsulásmérő adatait. Lehet, hogy le kell töltenie egy könyvtárat a gyorsulásmérőhöz, ha az analóg bemenetnél bonyolultabbat használ.

Miután kipróbálta kenyérsütő táblával, forrasztjon rövid színkóddal ellátott vezetékeket a gyorsulásmérő csapjaiba. Helyezzen egy piros vezetéket a hálózati csatlakozóba, egy fekete vezetéket a földelőcsapba, és minden más szükséges vezetéket a gyorsulásmérő kommunikációjához. (Ha I2C gyorsulásmérője van, akkor ez az SCL és az SDA csap. Ha analóg gyorsulásmérője van, akkor valószínűleg minden x, y és z kimenethez lesz egy tű.) Győződjön meg arról, hogy a forrasztás szilárd és hogy a gyöngyök ne fedjék egymást a szomszédos csapok között.

3. lépés: Építse fel a kesztyűt

Építsd meg a kesztyűt
Építsd meg a kesztyűt

Vágjon egy darab vékony kartonpapírt vagy vastag papírt a gyorsulásmérőnél valamivel nagyobb téglalapra. Ragassza a gyorsulásmérőt a kartonra, ügyelve arra, hogy ragasztót helyezzen az aljára. Ezután ragasztja a kartonpapírral ellátott gyorsulásmérőt a kesztyű hátuljára. Varrjon lazán minden huzalt a kesztyű csuklójához, hogy enyhítse a feszültséget a gyorsulásmérőn, majd a kesztyű készen áll. Csatlakoztassa hosszabb vezetékekhez, hogy elegendő hely legyen a kéz mozgatásához, amikor be van dugva.

4. lépés: Írja le az Ableton -ban

Most itt az ideje, hogy komponálja azt a dalt, amelyet végül a kesztyűvel fog irányítani. Ajánlom az Ableton hurkokat, hogy mindegyik jól hangzik együtt, de fokozatosan építhető fel: próbálja ki a dallamot, az akkordokat, a basszust és az ütőhangszereket. A kesztyűvel szabályozhatja, hogy minden hurok játszik -e vagy sem.

Ha eszébe jut valamilyen érdekes hangzás, amelyet időnként beépíthet egy dalba, például egy furcsa hanghatás vagy egy nem szokványos hangszer, próbálja meg hozzáadni ezek közül is egyet -kettőt! Ritkább kézmozdulatokhoz kötheti őket, hogy időnként valami érdekeset hozzon be.

Itt található egy link az Arduino-kompatibilis kompozíciómhoz, ha nem szeretne sajátot írni:

(Sajnos az Ableton tanítása nem tartozik az oktatóanyag hatálya alá. Azonban sok jó útmutató videó létezik, és Ableton 90 napos ingyenes próbaverzióval rendelkezik! Javaslom ezt a videót.)

5. lépés: Indítsa el a Firmata használatát

Indítsa el a Firmata használatát
Indítsa el a Firmata használatát

Annak érdekében, hogy az Arduino kommunikálni tudjon Abletonnal, a Firmata nevű könyvtárat kell használnia. Ezenkívül le kell töltenie a Connection Kit for Ableton alkalmazást.

Az Abletonban kattintson a Csomagok> Kapcsolati készlet> Eszközök lehetőségre a bal felső sarokban található menüben, majd kattintson duplán az első eszközre (Arduino) a hozzáadáshoz. Feltétlenül emlékezzen arra, hogy melyik Ableton számhoz adta hozzá az eszközt!

6. lépés: Firmata tesztelése

Firmata tesztelése
Firmata tesztelése

Először teszteljük és megbizonyosodunk arról, hogy az Arduino kommunikál Abletonnal. Töltse fel ezt a kódrészletet Arduino készülékére, és futtassa:

#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), érték); }} void setup () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Ez a minimum, ami a Firmatával való kommunikációhoz szükséges. Folyamatosan 800 kimenetet küld (1024 -ből) az abletoni Firmata eszköz 0 -as portjára. Ha feltölti ezt a kódot Arduino -jába, miközben egy Firmata eszköz van nyitva az Abletonban, akkor annak a fenti képnek kell kinéznie. (Térképezze le a 0 -as portot bármire Abletonban, hogy láthassa az értékeket.)

Kattintson a Térkép gombra, majd bármely Firmata-kompatibilis eszközre az Abletonban, hogy hozzárendelést adjon az adott portra érkező bemenet és az Ableton-eszköz értéke között. Egyszerű példák közé tartozik a hangerő bármely műsorszám vagy bármely tárcsa az audio effektuson belül. Fedezze fel és nézze meg, mit talál a térképhez!

7. lépés: befolyásolja a zenét a kézmozdulataival

Befolyásolja a zenét a kézmozdulataival!
Befolyásolja a zenét a kézmozdulataival!

Ekkorra már rendelkeznie kell zenével az Ableton -ban, egy Firmata -szkriptet az Arduino -ján és egy gyorsulásmérő kesztyűt. Zenéljünk!

Térképezze le az Arduino eszköz portjait az Abletonban különböző dolgokra (javaslom a sáv hangerejét), majd adjon hozzá kódsorokat, hogy adatokat küldjön az Arduino minden portjára.

Firmata.sendAnalog (port, volumeLevel);

Használjon ilyen kódot minden Firmata porthoz.

Ha valami egyszerűt szeretne tenni, akkor a gyorsulásmérő értékeit feldolgozatlanul elküldheti az Ableton portokra, és onnan leképezheti őket. A kifinomultabb élmény érdekében eldöntheti: milyen gyorsulásmérő -értékeknek kell hangokat kiváltaniuk, hogyan és mikor?

Ezután játssza le az összes Ableton hurkát, futtassa az Arduino kódját, és táncoljon el!

(Jogi nyilatkozat: ha bármilyen bonyolult algoritmus létrehozását tervezi a dalhoz, sok időbe telhet a finomhangolás. A "Dance away" lehet, hogy a vártnál kevésbé pontos.)

8. lépés: A Track osztály (bónusz!)

Ha nem bánja, hogy felpattan a hangerő, vagy más módja van annak csökkentésére, hagyja ki ezt a lépést. Egyébként olvass tovább!

Észrevettem, hogy a hangerő némításról teljesre váltása egy mozdulattal kellemetlen pattogó hangokat kelt, és jó, ha fokozatosan halványíthatom a hangerőt. Ezt azonban nehéz megtenni az Arduino szinkron programozási környezetében. Tehát itt van néhány kód, amellyel a popping eltűnik:

osztály Pálya {nyilvános: int kötet; int volumeGoal; int updateSpeed; Track () {volume = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = cél; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int gyorsaság) {updateSpeed = gyorsaság; } int getVolume () {visszatérési kötet; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((kötet = frissítési sebesség)) {kötet += frissítési sebesség; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = gyorsaság; } void full (int gyorsaság) {volumeGoal = 950; updateSpeed = gyorsaság; }};

Minden pályának van egy aktuális hangereje, egy cél térfogata és egy sebessége, amellyel a cél térfogata felé halad. Ha módosítani szeretné a műsorszám hangerejét, hívja a setVolumeGoal () gombot. Minden alkalommal, amikor futtatja az Arduino -ban a loop () függvényt, hívja fel az updateVolume () minden számot, majd küldje el ezeket az információkat a Firmata -nak a getVolume () segítségével. Módosítsa a frissítési sebességet a gyorsabb vagy fokozatos elhalványulás érdekében! Ha lehet, kerülje a hangerő 0 -ra állítását; ehelyett állítsa nagyon alacsony értékre (a némítás () alapértelmezett értéke 100).

9. lépés: A pálya hossza, ütemei és egyebek (bónusz!)

Sok mindent megtehet annak érdekében, hogy a projektből származó hang könnyebben hallható legyen. Íme néhány lehetőség:

Nyomon követheti, hogy mennyi ideig fut a dal. Ehhez ki kell találnia, mikor kezdődött a dal; Javaslom a while (ciklus) cikket a setup () függvényben, amely késlelteti a kód futását, amíg kézmozdulatot nem érzékel. Tárolja a dal kezdési idejét egy változóban a millis () használatával, és ellenőrizze, hogy mennyi idő telt el minden egyes ciklus () során. Ezzel engedélyezheti vagy letilthatja bizonyos funkciókat a dal bizonyos időszakaiban.

Ha tudja, milyen hosszú a ciklusa ezredmásodpercben, akkor nyomon követheti azt is, hogy hány cikluson ment keresztül a dalszerkezet árnyaltabb megértése érdekében!

Egy másik lehetséges probléma az, hogy mikor kell elindítani és leállítani egy szám lejátszását. Ezt úgy oldottam meg, hogy nyomon követtem, hogy melyik ütemben melyik dalban van a dal. Ezután egy gesztus után tetszőleges ütemű számokat játszhattam le, ahelyett, hogy azonnal leállítottam volna. Így sokkal gördülékenyebben mennek a dolgok. Íme egy példa:

if (millis () - lastLoop> = 4000) {hurkok += 1; lastLoop = millis (); mert (int j = 0; j <8; j ++) {beatNow [j] = hamis; }} ütés = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft -= 1; }

Győződjön meg arról, hogy a köteteket a beatNow [beat] és/vagy beatsLeft értékeknek megfelelően frissíti. Példakód, amely szinte mindent tartalmaz ebben az oktatóanyagban, és néhányat, mellékelve van, ha szeretné látni a gyakorlatban.

Ajánlott: