
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02

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

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ę

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

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

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

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:
Rękawica artystyczna: 10 kroków (ze zdjęciami)

Art Glove: Art Glove to rękawica do noszenia, która zawiera różne rodzaje czujników do kontroli grafiki artystycznej za pomocą Micro:bit i p5.js Palce wykorzystują czujniki zgięcia, które kontrolują wartości r, g, b oraz akcelerometr w Micro: kontrolki bitowe x,y współrzędne
Rękawica paralizatora: 7 kroków

Taser Glove: Masz dość głupio wyglądających rękawic elektrycznych ze słabym jednorazowym napięciem aparatu? Nienawidzisz ludzi na youtube, którzy po prostu pokazują ci tylko zewnętrzną stronę rękawicy do paralizatora i nawet nie mówią, jak to zrobili? Masz wyrafinowany gust i chcesz, aby Twoja rękawica była jednocześnie mocna
Motyw tańca trumny Arduino: 4 kroki

Arduino-Coffin-Dance-Theme: W tym samouczku zobaczmy, jak odtworzyć dźwięk motywu tańca trumny na Arduino Uno
Rękawica kreatora: rękawica kontrolera Arduino: 4 kroki (ze zdjęciami)

Wizard Glove: rękawica kontrolera Arduino: The Wizard Glove. W moim projekcie stworzyłem rękawicę, której możesz użyć do grania w swoje ulubione gry związane z magią w fajny i wciągający sposób, używając tylko kilku podstawowych zasobów arduino i arduino. możesz grać w takie gry, jak starsze zwoje lub
Posłaniec tańca: 5 kroków (ze zdjęciami)

Posłaniec tańca: zabawna trwałość zabawki wizji. Przymocuj go do buta i pisz wiadomości lub wzory podczas chodzenia, biegania lub tańca! Ten artykuł został dostarczony przez MonkeyLectric i lampkę rowerową Monkey Light