Spisu treści:

Technika do noszenia: rękawica do zmiany głosu: 7 kroków
Technika do noszenia: rękawica do zmiany głosu: 7 kroków

Wideo: Technika do noszenia: rękawica do zmiany głosu: 7 kroków

Wideo: Technika do noszenia: rękawica do zmiany głosu: 7 kroków
Wideo: Poznaj 7 kodów UZDRAWIANIA ciała i podświadomości oraz inspirujące historie uzdrowień. 2024, Listopad
Anonim
Technika do noszenia: rękawica do zmiany głosu
Technika do noszenia: rękawica do zmiany głosu
Technika do noszenia: rękawica do zmiany głosu
Technika do noszenia: rękawica do zmiany głosu

Wygląda na to, że rękawice o niesamowitych mocach są w dzisiejszych czasach modne. Rękawica Nieskończoności Thanosa to dość potężna rękawica, ale chcieliśmy stworzyć rękawicę, która mogłaby zrobić coś jeszcze bardziej niezwykłego: zmienić głos użytkownika w czasie rzeczywistym.

Ta instrukcja zawiera opis sposobu, w jaki zaprojektowaliśmy rękawicę do zmiany głosu. Nasz projekt wykorzystywał różne czujniki i mikrokontroler w rękawicy do wykrywania ruchów, które były wysyłane za pomocą kodu Arduino do patcha Max, gdzie nasz sygnał audio był następnie zmieniany i zniekształcany w zabawny sposób. Konkretne czujniki, ruchy i zmiany dźwięku, których używaliśmy, są elastyczne dla różnych rozważań; to tylko jeden sposób na stworzenie rękawicy zmieniającej głos!

Projekt ten był częścią partnerstwa społeczności pomiędzy studentami Pomona College i Akademią Inżynierii Feministycznej Fremont. To naprawdę zabawna mieszanka inżynierii elektronicznej i elementów muzyki elektronicznej!

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały
Materiały
Materiały

Części:

  • Mikrokontroler HexWear (ATmega32U4) (https://hexwear.com/)
  • Akcelerometr MMA8451 (https://www.adafruit.com/product/2019)
  • Czujniki krótkiego ugięcia (x4) (https://www.adafruit.com/product/1070)
  • Lekkie rękawice do biegania
  • #2 śruby i podkładki (x8)
  • Złącza zaciskane; Wskaźnik 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
  • Rezystor 50kΩ (x4)
  • Drut (grubość ~20)
  • Samoprzylepna agrafka
  • Filc lub inna tkanina (~10 cali kwadratowych)
  • Nić
  • Zipties
  • Laptop
  • Mikrofon USB

Narzędzia

  • Zestaw lutowniczy
  • Narzędzia do ściągania izolacji i przecinaki do drutu
  • Taśma elektryczna
  • Pistolet na gorące powietrze
  • Śrubokręt
  • Nożyce
  • Igła

Oprogramowanie:

  • Max rowerem '74 (https://cycling74.com)
  • Oprogramowanie Arduino (https://www.arduino.cc/en/Main/Software)

Krok 2: Instalacja oprogramowania

Zaczynamy od tego, co jest naprawdę najbardziej ekscytującą częścią każdego projektu: instalacją bibliotek (i nie tylko).

Arduino:

Pobierz i zainstaluj oprogramowanie Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Tylko Windows, użytkownicy komputerów Mac mogą pominąć ten krok) Zainstaluj sterownik, odwiedzając stronę https://www.redgerbera.com/pages/hexwear-driver-installation. Pobierz i zainstaluj sterownik (plik.exe wymieniony w kroku 2 u góry połączonej strony RedGerbera).

2) Zainstaluj wymaganą bibliotekę dla Hexware. Otwórz środowisko Arduino IDE. W sekcji „Plik” wybierz „Preferencje”. W miejscu przewidzianym na adresy URL Menedżera tablic dodatkowych wklej

github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.

Następnie kliknij "OK".

Przejdź do Narzędzia -> Tablica: -> Zarządca tablicy. Z menu w lewym górnym rogu wybierz "Wkład".

Wyszukaj, a następnie kliknij Tablice Gerbera i kliknij Zainstaluj. Zamknij i ponownie otwórz Arduino IDE.

Aby upewnić się, że biblioteka jest poprawnie zainstalowana, przejdź do Narzędzia -> Tablica i przewiń na dół menu. Powinieneś zobaczyć sekcję zatytułowaną „Tablica Gerbera”, pod którą powinna pojawić się przynajmniej HexWear (jeśli nie więcej płyt jak mini-HexWear).

Akcelerometr:

Pobierz i zainstaluj bibliotekę akcelerometrów (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Krok 3: Podłączanie akcelerometru

Mocowanie akcelerometru
Mocowanie akcelerometru
Mocowanie akcelerometru
Mocowanie akcelerometru

Aby móc współpracować z tym projektem, potrzebujemy dwóch głównych typów czujników: akcelerometru i czujników giętkich. Będziemy je badać pojedynczo, zaczynając od akcelerometru. Najpierw musimy dopasować połączenia sprzętowe.

Aby uniknąć uszkodzenia sześciokąta, zalecamy włożenie śruby nr 2 i podkładki przez żądane porty, a następnie przymocowanie wszystkich połączeń do tej śruby. Aby nic nie poluzowało się podczas zabawy rękawicą, połączenia powinny być przylutowane i/lub zaciśnięte. Używając kilku cali drutu do każdego połączenia, wykonaj następujące połączenia od Hex do akcelerometru (patrz powyższe wyprowadzenia w celach informacyjnych):

NAPIĘCIE WEJŚCIOWE VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Po podłączeniu wszystkiego jesteśmy gotowi do testów!

W ramach testu uruchom przykładowy kod akcelerometru w Arduino (File->Examples->Adafruit_MMA8451->MMA8451demo), upewniając się, że może on wysyłać dane do monitora szeregowego. Powinien generować przyspieszenie ziemskie (~10 m/s) w kierunku z, gdy jest utrzymywane w poziomie. Przy przechylaniu akcelerometru przyspieszenie to będzie mierzone w kierunku x lub y; użyjemy tego, aby umożliwić użytkownikowi zmianę dźwięku, obracając ręką!

Teraz musimy przedstawić dane akcelerometru w taki sposób, aby mógł być połączony z Maxem. Aby to zrobić, musimy wydrukować wartości x i y, być może zmodyfikowane tak, aby pasowały do pożądanego zakresu (patrz część 6). W naszym kodzie załączonym tutaj wykonujemy następujące czynności:

//Zmierz kierunek-x i y-kierunek. Dzielimy i mnożymy, aby uzyskać odpowiednie zakresy dla MAX (zakres 1000 w x i zakres 40 w y) xdir = event.acceleration.x/0.02; ydir = abs(zdarzenie.przyspieszenie.y)*2; //Wydrukuj wszystko w formacie czytelnym dla Maxa - ze spacjami między każdą liczbą Serial.print(xdir); Serial.print(" ");

Powinno to spowodować, że Hex wydrukuje zmodyfikowane wartości kierunków x i y akcelerometru w każdej linii. Teraz jesteśmy gotowi do dodania czujników flex!

Krok 4: Mocowanie czujników Flex

Mocowanie czujników Flex
Mocowanie czujników Flex
Mocowanie czujników Flex
Mocowanie czujników Flex
Mocowanie czujników Flex
Mocowanie czujników Flex

Użytkownik może uzyskać wiele potencjalnych kontroli dźwięku, jeśli wykryjemy zginanie palców. Czujniki flex zrobią właśnie to. Każdy czujnik wygięcia jest zasadniczo potencjometrem, w którym niewygięty ma rezystancję ~25KΩ, podczas gdy w pełni wygięty ma rezystancję ~100KΩ. Każdy czujnik flex umieszczamy w prostym dzielniku napięcia z rezystorem 50K, jak pokazano na pierwszym obrazku.

Ponownie używając dość krótkich odcinków drutu (pamiętaj, że wszystko będzie pasować do tyłu rękawicy), przylutuj cztery moduły dzielnika napięcia. Cztery moduły będą dzielić ten sam Vin i uziemienie - skręciliśmy razem pozbawione izolacji końce przewodów, więc mielibyśmy tylko jeden przewód do lutowania. Na koniec weź cztery moduły i wykonaj połączenia pokazane na drugim obrazku (jeśli ktoś wie, jak to zrobić bez robienia strasznego bałaganu, ujawnij swoje sekrety).

Teraz potrzebujemy kodu Arduino, aby odczytać napięcia z każdego czujnika. Dla naszych celów potraktowaliśmy czujniki flex jako przełączniki; były albo włączone, albo wyłączone. W związku z tym nasz kod po prostu ustawia próg napięcia - powyżej tego progu wyprowadzamy 1 na port szeregowy (co oznacza, że czujnik jest zgięty), w przeciwnym razie wyprowadzamy 0:

// Weź liczbę

próbki analogowe i dodaj je dla każdego czujnika Flex

while (liczba próbek < NUM_SAMPLES) {

sum10 += odczyt analogowy(A10);

sum9 += odczyt analogowy(A9);

suma7 += odczyt analogowy(A7);

suma11 += odczyt analogowy(A11);

liczba_próbek++;

//Krótkie opóźnienie, aby nie robić ich zbyt szybko

opóźnienie(5);

}

// oblicz napięcie, uśrednianie szybkich próbek

// użyj 5.0 dla ADC 5.0 V

napięcie odniesienia

// 5.015 V jest skalibrowany

napięcie odniesienia

napięcie10 = ((zmiennoprzecinkowa)suma10 /

(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;

napięcie9 = ((zmiennoprzecinkowa)suma9/

(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;

napięcie7 = ((zmiennoprzecinkowa)suma7 /

(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;

napięcie11 = ((zmiennoprzecinkowa)suma11 /

(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;

//Sprawdź, czy każdy czujnik flex

jest większa niż próg (thresh) - jeśli tak, ustaw liczbę

//Różowy palec

jeśli (napięcie10 > thresh)

{

//-5 do podbicia

wysokość głosu o jedną oktawę

flex10 = -10;

}

w przeciwnym razie flex10 = 0;

//Palec serdeczny

jeśli (napięcie9 >

(próg-0,4)) {

//5 aby obniżyć

wysokość głosu o jedną oktawę

elastyczność9 = 5;

}

w przeciwnym razie flex9 = 0;

//Środkowy palec

jeśli (napięcie7 > próg) {

//1 do ustawienia

efekt pogłosu

elastyczność7 = 1;

}

inaczej flex7 = 0;

//Palec wskazujący

jeśli (napięcie11 > próg)

{

//50 do ustawienia

cykli do 50

zginanie11 = 93;

}

w przeciwnym razie flex11 = 0;

//Zresetuj wszystkie liczenia

zmienna na 0 dla następnej pętli

liczba_próbek = 0;

suma10 = 0;

suma9 = 0;

suma7 = 0;

suma11 = 0;

W tym momencie port szeregowy powinien pokazywać wartości orientacji akcelerometru, a także to, czy każdy czujnik zgięcia jest wygięty. Jesteśmy gotowi, aby nasz kod Arduino porozmawiał z Maxem!

Krok 5: Połączenie z Max

Współpraca z Max
Współpraca z Max

Teraz, gdy kod szesnastkowy wysyła wiele liczb przez port szeregowy, potrzebujemy oprogramowania Max, aby odczytać te sygnały. Przedstawiony powyżej blok kodu właśnie to robi! Nie ma za co.

Ważna uwaga: po przesłaniu kodu do Hex, zamknij wszystkie okna portu szeregowego, a następnie zmień zakreśloną literę w kodzie Max, aby pasowała do portu Hex. Jeśli nie masz pewności, którą literę ustawić, naciśnięcie części „drukuj” kodu Max spowoduje wyświetlenie listy wszystkich podłączonych portów.

Wydrukowana linia z portu szeregowego Hex jest odczytywana przez blok kodu Max, a następnie dzielona na podstawie ograniczników spacji. Wyjście na końcu bloku Max pozwala pobrać każdą liczbę indywidualnie, więc połączymy pierwszą przestrzeń wyjściową tam, gdzie chcemy, aby kierunek x akcelerometru poszedł, druga przestrzeń będzie kierunkiem y, itd. Dla teraz po prostu połącz je z blokami liczb, aby upewnić się, że działają. Powinieneś być w stanie poruszać akcelerometrem i czujnikami zgięcia i widzieć zmiany liczb w oprogramowaniu Max.

Krok 6: Budowanie reszty kodu Max

Biorąc pod uwagę moc języka Max, możesz naprawdę puścić wodze fantazji dzięki wszystkim sposobom, w jakie możesz zmienić przychodzący sygnał dźwiękowy za pomocą magicznej rękawicy mocy. Mimo to, jeśli skończą Ci się pomysły, powyżej znajduje się podsumowanie tego, co robi nasz kod Max i jak działa.

Dla każdego parametru, który próbujesz zmienić, prawdopodobnie będziesz chciał poeksperymentować z zakresem wartości pochodzących z kodu Arduino, aby uzyskać odpowiednią czułość.

Kilka innych wskazówek dotyczących rozwiązywania problemów z Maxem:

  • Jeśli nie słyszysz dźwięku

    • upewnij się, że Max jest ustawiony na odbiór dźwięku z mikrofonu (Opcje Urządzenie wejściowe stanu dźwięku)
    • upewnij się, że suwak Master Volume w Max jest podkręcony, a wszelkie inne regulatory głośności, które możesz mieć w swoim kodzie
  • Jeśli kod wydaje się nic nie robić

    • upewnij się, że twoja łatka jest zablokowana (symbol kłódki w lewym dolnym rogu)
    • upewnij się poprzez odczyty w łatce Max, że twoja łatka Max nadal pobiera dane z portu szeregowego Arduino. Jeśli nie, spróbuj zresetować port szeregowy (jak opisano w kroku 5) i/lub sprawdź fizyczne połączenia okablowania.
  • Dziwne odgłosy przycinania podczas zmiany parametrów

    ma to związek z działaniem ~tapin i ~tapout; konkretnie, że po zmianie ich wartości resetują się, co powoduje obcinanie. Biorąc pod uwagę naszą ograniczoną wiedzę na temat programu, jesteśmy prawie pewni, że istnieje lepszy sposób na zrobienie tego w programie Max i wyeliminowanie problemu…

Krok 7: Dosłowne połączenie wszystkiego

Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem
Dosłowne łączenie wszystkiego razem

Teraz pozostało tylko dołączyć nasze obwody do naszej rękawicy. Weź dodatkowy materiał i wytnij paski nieco większe niż czujniki flex. Przyszyj dodatkową tkaninę do palca rękawicy w miejscu zgięcia kostki, pozostawiając rodzaj rękawa, w którym czujnik zgięcia będzie mógł się osadzić (nie możemy po prostu przykleić czujników zgięcia bezpośrednio do rękawicy, ponieważ materiał rękawicy rozciąga się podczas zginania palców). Gdy rękaw jest już w większości zszyty, wsuń czujnik zgięcia i ostrożnie przyszyj smycze do rękawicy, mocując czujnik na miejscu. Powtórz to dla każdego czujnika flex.

Następnie użyj samoprzylepnej agrafki, aby przymocować Hex do tylnej części rękawicy (możesz nałożyć trochę gorącego kleju na szpilkę, aby upewnić się, że nie rozpuści się podczas noszenia). Przyszyj akcelerometr do nadgarstka rękawicy. Na koniec użyj magii zamków błyskawicznych, aby pięknie wyczyścić wszelkie nieestetyczne przewody.

Jesteś gotowy, aby przetestować swoją najlepszą rękawicę do śpiewania! (Możemy gorąco polecić „Harder Better Faster Stronger” Daft Punk, aby w pełni pokazać swoje możliwości zmiany głosu)

Zalecana: