Innholdsfortegnelse:

Synesthesia Player Piano: 4 trinn
Synesthesia Player Piano: 4 trinn

Video: Synesthesia Player Piano: 4 trinn

Video: Synesthesia Player Piano: 4 trinn
Video: Chopin - Etude Op. 10 No. 4 (Torrent) 2024, Juli
Anonim
Image
Image
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano

Denne spilleren piano spiller musikk ved hjelp av et fargehjul og et kamera! Bilder blir tatt av kameraet, behandlet og tolket som musikknoter. Akkurat nå er det programmert til å spille barnerim som kan endres ved å laste opp en ny arduino -skisse som angir hvilke toner som skal spilles (Hvilke farger skal vises til kameraet).

Den innebygde Linux -PCen starter en tjeneste ved oppstart som tar et bilde med et kamera, beregner en funksjon av RGB -verdiene i bildet og sender ut en lyd basert på funksjonens returverdi. Før du spiller lyden sender den et signal som forteller en Arduino om å rotere en servo, og presenterer fargen som tilsvarer neste tone som skal spilles. Deretter starter sløyfen igjen, et bilde blir tatt, fargehjulet roteres og en lyd spilles ad uendelig.

Dette prosjektet er en morsom måte å integrere musikk, moderne Linux-systemprogrammering, mikrokontrollerprogrammering, inkscape-doodling, laserskjæring og omformulering av noen søppelpappkasser.

Alle koder og inkscape SVGer er tilgjengelige på github på:

github.com/melvyniandrag/pyMusic

Materialer som brukes:

  1. Blanke hvite etiketter
  2. Pappeske
  3. Webkamera
  4. Fargestifter
  5. Arduino
  6. Beagleboard-xM
  7. Ledninger
  8. Seriekabel
  9. Grunnleggende kunnskap om bildebehandling og musikk

Trinn 1: Datastoffer

Datastoffer
Datastoffer
Datastoffer
Datastoffer
Datastoffer
Datastoffer

Ombord trenger du en liten Linux-kompatibel datamaskin, for eksempel en Raspberry Pi. Jeg brukte en gammel BeagleBoard-xM fordi jeg tilfeldigvis hadde den liggende og jeg allerede hadde et operativsystem på SD-kortet. Du kan bruke hva som helst, så lenge det kan håndtere et webkamera, kan kjøre OpenCV (datasynbiblioteket som brukes til å ta og behandle bilder av fargehjulet) og har en lydutgang.

Jeg konfigurerte operativsystemet for å kjøre python -koden som tar bilder ved oppstart etter en systemd -opplæring. For at skriptet skal kjøre, må du sudo apt-get install python-pyaudio python-opencv for å få de angitte bibliotekene. Du må også pip installere numpy pyserial for å få disse bibliotekene. pyaudio brukes til å spille lyder, opencv brukes til å ta bilder og behandle, numpy brukes også til bildebehandling, og pyserial er nødvendig for å kommunisere med Arduino.

Arduino brukes til å rotere servomotoren som fargehjulet er montert på. Hvis du hadde en Raspberry Pi, kunne du bruke GPIO -pinnene der og utelate Arduino, men du må endre Python -koden.

På bildene kan du se den teknologiske tarmene til operasjonen og et par kodesnutter.

Trinn 2: Pianoet

Piano
Piano
Piano
Piano
Piano
Piano

Jeg laget pianoet av papp av noen gamle esker jeg hadde. Jeg er så heldig å bo i nærheten av et makerrom som har en laserskjærer. I et helt år har jeg lurt på hva i all verden man vil ha en laserskjærer til, og det viser seg at jeg endelig fant en bruk for den.

Jeg målte datamaskinen, arduino og servo, så jeg visste hvor mye plass jeg ville trenge, tegnet pianoets deler i inkscape og kuttet dem ut på laserskjæreren. (Rediger: Jeg gikk tom for papp for å få kabinettet til å holde datamaskinen og arduinoen, så jeg satte dem ikke inn. De er på utsiden av saken. Spiller ingen rolle, kunne ha fått en annen eske et sted, men det gjorde det ikke spiller ingen rolle til slutt.)

Bitene ble satt sammen med epoxy.

Trinn 3: Montering

montering
montering
montering
montering
montering
montering

Her er noen bilder av pianoet som er satt sammen og farget. Skriveren var tom for blekk, så jeg kunne ikke skrive ut fargene på de hvite etikettene som jeg hadde planlagt. Så jeg brukte datterens fargestifter. Og jeg kunne ikke finne en xacto -kniv for å kutte etiketten i form av papp, så jeg brukte bare en biffkniv og la noe beskyttende på kjøkkenbenken. Bruk det du har!

Trinn 4: Tekniske utfordringer og fremtidige hensyn

Tekniske utfordringer og fremtidige hensyn
Tekniske utfordringer og fremtidige hensyn
Tekniske utfordringer og fremtidige hensyn
Tekniske utfordringer og fremtidige hensyn

En utfordrende del av dette prosjektet var å få de riktige RGB -verdiene til å bli lest av kameraet. Webkameraet jeg har har noen utrolig lyse lysdioder på det som jeg ikke vet hvordan jeg skal slå av i Linux. Jeg tror det er en Windows -driver som lar deg slå dem på og av. Jeg eksperimenterte med å teipe lysdiodene med elektrisk tape og la dem være på. Jeg testet også programvaren for robusthet ved ikke bare å vise det farget papir, men også skrive et lite nettsted som viser farger.

Lydene som produseres av datamaskinen har noen ganger pops og sprak i dem, og dette kommer av det faktum at jeg har veldig liten erfaring med Linux -lydprogrammering. Pyaudio -biblioteket spytter ut en hel haug med klager om at JACK ikke er installert på PC -en, men som standard ønsker JACK ikke å kjøre hodeløst (uten et gui -skrivebord og en skjerm). Dette er en programmeringsoppgave som jeg trodde var en forfining, men som ikke var nødvendig for å uttrykke essensen av pianoet jeg hadde i tankene.

Jeg hadde vurdert å bruke en håndsveiv for å endre fargene, og kanskje å ha dem på en kjevle, men det introduserer sine egne komplikasjoner. Servoen er litt bråkete, men fungerer bra foreløpig.

Spillerpianoet er for øyeblikket bare programmert til å spille 4 noter. Dette er fordi servoen bare beveger seg 180 grader, de fleste barnerim kan spilles med bare 3-4 noter, og jeg ville ikke at fargehjulet skulle bli rotete med fargegrenser, muligens forvirrende kameraet. Så gjennom en kombinasjon av musikalsk flaks og tekniske begrensninger er 4 notater greit.

Anbefalt: