Innehållsförteckning:

Synesthesia Player Piano: 4 steg
Synesthesia Player Piano: 4 steg

Video: Synesthesia Player Piano: 4 steg

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

Detta pianospelare spelar musik med ett färghjul och en kamera! Bilder tas med kameran, bearbetas och tolkas som musiknoter. Just nu är det programmerat att spela barnrim som kan ändras genom att ladda upp en ny arduino -skiss som anger vilka toner som ska spelas (vilka färger som ska visas för kameran).

Den inbyggda Linux -datorn startar en tjänst vid uppstart som tar en bild med en kamera, beräknar en funktion av RGB -värdena i bilden och matar ut ett ljud baserat på funktionens returvärde. Innan ljudet spelas upp skickar det en signal som berättar för en Arduino att rotera en servo och presenterar färgen som motsvarar nästa ton som ska spelas. Sedan börjar slingan igen, en bild tas, färghjulet roteras och ett ljud spelas upp oändligt.

Detta projekt är ett roligt sätt att integrera musik, modern Linux-systemprogrammering, mikrokontrollerprogrammering, inkscape-doodling, laserskärning och omplanering av några skräpkartonger.

Alla koder och inkscape SVG är tillgängliga på github på:

github.com/melvyniandrag/pyMusic

Material som används:

  1. Tomma vita etiketter
  2. Kartong låda
  3. Webbkamera
  4. Kritor
  5. Arduino
  6. Beagleboard-xM
  7. Trådar
  8. Seriell kabel
  9. Grundläggande kunskaper i bildbehandling och musik

Steg 1: Datorsaker

Datorsaker
Datorsaker
Datorsaker
Datorsaker
Datorsaker
Datorsaker

Ombord behöver du en liten Linux-kompatibel dator som en Raspberry Pi. Jag använde en gammal BeagleBoard-xM eftersom jag råkade ha den kvar och jag hade redan ett operativsystem på SD-kortet. Du kan använda vad som helst, så länge den kan hantera en webbkamera, kan köra OpenCV (datorvisionsbiblioteket som används för att ta och bearbeta bilder av färghjulet) och har ett ljudutgångskontakt.

Jag konfigurerade operativsystemet för att köra pythonkoden som fångar bilder vid uppstart efter en systemd -handledning. För att skriptet ska fungera måste du sudo apt-get install python-pyaudio python-opencv för att få de angivna biblioteken. Du måste också pipinstallera numpy pyserial för att få dessa bibliotek. pyaudio används för att spela ljud, opencv används för bildtagning och bearbetning, numpy används också för bildbehandling och pyserial behövs för att kommunicera med Arduino.

Arduino används för att rotera servomotorn som färghjulet är monterat på. Om du hade en Raspberry Pi kan du använda GPIO -stiften där och utelämna Arduino, men du måste ändra Python -koden.

På bilderna kan du se operationens tekniska mod och ett par kodavsnitt.

Steg 2: Pianot

Pianot
Pianot
Pianot
Pianot
Pianot
Pianot

Jag gjorde pianot av kartong av några gamla lådor jag hade. Jag har turen att bo nära en makerpace som har en laserskärare. I ett helt år har jag undrat vad fan man skulle vilja ha en laserskärare till, och det visar sig att jag äntligen hittade en användning för den.

Jag mätte datorn, arduino och servo så jag visste hur mycket utrymme jag skulle behöva, ritade pianodelarna i inkscape och skar ut dem på laserskäraren. (Redigera: Jag fick slut på kartong för att få höljet att hålla datorn och arduino och så lade jag inte in dem. De är på utsidan av fodralet. Spelar ingen roll, kunde ha fått en annan låda någonstans, men det gjorde det inte spelar ingen roll i slutändan.)

Bitarna sattes ihop med epoxi.

Steg 3: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Här är några bilder på pianot som monteras och färgas. Skrivaren hade slut på bläck så jag kunde inte skriva ut färgerna på de vita etiketterna som jag hade planerat. Så jag använde min dotters kritor. Och jag kunde inte hitta en xacto -kniv för att skära etiketten till kartongens form, så jag använde bara en stekkniv och la något skyddande på köksbänken. Använd det du har!

Steg 4: Tekniska utmaningar och framtida överväganden

Tekniska utmaningar och framtida överväganden
Tekniska utmaningar och framtida överväganden
Tekniska utmaningar och framtida överväganden
Tekniska utmaningar och framtida överväganden

En utmanande del av detta projekt var att få rätt RGB -värden att läsas av kameran. Webbkameran jag har har några otroligt ljusa lysdioder på den som jag inte vet hur jag stänger av i Linux. Jag tror att det finns en Windows -drivrutin som låter dig slå på och av dem. Jag experimenterade med att tejpa lysdioderna med eltejp och lämna dem på. Jag testade också programvaran för robusthet genom att inte bara visa det färgat papper, utan också skriva en liten webbplats som visar färger.

Ljuden från datorn har ibland pops och sprakande i dem, och detta kommer från det faktum att jag har väldigt lite erfarenhet av Linux -ljudprogrammering. Pyaudio -biblioteket spottar ut en hel massa klagomål om att JACK inte är installerat på datorn, men som standard vill JACK inte köra utan huvud (utan ett gui -skrivbord och en bildskärm). Detta är en programmeringsuppgift som jag trodde var en förfining, men det var inte nödvändigt för att uttrycka kärnan i det pianospelare jag hade i åtanke.

Jag hade övervägt att använda en handvev för att ändra färgerna, och kanske att ha dem på en kavel, men det introducerar sina egna komplikationer. Servon är lite bullrig, men fungerar bra för tillfället.

Spelarpianot är för närvarande bara programmerat för att spela 4 noter. Detta beror på att servon bara rör sig 180 grader, de flesta plantskolorim kan spelas med bara 3-4 noter, och jag ville inte att färghjulet skulle bli rörigt med färgområden, möjligen förvirra kameran. Så genom en kombination av musikalisk tur och tekniska begränsningar är 4 toner bra.

Rekommenderad: