Sadržaj:

Nosiva tehnika: Rukavica za promjenu glasa: 7 koraka
Nosiva tehnika: Rukavica za promjenu glasa: 7 koraka

Video: Nosiva tehnika: Rukavica za promjenu glasa: 7 koraka

Video: Nosiva tehnika: Rukavica za promjenu glasa: 7 koraka
Video: EUROVISION 2022 - MY TOP 40 (BY A CLASSICAL MUSICIAN) 2024, Studeni
Anonim
Nosiva tehnika: Rukavica za promjenu glasa
Nosiva tehnika: Rukavica za promjenu glasa
Nosiva tehnika: Rukavica za promjenu glasa
Nosiva tehnika: Rukavica za promjenu glasa

Pa, čini se da su rukavice s nevjerojatnim moćima danas u modi. Iako je Thanos's Infinity Gauntlet prilično moćna rukavica, htjeli smo napraviti rukavicu koja bi mogla učiniti nešto još izvanrednije: promijeniti glas korisnika u stvarnom vremenu.

Ovaj Instructable pruža uvid u to kako smo osmislili rukavicu za promjenu glasa. Naš dizajn je koristio različite senzore i mikrokontroler u rukavici za detekciju pokreta, koji su putem Arduino koda poslani na Max patch, gdje je naš zvučni signal tada promijenjen i izobličen na zabavan način. Specifični senzori, pokreti i izmjene zvuka koje smo koristili fleksibilni su za različita razmatranja; ovo je samo jedan način za stvaranje rukavice za promjenu glasa!

Ovaj je projekt bio dio partnerstva zajednice između studenata Fakulteta Pomona i Fremont Academy of Engineering Femineers. To je prava zabavna mješavina elektroničkog inženjeringa i elemenata elektroničke glazbe!

Korak 1: Materijali

Materijali
Materijali
Materijali
Materijali
Materijali
Materijali

Dijelovi:

  • Mikrokontroler HexWear (ATmega32U4) (https://hexwear.com/)
  • MMA8451 Akcelerometar (https://www.adafruit.com/product/2019)
  • Kratki savitljivi senzori (x4) (https://www.adafruit.com/product/1070)
  • Lagane rukavice za trčanje
  • #2 vijci i podloške (x8)
  • Priključci stezaljki za stezanje; 22-18 kolosijek (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
  • 50kΩ otpornik (x4)
  • Žica (mjerač ~ 20)
  • Samoljepljiva sigurnosna igla
  • Filc ili druga tkanina (~ 10 sq. In.)
  • Konac za šivanje
  • Zipties
  • Prijenosno računalo
  • USB mikrofon

Alati

  • Komplet za lemljenje
  • Skidači žice i rezači žice
  • Električna traka
  • Pištolj na topli zrak
  • Odvijač
  • Škare
  • Igla za šivanje

Softver:

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

Korak 2: Instaliranje softvera

Počinjemo s onim što je uistinu najuzbudljiviji dio svakog projekta: instaliranjem knjižnica (i više).

Arduino:

Preuzmite i instalirajte softver Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Samo Windows, korisnici Mac računala mogu preskočiti ovaj korak) Instalirajte upravljački program posjetom https://www.redgerbera.com/pages/hexwear-driver-installation. Preuzmite i instalirajte upravljački program (.exe datoteka navedena u 2. koraku na vrhu povezane stranice RedGerbera).

2) Instalirajte potrebnu biblioteku za Hexware. Otvorite Arduino IDE. U odjeljku "Datoteka" odaberite "Postavke". Zalijepite u prostor predviđen za dodatne URL -ove upravitelja ploča

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

Zatim kliknite "U redu".

Idite na Alati -> Uprava: -> Upravitelj odbora. Na izborniku u gornjem lijevom kutu odaberite "Doprinos".

Potražite, a zatim kliknite Gerbera Boards i kliknite Install. Zatvorite i ponovno otvorite Arduino IDE.

Kako biste bili sigurni da je knjižnica ispravno instalirana, idite na Alati -> Ploča i pomaknite se do dna izbornika. Trebali biste vidjeti odjeljak pod naslovom "Gerbera ploče", pod kojim bi se trebao pojaviti barem HexWear (ako ne i više ploča poput mini-HexWear-a).

Brzinomjer:

Preuzmite i instalirajte biblioteku akcelerometra (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Korak 3: Priključivanje mjerača brzine

Pričvršćivanje mjerača brzine
Pričvršćivanje mjerača brzine
Pričvršćivanje mjerača brzine
Pričvršćivanje mjerača brzine

Za interakciju s ovim projektom potrebne su nam dvije glavne vrste senzora: mjerač ubrzanja i senzori savijanja. Ispitati ćemo ih jedan po jedan, počevši od mjerača ubrzanja. Prvo, potrebne su nam hardverske veze.

Kako ne biste oštetili svoj Hex, preporučujemo da stavite vijak #2 i podlošku kroz željene priključke, a zatim pričvrstite sve veze na taj vijak. Kako se ništa ne bi olabavilo tijekom igre s rukavicom, spojeve treba zalemiti i/ili presaviti. Koristeći nekoliko centimetara žice za svaku vezu, napravite sljedeće veze od šestougaonika do mjerača ubrzanja (za upute pogledajte gornje spojeve):

ULAZNI NAPON VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Sa svim ožičenim, spremni smo za testiranje!

Kao test, pokrenite uzorak koda akcelerometra u Arduinu (Datoteka-> Primjeri-> Adafruit_MMA8451-> MMA8451demo), pazeći da se može ispisati na serijski monitor. On bi trebao ubrzati uslijed gravitacije (~ 10m/s) u smjeru z kada se drži u ravnini. Naginjanjem mjerača ubrzanja, ovo će se ubrzanje mjeriti u smjeru x ili y; upotrijebit ćemo ovo da korisniku omogućimo promjenu zvuka okretanjem ruke!

Sada moramo podatke akcelerometra prikazati na takav način da se mogu povezati s Maxom. Da bismo to učinili, moramo ispisati vrijednosti x i y, možda modificirane tako da odgovaraju željenom rasponu (vidi dio 6). U našem priloženom kodu radimo sljedeće:

// Izmjerite smjer x i smjer y. Dijelimo i množimo da bismo ušli u prave raspone za MAX (raspon 1000 u x i raspon 40 u y) xdir = event.acceleration.x/0.02; ydir = abs (događaj.ubrzanje.y)*2; // Ispis svega u čitljivom formatu za Max - s razmacima između svakog broja Serial.print (xdir); Serial.print ("");

To bi trebalo imati Hex ispisivanje izmijenjenih vrijednosti smjerova x i y akcelerometra u svakom retku. Sada smo spremni za dodavanje fleks senzora!

Korak 4: Priključivanje savitljivih senzora

Postavljanje fleksibilnih senzora
Postavljanje fleksibilnih senzora
Postavljanje fleksibilnih senzora
Postavljanje fleksibilnih senzora
Postavljanje fleksibilnih senzora
Postavljanje fleksibilnih senzora

Nositelj može dobiti mnogo potencijalnih kontrola zvuka ako možemo otkriti savijene prste. Flex senzori će učiniti upravo to. Svaki senzor savijanja u biti je potenciometar, gdje nesavitljiv ima otpor ~ 25KΩ, dok potpuno savijen ima otpor ~ 100KΩ. Svaki senzor savijanja stavljamo u jednostavan razdjelnik napona s 50K otpornikom, kao što je prikazano na prvoj slici.

Opet koristeći prilično kratke žice (imajte na umu da će sve to stati na stražnju stranu rukavice), lemite četiri modula razdjelnika napona. Četiri modula dijelit će isti Vin i uzemljenje-upleli smo ogoljene krajeve žica kako bismo imali samo jedan kabel za lemljenje. Na kraju, uzmite četiri modula i uspostavite veze prikazane na drugoj slici (ako netko zna kako to učiniti bez stvaranja užasno zamršenog nereda, otkrijte svoje tajne).

Sada nam je potreban Arduino kod za očitavanje napona sa svakog senzora. U naše svrhe, senzore savijanja tretirali smo kao prekidače; bili su ili uključeni ili isključeni. Kao takav, naš kôd jednostavno postavlja prag napona-iznad ovog praga, izlazimo 1 na serijski port (što znači da je senzor savijen), u suprotnom izlazimo 0:

// Uzmi broj

analognih uzoraka i zbrajaju ih za svaki Flex senzor

while (broj_uzoraka <NUM_SAMPLES) {

sum10 += analogRead (A10);

sum9 += analogRead (A9);

zbroj7 += analogno čitanje (A7);

zbroj11 += analogno čitanje (A11);

uzorak_broj ++;

// Kratko kašnjenje kako ih ne biste uzeli prebrzo

kašnjenje (5);

}

// izračunati napon, prosječno za brze uzorke

// koristiti 5.0 za 5.0V ADC

referentni napon

// 5.015V je kalibrirano

referentni napon

napon10 = ((plutajući) zbroj10 /

(plutajuće) NUM_SAMPLES * 5.015) / 1024.0;

napon9 = ((plutajući) zbroj9/

(plutajuće) NUM_SAMPLES * 5.015) / 1024.0;

napon7 = ((plutajući) zbroj7 /

(plutajuće) NUM_SAMPLES * 5.015) / 1024.0;

napon11 = ((plutajući) zbroj11 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

// Provjerite svaki senzor savijanja

je veći od praga (prag) - ako je tako, postavite broj

//Mali prst

ako (napon10> prag)

{

//-5 za podizanje

visina glasa za jednu oktavu

flex10 = -10;

}

else flex10 = 0;

//Prstenjak

ako (napon9>

(prag-0,4)) {

// 5 do niže

visina glasa za jednu oktavu

flex9 = 5;

}

else flex9 = 0;

//Srednji prst

if (voltage7> thresh) {

// 1 za postavljanje

reverb efekt

flex7 = 1;

}

else flex7 = 0;

//Kažiprst

ako (napon11> prag)

{

// 50 za postavljanje

ciklusa do 50

flex11 = 93;

}

else flex11 = 0;

// Poništite sva odbrojavanja

varijabla na 0 za sljedeću petlju

broj_uzoraka = 0;

zbroj10 = 0;

zbroj9 = 0;

zbroj7 = 0;

zbroj11 = 0;

U ovom trenutku serijski priključak trebao bi pokazati vrijednosti za orijentaciju akcelerometra, kao i je li svaki savitljivi senzor savijen. Spremni smo za dobivanje našeg Arduino koda u razgovoru s Maxom!

Korak 5: Povezivanje s Max

Sučelje s Maxom
Sučelje s Maxom

Sada kada heksadecimalni kod pljuva mnogo brojeva kroz serijski port, potreban nam je softver Max za čitanje ovih signala. Blok koda na slici gore čini upravo to! Vi ste dobrodošli.

Važna napomena: nakon što učitate kôd na Hex, zatvorite sve prozore serijskog porta, a zatim promijenite zaokruženo slovo u Max kodu tako da odgovara Hex portu. Ako niste sigurni koje slovo postaviti, pritiskom na dio "print" u Max kodu prikazat će se svi povezani priključci.

Ispisani redak iz serijskog porta Hexa čita se kroz blok koda Max, a zatim se dijeli na temelju razdjelnika prostora. Izlaz na kraju Max bloka omogućuje vam hvatanje svakog broja pojedinačno, pa ćemo prvi izlazni prostor spojiti na mjesto na koje želimo da ide smjer x mjerila ubrzanja, drugi razmak bit će smjer y itd. sada, samo ih spojite na numeričke blokove kako biste bili sigurni da rade. Trebali biste moći pomicati mjerače ubrzanja i senzore savijanja te vidjeti promjene u softveru Max.

Korak 6: Izgradnja ostatka najvećeg koda

S obzirom na moć jezika Max, ovdje možete doista pustiti mašti na volju sa svim načinima na koje možete promijeniti dolazni zvučni signal svojom čarobnom rukavicom. Ipak, ako vam ponestane ideja, gore je pregled onoga što naš Max kod radi i kako radi.

Za svaki parametar koji pokušavate promijeniti vjerojatno ćete se htjeti petljati s rasponom vrijednosti koje dolaze iz Arduino koda kako biste dobili upravo odgovarajuću osjetljivost.

Neki drugi Max -ovi savjeti za rješavanje problema:

  • Ako ne čujete zvuk

    • provjerite je li Max postavljen za primanje zvuka s vašeg mikrofona (opcije Audio Status Input Device)
    • provjerite je li klizač Master Volume u Maxu uključen i sve ostale kontrole glasnoće koje možda imate u kodu
  • Ako se čini da kôd ne radi ništa
    • provjerite je li vaša zakrpa zaključana (simbol zaključavanja u donjem lijevom kutu)
    • osigurajte putem očitanja u zakrpi Max da vaša zakrpa za Max još uvijek prima podatke s Arduino serijskog porta. Ako ne, pokušajte resetirati serijski port (kako je navedeno u koraku 5) i/ili provjerite fizičke veze ožičenja.
  • Čudni zvukovi šišanja pri promjeni parametara

    ovo ima veze s načinom na koji ~ tapin i ~ tapout rade; konkretno da se, kada promijenite njihove vrijednosti, resetiraju, što uzrokuje izrezivanje. S obzirom na naše ograničeno znanje o programu, gotovo smo sigurni da postoji bolji način za to u Maxu i riješiti problem …

Korak 7: Doslovno sve spojite

Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno
Doslovno sve zajedno

Sve što sada preostaje je priključiti naše strujno kolo na rukavicu. Uzmite dodatnu tkaninu i izrežite trake nešto veće od senzora savijanja. Prišite dodatnu tkaninu na prst rukavice gdje se zglob savija, ostavljajući svojevrsni rukav u koji će senzor savijanja sjediti (ne možemo samo zalijepiti senzore savijanja izravno na rukavicu jer se tkanina za rukavice rasteže dok se prsti savijaju). Nakon što je rukav većinom sašiven, gurnite senzor savijanja prema unutra i pažljivo prišijte vodove do rukavice, pričvršćujući senzor savijanja na mjestu. Ponovite ovo za svaki senzor savijanja.

Zatim upotrijebite samoljepljivu sigurnosnu iglu za pričvršćivanje šesterokutnika na stražnju stranu rukavice (možda biste htjeli staviti malo vrućeg ljepila na iglu kako biste bili sigurni da se neće poništiti tijekom nošenja). Prišijte mjerač ubrzanja do zapešća rukavice. Konačno, upotrijebite čaroliju patentnih zatvarača da lijepo očistite sve neugledne žice.

Spremni ste staviti na kušnju svoju vrhunsku pjevačku moć! (Možemo toplo preporučiti "Harder Better Faster Stronger" Daft Punka da u potpunosti pokažete svoje sposobnosti mijenjanja glasa)

Preporučeni: