Spisu treści:

Rękawica do tańca: 9 kroków
Rękawica do tańca: 9 kroków

Wideo: Rękawica do tańca: 9 kroków

Wideo: Rękawica do tańca: 9 kroków
Wideo: Nauka układu tańca nowoczesnego - część 1 2024, Lipiec
Anonim
Rękawica do tańca
Rękawica do tańca

W tym samouczku przeprowadzę Cię przez proces projektowania rękawic, które pozwolą Ci na interakcję z muzyką poprzez taniec. Zbudujesz rękawicę z akcelerometrem, zaprojektujesz kompozycję w Ableton, a następnie połączysz je w tak złożony lub prosty sposób, jak tylko chcesz!

Kieszonkowe dzieci

  • Ableton (lub bezpłatna wersja próbna)
  • Arduino
  • Kable rozruchowe
  • Lutownica
  • Karton
  • Pistolet na gorący klej
  • Mnóstwo wyobraźni

Krok 1: Koncepcja

Ten projekt ma być zabawny. Jeśli sposób, w jaki działa przykładowy projekt w tym samouczku, nie jest dla Ciebie zabawny, przeprojektuj go!

Polecam włożyć kilka ulubionych piosenek, przesunąć do nich ręce i zobaczyć, co się stanie. Czy poruszasz rękami w górę iw dół? Ramię w ramię? Powoli czy szybko? Jakie aspekty muzyki sprawiają, że chcesz poruszyć rękami? Jeśli masz spisaną ich listę, prawdopodobnie będziesz w stanie wymyślić kilka sposobów włączenia ruchów, które lubisz do swoich ostatecznych algorytmów.

Oto ruchy, których użyłem:

  • Szybki ruch w górę i w dół wyzwala początek utworu, perkusji lub basu. (Dzieje się to w różnych punktach utworu, niekoniecznie jednocześnie!)
  • Powolny, pochylony ruch z boku na bok wyzwala bardziej echa, wysoki dźwięk.
  • W jednym konkretnym fragmencie piosenki, podnosząc rękę do góry, muzyka cichnie – więc „złapałem” ją w zaciśniętą pięść.

Użyj ich lub stwórz własne!

(Uwaga: ten samouczek nie obejmuje sposobu generowania muzyki lub melodii na żywo w Ableton! Jeśli będziesz się trzymać tych instrukcji, będziesz mógł tylko zwiększyć/zmniejszyć głośność ścieżek lub zastosować efekty dźwiękowe.)

Krok 2: Przygotuj akcelerometr

Przygotuj akcelerometr
Przygotuj akcelerometr

Najpierw zastanów się, jaki masz akcelerometr. Użyłem tego; zrobi to każdy akcelerometr trójosiowy. (Lub wypróbuj inny typ czujnika, jeśli chcesz zaszaleć.) Upewnij się, że wiesz, jak odczytać dane akcelerometru z Arduino. Może być konieczne pobranie biblioteki dla akcelerometru, jeśli używa on czegoś bardziej złożonego niż wejście analogowe.

Po przetestowaniu go z płytką stykową przylutuj krótkie przewody oznaczone kolorami do pinów akcelerometru. Podłącz czerwony przewód do styku zasilania, czarny przewód do styku uziemienia i wszelkie inne przewody niezbędne do komunikacji z akcelerometrem. (Jeśli masz akcelerometr I2C, będą to piny SCL i SDA. Jeśli masz akcelerometr analogowy, prawdopodobnie będzie jeden pin dla każdego wyjścia x, y i z.) Upewnij się, że lut jest solidny i aby koraliki nie zachodziły na sąsiednie szpilki.

Krok 3: Zbuduj rękawicę

Zbuduj rękawicę
Zbuduj rękawicę

Wytnij kawałek cienkiego kartonu lub grubego papieru na prostokąt nieco większy niż twój akcelerometr. Przyklej akcelerometr do kartonu, upewniając się, że nakładasz klej na spód. Następnie przyklej akcelerometr z tekturowym spodem do tylnej części rękawicy. Przyszyj każdy drut luźno do nadgarstka rękawicy, aby zmniejszyć napięcie na akcelerometrze, a wtedy rękawica jest gotowa. Podłącz go do dłuższych przewodów, aby mieć wystarczająco dużo miejsca na poruszanie ręką po podłączeniu.

Krok 4: Komponuj w Ableton

Teraz nadszedł czas, aby skomponować piosenkę, którą w końcu będziesz sterować za pomocą rękawicy. Polecam pętle Ableton, które razem dobrze brzmią, ale można ich używać do budowania stopniowo: spróbuj melodii, akordów, basu i perkusji. Będziesz mógł użyć swojej rękawicy do kontrolowania, kiedy każda pętla gra, a kiedy nie.

Jeśli możesz wymyślić ciekawe rodzaje dźwięków, które od czasu do czasu możesz włączyć do utworu, takie jak dziwny efekt dźwiękowy lub niekonwencjonalny instrument, spróbuj dodać jeden lub dwa z nich! Możesz powiązać je z rzadszymi ruchami rąk, aby co jakiś czas wnosić coś interesującego.

Oto link do mojej kompozycji zgodnej z Arduino, na wypadek, gdybyś nie chciał pisać własnego:

(Niestety, nauka Abletona nie wchodzi w zakres samouczka. Istnieje jednak wiele dobrych filmów instruktażowych, a Ableton ma 90-dniowy bezpłatny okres próbny! Polecam ten film.)

Krok 5: Zacznij korzystać z Firmata

Zacznij korzystać z Firmata
Zacznij korzystać z Firmata

Aby umożliwić Arduino komunikację z Abletonem, musisz użyć biblioteki o nazwie Firmata. Musisz także pobrać zestaw Connection Kit dla Ableton.

W Ableton kliknij Packs>Connection Kit>Devices w menu w lewym górnym rogu, a następnie dwukrotnie kliknij pierwsze urządzenie (Arduino), aby je dodać. Upewnij się, że pamiętasz, do której ścieżki Ableton dodałeś urządzenie!

Krok 6: Przetestuj Firmata

Testuj firmę
Testuj firmę

Najpierw przetestujemy i upewnimy się, że Arduino komunikuje się z Abletonem. Prześlij ten fragment kodu do Arduino i uruchom go:

#include void analogWriteCallback(bajt pin, int wartość){ if (IS_PIN_PWM(pin)) { pinMode(PIN_TO_DIGITAL(pin), OUTPUT); analogZapis(PIN_TO_PWM(pin), wartość); }}unieważnij konfigurację() { Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach(KOMUNIKAT_ANALOGOWY, analogWriteCallback); Firmata.begin(57600);}void loop() { Firmata.sendAnalog(0, 800);}

To absolutne minimum potrzebne do komunikacji z Firmatą. Ciągle wysyła wyjście 800 (z 1024) do portu 0 urządzenia Firmata w Abletonie. Jeśli prześlesz ten kod do Arduino, gdy masz otwarte urządzenie Firmata w Abletonie, powinno to wyglądać jak na powyższym obrazku. (Zamapuj port 0 na wszystko w Ableton, aby móc zobaczyć wartości.)

Możesz kliknąć przycisk Map, a następnie dowolne urządzenie kompatybilne z Firmata w programie Ableton, aby dodać mapowanie między wejściem odebranym do tego portu a wartością tego urządzenia Ableton. Proste przykłady obejmują głośność dowolnej ścieżki lub dowolnej tarczy w ramach efektu audio. Przeglądaj i zobacz, co możesz znaleźć na mapie!

Krok 7: Wpływaj na muzykę ruchami rąk

Wpływaj na muzykę za pomocą ruchów dłoni!
Wpływaj na muzykę za pomocą ruchów dłoni!

Do tego czasu powinieneś mieć trochę muzyki w Abletonie, skrypt Firmata na Arduino i dołączoną rękawicę akcelerometru. Zróbmy muzykę!

Mapuj porty urządzenia Arduino w Abletonie na różne rzeczy (proponuję śledzić głośność), a następnie dodaj linie kodu, aby wysłać dane do każdego portu z Arduino.

Firmata.sendAnalog(port, poziom głośności);

Użyj takiego kodu dla każdego portu Firmata.

Jeśli chcesz zrobić coś prostego, możesz wysłać nieprzetworzone wartości akcelerometru do portów Ableton i zmapować je stamtąd. Aby uzyskać bardziej wyrafinowane wrażenia, możesz zdecydować: jakie wartości akcelerometru powinny wyzwalać dźwięki, jak i kiedy?

Następnie odtwórz wszystkie swoje pętle Ableton, uruchom kod Arduino i tańcz!

(Zastrzeżenie: jeśli planujesz stworzyć jakikolwiek złożony algorytm dla swojej piosenki, dopracowanie może zająć dużo czasu. „Dance away” może być mniej dokładne niż oczekiwano.)

Krok 8: Klasa toru (bonus!)

Jeśli nie masz nic przeciwko zwiększaniu głośności lub masz inny sposób na złagodzenie tego, pomiń ten krok. W przeciwnym razie czytaj dalej!

Zauważyłem, że przełączanie głośności z wyciszonej na pełną za jednym razem tworzy nieprzyjemne trzaski i fajnie jest móc stopniowo zmniejszać głośność. Jednak w środowisku programowania synchronicznego Arduino jest to trudne. Oto kod, który sprawi, że popping zniknie:

class Track{ public: int volume; int TomCel; int aktualizacjaPrędkość; Track() { głośność = 0; objętośćCel = 0; aktualizacjaPrędkość = 0; } void setVolumeGoal(int goal) { VolumeGoal = cel; } int getVolumeGoal() { return volumeGoal; } void setUpdateSpeed(int szybkość) { updateSpeed = szybkość; } int getVolume() { zwraca objętość; } void uaktualnijVolume() { if((wolumen > cel objetosci) && ((wolumen - cel objetosci) >= uaktualnijSpeed)) { volume -= aktualizujSpeed; } else if((volume = updateSpeed)) { volume += updateSpeed; } } void mute(int fastness) { volumeGoal = 50; aktualizacjaPrędkość = szybkość; } void full(int fastness) { volumeGoal = 950; aktualizacjaPrędkość = szybkość; }};

Każdy utwór ma aktualną głośność, głośność celu i prędkość, z jaką zbliża się do tego celu. Jeśli chcesz zmienić głośność ścieżki, wywołaj setVolumeGoal(). Za każdym razem, gdy uruchamiasz funkcję loop() w swoim Arduino, wywołuj updateVolume() na każdej ścieżce, a następnie wyślij te informacje do Firmata za pomocą getVolume(). Zmień prędkość aktualizacji, aby uzyskać szybsze lub bardziej stopniowe zanikanie! Unikaj również ustawiania głośności na 0, jeśli możesz; zamiast tego ustaw ją na bardzo niską wartość (wartość domyślna w mute() to 100).

Krok 9: Długość utworu, bity i więcej (bonus!)

Możesz zrobić wiele rzeczy, aby dźwięk wynikający z twojego projektu był łatwiejszy do słuchania. Oto kilka opcji:

Możesz śledzić, jak długo trwa utwór. Aby to zrobić, musisz dowiedzieć się, kiedy piosenka się zaczęła; Polecam wykonanie pętli while w funkcji setup(), która opóźnia uruchomienie kodu do momentu wykrycia ruchu ręki. Zapisz czas rozpoczęcia utworu w zmiennej za pomocą millis() i sprawdzaj, jak długo trwa za każdym razem, gdy wykonujesz loop(). Możesz użyć tego, aby włączyć lub wyłączyć określone funkcje w określonych momentach utworu.

Jeśli wiesz, jak długie są Twoje pętle w milisekundach, możesz również śledzić, ile pętli przeszedłeś, aby uzyskać bardziej zniuansowane zrozumienie struktury utworu!

Innym potencjalnym problemem, który możesz napotkać, jest rozpoczęcie i zatrzymanie odtwarzania utworu. Rozwiązałem to, śledząc, w którym takcie jest aktualnie utwór. Następnie mogłem odtwarzać utwory dla dowolnej liczby uderzeń po geście, zamiast natychmiast go ucinać. To sprawia, że sprawy płyną o wiele bardziej płynnie. Oto przykład:

if(millis() - lastLoop >= 4000) { pętle += 1; ostatnia pętla = mili(); for(int j = 0; j < 8; j++) { beatTeraz[j] = false; } } beat = (millis() - lastLoop) / 250; if(beat != lastBeat) { lastBeat = beat; beatsLeft -= 1; }

Upewnij się, że aktualizujesz woluminy zgodnie z wartościami beatNow[beat] i/lub beatsLeft. Przykładowy kod zawierający prawie wszystko z tego samouczka, plus kilka, jest załączony na wypadek, gdybyś chciał zobaczyć go w praktyce.

Zalecana: