Arduino + WiFi, musik lyhörd LED ljus fixtur (21 / 22 steg)
Steg 21: Använda PureData eller annan programvara för att styra Saiko5
OSC paketformat
Grundläggande funktionalitet och kan lätt nås med hjälp av liblo biblioteket, tillgänglig för python, C, PureData och andra språk. Exempelkod för grundläggande python skript för att styra lampor kan hittas i saiko5 arkiv finns i avsnittet nedladdningar i en undermapp/saiko5/programvara/skript /
Grundläggande exempelkod
importera liblo
Adress = liblo. Adress ("192.168.1.222", "2222")
liblo.send (adress, "/ ljus/färg/set", "f", 0,8, "f", 0,0, ("f", 0,2))
I detta kodexempel som är allt som krävs för att styra en Saiko5 fixtur, finns det tre linjer.
1. importera liblo
Detta importerar liblo biblioteket. Du kommer att behöva ha python-liblo installerat för den här funktionen aktiveras.
2. adress = liblo. Adress ("192.168.1.222", "2222")
Detta skapar ett liblo adress objekt som kan användas för att skicka paket över OSC till ljuset i den angivna IP-adressen. Lamporna är programmerade som standard att lyssna på port 2222 och datorn på 192.168.1.2. Dock kan dessa inställningar ändras enkelt genom att ladda upp en modifierad version av firmware. Observera att om du har flera lampor, du kommer att behöva skicka kommandon till alla lampor att göra uppdateringar.
3. liblo.send(address, '/light/color/set', ('f', 0.8), "f", 0,0, ("f", 0,2))
Detta skapar och skickar ett OSC paket. Den specifikation som ljuset väntar är sökvägen "/ ljus/färg/ange", följt av tre flöten, som motsvarar RGB-ljusstyrka mellan 0 och 1.
Observera att detta är konfigurerad för att skicka kommandon som RGB-data. Detta är inte den föredragna färgrymd för att ta itu med LED-belysning, och vi rekommenderar användning av HSI (nyans, mättnad, intensitet) för den lokala representationen av ljus färg. Koden är tillgänglig för att konvertera från HSI till RGB i python i saiko5 programvara databasen på /saiko5/software/puredata/server/HSI2RGB.py
Nyans är ett intuitivt sätt att tänka på "färg", med värden sträcker sig mellan 0 och 360 grader, där 0 grader och 360 grader är röd, och eftersom nyans ökar, den passerar först genom gul, då grönt, då cyan, sedan blå, sedan magenta innan han återvände till rött. Denna framställning möjliggör enkel kodning av stadig färgändringar.
Mättnad är ett intuitivt sätt att tänka på "vithet" av en färg, med en mättnad av 1.0 mening så ren som möjligt av en färg och en mättnad av 0.0 menande vitt oavsett nyans. Användning av mättnad värden som är mindre än 1,0 möjliggör enkel visning av pastellfärger.
Intensitet är den naturliga representationen för ljusstyrkan av en LED-armatur. Utvecklingsintensitet definieras här som summan av de röda, gröna och blå kanalerna, mellan 0.0 och 1.0. Detta är annorlunda än det "värdet" används i HSV, där värdet definieras som det högsta värdet mellan de röda, gröna och blå kanalerna. Även om användningen av intensiteten i stället för värdet begränsar den högsta intensiteten av ljuset att ljusstyrkan i en enda kanal ensam, anser vi att detta är ett mer naturligt sätt att använda en färgskiftande armatur. Till exempel i HSI färgrymd ändras ett HSI värde, om intensitet är konstant, och nyans den sammanlagda maskinstyrkan som lagts av armatur är konstant. Dock i HSV ändras färgrymd, om värdet är konstant, och nyans kraften som lagts av armatur ändringarna.
Detta är särskilt tydligt i exemplet att gå från rött till gult (eller någon primär till sekundär färg). När det gäller rött är HSV värdet (0, 1, 1) likvärdig med RGB-värdet (1, 0, 0). Detta är samma resultat som skulle komma från med hjälp av HSI värdet (0, 1, 1). Dock för gult, HSV värde (60, 1, 1) skulle resultera i en RGB-värde (1, 1, 0) medan en HSI värdet av (60, 1, 1) skulle resultera i en RGB-värdet (0,5, 0,5, 0). Vid konstant värde är mängden ljus som sätts högre för gul än röd med en faktor två, medan i fallet med konstant intensitet, mängden ljus som sätts är oförändrad.
Saiko5 programvara
Saiko5 programvaran utvecklades främst på Ubuntu 10,04. Vi rekommenderar starkt att för att vara säker på att dina inställningar fungerar du ladda ner och använda vår LiveCD bild som ger en grundläggande Ubuntu miljö med vår programvara förinstallerad och ställa in. Vi förstår dock att detta inte är en idealisk situation för alla användare, och så programvara finns också på vår sida för nerladdningar. Saiko5 databasen är uppdelad i två huvudmappar, /saiko5/firmware/och /saiko5/programvara /. Denna dokumentation kommer att diskutera den programvara som finns i mappen /saiko5/programvara /.
GUI
Gui mappen innehåller ett grafiskt användargränssnitt som skrivet i python med wxpython för widgets. Denna programvara ger dig grundläggande kontroll över armaturer med en punkt och klicka-gränssnitt, inklusive att välja en HSI färg, plocka IP-adresser för att skicka kommandon till och göra grundläggande färg cykling lägen. För att använda denna programvara, öppna saikoControlGui.py i python.
scripts
Scripts mappen innehåller grundläggande exempelkod för styrning av armaturer med liblo i python. Observera att med hjälp av dessa kräver manuell konfiguration av IP-adresserna i ljusets du försöker ta kontroll.
* colorcycle.py--detta är en grundläggande färg cykling programmet med 100% mättnad och en konstant hastighet av förändring.
* setpurple.py--detta är den mycket grundläggande skript visas ovan i tre linjer som kommer att ange färg för valt ljus till våra favorit nyans av lila.
* udpstresstest.py--detta skript kommer att betona testa nätverket och ljus genom att skicka UDP-paket till lamporna. Du kan använda detta för att avgöra hur stabilt det trådlösa nätverket är.
puredata
Mappen puredata innehåller källkoden för att göra ljud analys med puredata med en medföljande python server för faktiska kommunikation med Saiko5 armaturer. Detta är den programvara som används för att göra videor av musik svar på sidan. Skärmbilden visar PureData + Python Server som används aktivt styra Saiko5 fixturen.
* analyzer.pd--detta är puredata analysatorn. Det kräver pd-utökad, och pd-aubio (aubio analys musikbiblioteket) att fungera.
* server/HSI2RGB.py--detta python skript konverterar HSI värdena till RGB.
* server/lightconfiguration.py--detta python skript innehåller konfigurationsinformation för den Saiko5 fixturer kontrolleras.
* server/lightevents.py--detta python skript har den grundläggande koden för python-servern. Detta är den kod som vanligtvis kommer att ändras för att lägga till ny funktionalitet till servern.
* server/lightserver.py--detta är den övergripande python skript som måste vara igång för analyzer.pd programvaran att fungera. Avsikten är att lyssna för OSC paket på port 2223 och de paket som tillhandahålls av programvaran puredata.