Beispiel: Musikansteuerung von Lampen

Ein kleines Beispiel, wie man mithilfe eines Sound to Light fähigen Lichtmischpultes den ‚Beat‘ der Musik in IPS hineinbekommt.

Dazu wird also ein Lichmischpult benötigt (ich habe ein Elation DMX Operator) und damit die Signale in IPS reinkommen ein DMXIN fähiges Interface (ein Digital Enlightenment).

Desweiteren müssen natürlich noch Lampen angesteuert werden - hier verwende ich das DMX4ALL Interface um die beiden Halogenseile in meinem Arbeitszimmer mit einem DMX-Dimmerpack anzusteuern.
Man kann prinzipiell auch etwas anderes als DMX Endgeräte ansteuern sofern diese schnell genug sind - wobei Funkkomponenten wie FS20 keine gute Idee sind da doch recht viele Signale generiert werden und somit das Ganze in einem Funkdisaster enden würde.

Das DMX-Lichtmischpult muss in diesem Beispiel so konfiguriert werden, dass es bei jedem Beat min. einen DMX-Kanal ändert - ich habe es so eingerichtet, dass der Kanal 1 jedesmal zwischen 0 und 255 hin und herspringt. Dieser Kanal wird dann mittels eines DMXIN IPS-Moduls der IPS-Integer-Variablen „a_v1“ zugewiesen und diese Variable triggert bei OnChange das unten stehende Skript „a_beat“.

Das Skript benötigt noch eine zweite IPS-Variable vom Typ Integer:
„a_beatcounter“ - über einen UpdateTime-Zeitvergleich der beiden Variablen „a_v1“ (das Eingangssignal) und „a_beatcounter“ lasse ich einige Signale wegfallen, weil mein Elation Mischpult keine wirklich gute ‚Beat‘-Detection hat…


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : a_beat.ips.php
Trigger  : 
Interval : 
*/
 
$t1 = IPS_GetUpdateMicrotime("a_v1");
$t2 = IPS_GetUpdateMicrotime("a_beatcounter");
$tdiff = $t1-$t2;
if($tdiff <= 0.4) return;
 
$n = GetValueInteger("a_beatcounter");
$n++;
if($n>1) $n=0;
SetValueInteger("a_beatcounter", $n);
 
include "globals_instances.php";
//setdim1( AZ_Tischlampe_Links_ID, 255 );
setdim1( AZ_Haloseil_Links_ID, 255, 100, 0.6 );
setdim1( AZ_Haloseil_Rechts_ID, 255, 100, 0.6 );
return;

function setdim1( $id, $max=255, $min, $downT=0.4)
{
  DMX_Set( $id, 1, $max);
  DMX_Fade( $id, 1, $min, $downT);
}
?>

Gruss,
Olli

…das pulsierende Licht könnte man auch zur visuellen alarmierung einsetzen, geht ja mit FS20 nicht.

pulsierendes licht ala strobe (sollte reichen für alarm): das geht viel einfacher - die meisten led-scheinwerfer sind mit ein oder zwei dmx-kanälen auf strobe konfigurierbar. die geschwindigkeit ist dann auch einstellbar. ich habe das mal in meinem wohnzimmer mit 4 flashenden led-lichtquellen angetestet: man kann definitiv verrückt werden - hervorragend geeignet um gästen klar zu machen, dass es zeit wird zu gehen… :slight_smile: