Indholdsfortegnelse:

Synesthesia Player Piano: 4 trin
Synesthesia Player Piano: 4 trin

Video: Synesthesia Player Piano: 4 trin

Video: Synesthesia Player Piano: 4 trin
Video: Synesthesia by Mayonnaise synthesia piano tutorial + sheet music & lyrics 2024, Juli
Anonim
Image
Image
Synesthesia Player klaver
Synesthesia Player klaver
Synesthesia Player klaver
Synesthesia Player klaver

Denne spiller klaver spiller musik ved hjælp af et farvehjul og et kamera! Billeder fanges af kameraet, behandles og tolkes som musiknoter. Lige nu er det programmeret til at spille børnerim, der kan ændres ved at uploade en ny arduino -skitse, som angiver, hvilke toner der skal spilles (Hvilke farver skal vises til kameraet).

Den indbyggede Linux -pc starter en service ved opstart, der tager et billede med et kamera, beregner en funktion af RGB -værdierne i billedet og udsender en lyd baseret på funktionens returværdi. Inden lyden afspilles, sender den et signal, der fortæller en Arduino om at rotere en servo og viser farven, der svarer til den næste tone, der skal afspilles. Derefter starter loop igen, et billede tages, farvehjulet roteres, og en lyd afspilles ad infinitum.

Dette projekt er en sjov måde at integrere musik, moderne Linux-systemprogrammering, mikro-controller programmering, inkscape doodling, laserskæring og omformulering af nogle junk papkasser.

Alle koden og inkscape SVG'erne er tilgængelige på github på:

github.com/melvyniandrag/pyMusic

Anvendte materialer:

  1. Blanke hvide etiketter
  2. Papkasse
  3. Webcam
  4. Farveblyanter
  5. Arduino
  6. Beagleboard-xM
  7. Ledninger
  8. Serielt kabel
  9. Grundlæggende viden om billedbehandling og musik

Trin 1: Computeren

Computeren
Computeren
Computeren
Computeren
Computeren
Computeren

Ombord har du brug for en lille Linux-kompatibel computer, f.eks. En Raspberry Pi. Jeg brugte en gammel BeagleBoard-xM, fordi jeg tilfældigvis havde den liggende, og jeg havde allerede et operativsystem på SD-kortet. Du kan bruge hvad som helst, så længe det kan håndtere et webcam, kan køre OpenCV (computer vision -biblioteket, der bruges til at tage og behandle billeder af farvehjulet), og har et lydudgangsstik.

Jeg konfigurerede operativsystemet til at køre python -koden, der fanger billeder ved opstart efter en systemd -tutorial. For at scriptet kan køre, skal du sudo apt-get install python-pyaudio python-opencv for at få de angivne biblioteker. Du skal også pip installere numpy pyserial for at få disse biblioteker. pyaudio bruges til at afspille lyde, opencv bruges til billedoptagelse og behandling, numpy bruges også til billedbehandling, og pyserial er nødvendig for at kommunikere med Arduino.

Arduino bruges til at rotere servomotoren, som farvehjulet er monteret på. Hvis du havde en Raspberry Pi, kunne du gøre brug af GPIO -benene derude og udelade Arduino, men du skulle ændre Python -koden.

På billederne kan du se operationens teknologiske mod og et par kodestykker.

Trin 2: Klaveret

Klaveret
Klaveret
Klaveret
Klaveret
Klaveret
Klaveret

Jeg lavede klaveret af pap af nogle gamle kasser, jeg havde. Jeg har heldet med at bo i nærheden af et makerrum, der har en laserskærer. I et helt år har jeg spekuleret på, hvad pokker man ville have en laserskærer til, og det viser sig, at jeg endelig fandt en brug til det.

Jeg målte computeren, arduino og servo, så jeg vidste, hvor meget plads jeg skulle bruge, tegnede klaverets dele i inkscape og skar dem ud på laserskæreren. (Edit: Jeg løb tør for pap for at få kabinettet til at holde computeren og arduinoen, så jeg lagde dem ikke i. De er på ydersiden af sagen. Det gør ikke noget, kunne have fået en anden æske et sted fra, men det gjorde det ikke det betyder ikke noget i sidste ende.)

Brikkerne blev sat sammen med epoxy.

Trin 3: Montering

montage
montage
montage
montage
montage
montage

Her er nogle billeder af klaveret, der samles og farves. Printeren var løbet tør for blæk, så jeg kunne ikke printe farverne på de hvide etiketter, som jeg havde planlagt. Så jeg brugte min datters farveblyanter. Og jeg kunne ikke finde en xacto -kniv til at skære etiketten i form af pap, så jeg brugte bare en bøfkniv og lagde noget beskyttende på køkkenbordet. Brug hvad du har!

Trin 4: Tekniske udfordringer og fremtidige overvejelser

Tekniske udfordringer og fremtidige overvejelser
Tekniske udfordringer og fremtidige overvejelser
Tekniske udfordringer og fremtidige overvejelser
Tekniske udfordringer og fremtidige overvejelser

En udfordrende del af dette projekt var at få de korrekte RGB -værdier til at blive læst af kameraet. Webkameraet, jeg har, har nogle utroligt lyse lysdioder på, som jeg ikke ved, hvordan man slukker i Linux. Jeg tror, at der er en Windows -driver, der giver dig mulighed for at slå dem til og fra. Jeg eksperimenterede med at tape lysdioderne med elektrisk tape og lade dem være tændt. Jeg testede også softwaren for robusthed ved ikke kun at vise det farvet papir, men også skrive et lille websted, der viser farver.

Lydene fra computeren har nogle gange pops og knitrende i dem, og det kommer af, at jeg har meget lidt erfaring med Linux -lydprogrammering. Pyaudio -biblioteket spytter en hel masse klager over, at JACK ikke er installeret på pc'en, men som standard vil JACK ikke køre uden hoved (uden et gui -skrivebord og en skærm). Dette er en programmeringsopgave, som jeg troede var en forfining, men ikke var nødvendig for at udtrykke essensen af det klaver, jeg havde i tankerne.

Jeg havde overvejet at bruge en håndsving til at ændre farverne og måske have dem på en kagerulle, men det introducerer sine egne komplikationer. Servoen er lidt støjende, men fungerer fint for nu.

Spillerens klaver er i øjeblikket kun programmeret til at spille 4 toner. Dette skyldes, at servoen kun bevæger sig 180 grader, de fleste børnerim kan spilles med kun 3-4 toner, og jeg ville ikke have, at farvehjulet skulle blive rodet med farveområder, muligvis forvirre kameraet. Så gennem en kombination af musikalsk held og tekniske begrænsninger er 4 toner fint.

Anbefalede: