Tartalomjegyzék:

Synesthesia Player Piano: 4 lépés
Synesthesia Player Piano: 4 lépés

Videó: Synesthesia Player Piano: 4 lépés

Videó: Synesthesia Player Piano: 4 lépés
Videó: Chopin - Etude Op. 10 No. 4 (Torrent) 2024, November
Anonim
Image
Image
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano

Ez a játékos zongora zenét játszik egy színkerék és egy kamera segítségével! A képeket a kamera rögzíti, feldolgozza és hangjegyként értelmezi. Jelenleg úgy van programozva, hogy olyan mondókákat játszik le, amelyek megváltoztathatók egy új arduino vázlat feltöltésével, amely meghatározza, hogy mely hangokat kell lejátszani (mely színeket kell megjeleníteni a kamerának).

A fedélzeti Linux PC elindít egy szolgáltatást a rendszerindításkor, amely képet készít a kamerával, kiszámítja a kép RGB értékeinek függvényét, és hangot ad ki a függvény visszatérési értéke alapján. A hang lejátszása előtt jelzést küld az Arduino -nak, hogy forgassa el a szervót, bemutatva a következő lejátszandó hangnak megfelelő színt. Ezután a ciklus újra elindul, kép készül, a színkör forog, és a hang végtelenül lejátszódik.

Ez a projekt szórakoztató módon integrálja a zenét, a modern Linux-rendszerek programozását, a mikrovezérlő-programozást, az inkcape doodling-ot, a lézervágást és néhány szemét kartondoboz újratervezését.

Az összes kód és inkScape SVG elérhető a github webhelyen:

github.com/melvyniandrag/pyMusic

Felhasznált anyagok:

  1. Üres fehér címkék
  2. Kartondoboz
  3. Webkamera
  4. Ceruzák
  5. Arduino
  6. Beagleboard-xM
  7. Vezetékek
  8. Soros kábel
  9. Alapvető ismeretek a képfeldolgozásról és a zenéről

1. lépés: A számítógépes dolgok

A számítógépes dolgok
A számítógépes dolgok
A számítógépes dolgok
A számítógépes dolgok
A számítógépes dolgok
A számítógépes dolgok

A fedélzeten szüksége lesz egy kicsi Linux-kompatibilis számítógépre, például egy Raspberry Pi-re. Egy régi BeagleBoard-xM-et használtam, mert véletlenül ott feküdt, és már volt egy operációs rendszer az SD-kártyán. Bármit használhat, mindaddig, amíg képes kezelni egy webkamerát, futtatni tudja az OpenCV -t (a számítógépes látókönyvtárat, amely a színkerék képeinek készítésére és feldolgozására szolgál), és rendelkezik audio kimeneti csatlakozóval.

Az operációs rendszert úgy állítottam be, hogy futtassa a rendszerindításkor képeket rögzítő python kódot. A szkript futtatásához meg kell adnia a sudo apt-get install python-pyaudio python-opencv parancsot a jelzett könyvtárak beszerzéséhez. A könyvtárak beszerzéséhez pip -telepítenie kell a numpy pyserial -t is. A pyaudio hangok lejátszására szolgál, az opencv a képek készítésére és feldolgozására, a numpy pedig a képfeldolgozásra is, a pyserial pedig az Arduino -val való kommunikációhoz szükséges.

Az Arduino -t a szervomotor forgatására használják, amelyre a színes kerék fel van szerelve. Ha volt egy Raspberry Pi, akkor használhatja a GPIO csapokat, és kihagyhatja az Arduino -t, de módosítania kell a Python kódot.

A képeken láthatók a művelet technológiai zsigerei és pár kódrészlet.

2. lépés: A zongora

A zongora
A zongora
A zongora
A zongora
A zongora
A zongora

A zongorát néhány régi dobozból készítettem kartonból. Szerencsém van egy lézervágóval rendelkező gyártótér közelében lakni. Egy egész évig azon töprengtem, hogy mi a fenének akarna egy lézervágót, és kiderült, hogy végre találtam rá alkalmazást.

Megmértem a számítógépet, az arduino -t és a szervót, így tudtam, hogy mennyi helyre van szükségem, rajzoltam a zongora részeit az inkcape -ben, és kivágtam a lézervágón. (Szerkesztés: elfogyott a kartonpapír, hogy a ház tartsa a számítógépet és az arduino -t, ezért nem tettem be őket. A tok külső oldalán találhatók. Nem számít, szerezhettem volna egy másik dobozt valahonnan, de nem végülis mindegy.)

A darabokat epoxiddal állították össze.

3. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Íme néhány kép a zongora összeszereléséről és színezéséről. A nyomtatóból kifogyott a tinta, így nem tudtam úgy nyomtatni a színeket a fehér címkékre, ahogy elterveztem. Szóval a lányom ceruzáját használtam. És nem találtam xacto kést, amellyel a címkét a karton formájára vághatnám, ezért csak egy steak kést használtam, és valami védelmet tettem a konyhapultra. Használd, amit kaptál!

4. lépés: Technikai kihívások és jövőbeli szempontok

Technikai kihívások és jövőbeli szempontok
Technikai kihívások és jövőbeli szempontok
Technikai kihívások és jövőbeli szempontok
Technikai kihívások és jövőbeli szempontok

Ennek a projektnek egy kihívást jelentő része volt a megfelelő RGB értékek elérése a fényképezőgéppel. A webkamerámon hihetetlenül fényes LED -ek vannak, amelyeket nem tudok kikapcsolni Linux alatt. Azt hiszem, van egy Windows illesztőprogram, amely lehetővé teszi a be- és kikapcsolást. Kísérleteztem a LED -ek elektromos szalaggal történő rögzítésével és bekapcsolva hagyásával. A szoftver robusztusságát is teszteltem azzal, hogy nem csak színes papírt mutattam, hanem írtam egy kis weboldalt, amely színeket mutat.

A számítógép által keltett hangokban néha pattog és pattog a hang, és ez abból adódik, hogy nagyon kevés tapasztalattal rendelkezem a Linux audio programozásában. A pyaudio könyvtár egy csomó panaszt köp ki amiatt, hogy a JACK nincs telepítve a számítógépre, de alapértelmezés szerint a JACK nem akar fej nélkül futni (gui asztal és monitor nélkül). Ez egy programozási feladat, amelyet finomításnak gondoltam, de nem volt szükséges ahhoz, hogy kifejezzem a zongorajáték lényegét.

Arra gondoltam, hogy kézi hajtókar segítségével változtatom meg a színeket, és esetleg egy sodrófára is, de ez saját bonyodalmakat okoz. A szervó kicsit zajos, de egyelőre jól működik.

A zongorajátékos jelenleg csak 4 hang lejátszására van programozva. Ez azért van, mert a szervó csak 180 fokban mozog, a legtöbb mondókát csak 3-4 hanggal lehet lejátszani, és nem akartam, hogy a színkerék tele legyen színterületekkel, esetleg megzavarva a kamerát. Tehát a zenei szerencse és a technikai korlátok kombinációján keresztül 4 hangjegy jó.

Ajánlott: