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, Novembar
Anonim
Nosiva tehnika: Rukavica za promjenu glasa
Nosiva tehnika: Rukavica za promjenu glasa
Nosiva tehnika: Rukavica koja mijenja glas
Nosiva tehnika: Rukavica koja mijenja glas

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

Ovaj Instructable pruža uvid u to kako smo dizajnirali rukavice za promjenu glasa. Naš dizajn je koristio različite senzore i mikrokontroler u rukavici za detekciju pokreta, koji su poslati putem Arduino koda 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 projekt bio je 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:

  • HexWear mikrokontroler (ATmega32U4) (https://hexwear.com/)
  • MMA8451 Akcelerometar (https://www.adafruit.com/product/2019)
  • Kratki fleksibilni senzori (x4) (https://www.adafruit.com/product/1070)
  • Lagane rukavice za trčanje
  • #2 vijci i podloške (x8)
  • Spojite terminalne konektore; 22-18 mjerač (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 (kalibar ~ 20)
  • Samoljepljiva sigurnosna igla
  • Filc ili druga tkanina (~ 10 kvadratnih inča)
  • Konac za šivanje
  • Zipties
  • Laptop
  • USB mikrofon

Alati

  • Komplet za lemljenje
  • Skidači žice i rezači žice
  • Električna traka
  • Pištolj sa toplim vazduhom
  • Šrafciger
  • Makaze
  • Šivaća igla

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 zaista najuzbudljiviji dio svakog projekta: instaliranjem biblioteka (i više).

Arduino:

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

HexWear:

1) (Samo za Windows, korisnici Mac računara 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 "OK".

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

Potražite, a zatim kliknite na Gerbera ploče i kliknite Instaliraj. Zatvorite i ponovo otvorite Arduino IDE.

Da biste bili sigurni da je biblioteka 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 barem trebao pojaviti HexWear (ako ne i više ploča poput mini-HexWear-a).

Akcelerometar:

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

Korak 3: Priključivanje mjerača brzine

Postavljanje akcelerometra
Postavljanje akcelerometra
Postavljanje akcelerometra
Postavljanje akcelerometra

Za interakciju s ovim projektom potrebne su nam dvije glavne vrste senzora: akcelerometar i fleks senzori. Ispitaćemo ih jedan po jedan, počevši od akcelerometra. Prvo, potrebne su nam hardverske veze.

Kako biste izbjegli oštećenje vašeg Hexa, 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 akcelerometra (pogledajte gornje spojeve za referencu):

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 može izlaziti 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 omogućimo korisniku da promijeni zvuk okretanjem ruke!

Sada moramo prikazati podatke akcelerometra na takav način da se mogu povezati s Max. 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 kodu koji je ovdje priložen 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 (event.acceleration.y)*2; // Štampa sve u čitljivom formatu za Max - s razmacima između svakog broja Serial.print (xdir); Serial.print ("");

Ovo bi trebalo da ima heksadecimalni ispis izmjenjenih 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

Nosač može dobiti mnogo potencijalnih kontrola zvuka ako možemo otkriti savijene prste. Fleks senzori će upravo to učiniti. Svaki senzor savijanja je u biti potenciometar, gdje nesavitljiv ima otpor ~ 25KΩ, dok potpuno savijen ima otpor ~ 100KΩ. Svaki senzor savijanja stavljamo u jednostavan razdjelnik napona sa 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 razdjelnika napona. Četiri modula dijelit će isti Vin i uzemljenje-uvili smo zajedno ogoljene krajeve žica kako bismo imali samo jedan provodnik za lemljenje. Na kraju, uzmite četiri modula i uspostavite veze prikazane na drugoj slici (ako neko 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 smo senzore savijanja tretirali 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), inače izlazimo 0:

// Uzmite određeni broj

analognih uzoraka i zbrajajte ih za svaki Flex senzor

while (broj uzoraka <NUM_SAMPLES) {

sum10 += analogRead (A10);

sum9 += analogRead (A9);

sum7 += analogRead (A7);

sum11 += analogRead (A11);

sample_count ++;

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

kašnjenje (5);

}

// izračunati napon, usrednjavanje za brze uzorke

// koristiti 5.0 za 5.0V ADC

referentni napon

// 5.015V je kalibrirano

referentni napon

napon10 = ((float) zbir10 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

napon9 = ((plutajući) zbroj9/

(float) NUM_SAMPLES * 5.015) / 1024.0;

napon7 = ((plutajući) zbir7 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

napon11 = ((float) zbir11 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

// Provjerite svaki senzor savijanja

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

// Pinkie finger

ako (napon10> prag)

{

//-5 za podizanje

visina glasa za jednu oktavu

flex10 = -10;

}

else flex10 = 0;

// Prstenjak

ako (napon9>

(mlaćenje-0,4)) {

// 5 za smanjenje

visina glasa za jednu oktavu

flex9 = 5;

}

else flex9 = 0;

//Srednji prst

if (voltage7> thresh) {

// 1 za postavljanje

reverb efekat

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

promenljiva na 0 za sledeću petlju

uzorak_broj = 0;

sum10 = 0;

sum9 = 0;

sum7 = 0;

sum11 = 0;

U ovom trenutku, serijski port trebao bi prikazati vrijednosti za orijentaciju akcelerometra, kao i da li je svaki fleks senzor savijen. Spremni smo da naš Arduino kod razgovara s Maxom!

Korak 5: Povezivanje s Max

Povezivanje sa Max
Povezivanje sa Max

Sada kada Hex kod pljuva mnogo brojeva kroz serijski port, potreban nam je softver Max za čitanje ovih signala. Blok koda prikazan gore čini upravo to! Nema na čemu.

Važna napomena: nakon što učitate kôd u 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 portovi.

Odštampana linija sa serijskog porta Hex -a se čita kroz blok Max koda, a zatim se dijeli na osnovu graničnika razmaka. Izlaz na kraju Max bloka omogućuje vam da uhvatite svaki broj pojedinačno, pa ćemo prvi izlazni prostor spojiti na mjesto na koje želimo da ide x smjer akcelerometra, drugi razmak bit će smjer y itd. sada ih samo spojite na numeričke blokove kako biste bili sigurni da rade. Trebali biste biti u mogućnosti pomicati mjerač ubrzanja i senzore savijanja te vidjeti promjene u softveru Max.

Korak 6: Izgradnja ostatka maks. Koda

S obzirom na snagu jezika Max, ovdje možete zaista pustiti mašti na volju sa svim načinima na koje možete promijeniti dolazni zvučni signal pomoću svoje čarobne rukavice. Ipak, ako vam ponestane ideja, gore je pregled onoga što naš Max kod radi i kako funkcionira.

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

Neki drugi Max savjeti za rješavanje problema:

  • Ako ne čujete zvuk

    • provjerite je li Max postavljen za prijem zvuka s vašeg mikrofona (Opcije Audio Status Ulazni uređaj)
    • 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 i dalje prima podatke s Arduino serijskog porta. Ako nije, pokušajte resetirati serijski port (kako je navedeno u koraku 5) i/ili provjerite fizičke veze ožičenja.
  • Čudni šumovi pri rezanju pri promjeni parametara

    ovo ima neke 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 da to učinite u Maxu i riješite problem …

Korak 7: Bukvalno sve spojite

Bukvalno sve to zajedno
Bukvalno sve to zajedno
Bukvalno sve to zajedno
Bukvalno sve to zajedno
Bukvalno sve to zajedno
Bukvalno sve to zajedno
Bukvalno sve zajedno
Bukvalno 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 može sjediti fleks senzor (ne možemo samo zalijepiti fleks senzore direktno na rukavicu jer se tkanina 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 elektrode do rukavice, pričvršćujući senzor savijanja na mjestu. Ponovite ovo za svaki senzor savijanja.

Zatim pomoću samoljepljive sigurnosne igle pričvrstite šesterokut 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 akcelerometar na ručni zglob rukavice. Na kraju, upotrijebite čaroliju patentnih zatvarača da lijepo očistite sve neugledne žice.

Spremni ste da isprobate 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čuje se: