Vixen Script Projects

From doityourselfchristmas.com
Jump to navigation Jump to search

Vixen Script Projects are written in C#, and allow for non-sequential control of displays.

Vixen Standard Scripts

Vixen Standard Scrips provide basic on/off, fade/ramp, timed control. To use this, create a New Event Sequence > Script Project. Then, one must select Standard.dll from the Script > Modules menu.

Standard.dll

Note: The examples will use this example channel list:

  • Channel_1
  • Channel_2
  • Channel_3
  • Channel_4

Properties

Any of the channels imported into the scripted sequence are available by name. Also, there is an additional "All" channel, which is all of the channels.

Methods

All assume to operate asynchronously; the action will return unless the Wait modifier is used (below).

  • void On(channels, modifiers);
  • void Off(channels, modifiers);
  • void Ramp(channels, int startIntensity, int endIntensity, modifiers); // Intensities are 0-100
  • void Random(channels, int saturationLevel, modifiers); // Saturation level is 0-100
  • void Chase(channels, modifiers);


Arguments

"channels" is a ChannelCollection. There are a number of ways to create a ChannelCollection:

  • ChannelCollection ChannelRange(startChannel, endChannel);
Example: ChannelRange(Channel_2, Channel_4)
  • ChannelCollection ChannelRange(startChannel, int count);
Example: ChannelRange(Channel_2, 3)
  • ChannelCollection ChannelRange(int startIndex, int count);
Example: ChannelRange(1, 3)
  • ChannelCollection Channels(...);
The parameters for Channels() is a params list of channel collections. It can be used to create a single set of disjointed channel collections.
Example: Channels( Channel_1, ChannelRange(Channel_3,2) );
Example: Channels( ChannelRange(DateTime.Now.Hour,1), ChannelRange(10,10), Channel_2 );

"modifiers" is a params list made up of 0 or more of the following:

  • At(int level) // Intensity level, 0-100
  • For(int seconds) // Applies the action for the given time period.
  • Over(int seconds) // Same as For(), just makes better sense in some uses.
  • Wait // Wait for the action to complete.
  • Every(int seconds) // Occurs at every time interval.


Modifier time span The default measure of time is seconds. So For(5) would cause the action to span 5 seconds. The measure of time can be changed with one of the following properties on the modifer:

  • Millisecond
  • Second
  • Minute
  • Hour
The plural version of each of those is also valid.
Example: To have a chase span 3.7 seconds over the first 10 channels synchronously...
Chase( ChannelRange(1,10), Over(3700).Milliseconds, Wait )


Example Scripts

To have certain channels on for a given time range:

void Start() {
	Off(All);

       DateTime now = DateTime.Now; //get the current time

        //The DateTime constructor goes (YYYY, MM, DD, HH, MM, SS)
	DateTime start = new DateTime(now.Year, now.Month, now.Day, 17, 30, 00);
	DateTime end = new DateTime(now.Year, now.Month, now.Day, 23, 00, 00);

        //We only want the channels to turn on while the current time is
        //between 5:30 and 11 pm
	while (now.CompareTo(start) >= 0 && now.CompareTo(end) <= 0)
	{
               On (Channels(Tree_1), At(100));
               On (ChannelRange(1,15), At(100));
               On (ChannelRange(18,7), At(100));
               On (ChannelRange(27,8), At(100));

               Random (ChannelRange(15,2), 50, For(50).Second);

	       now = DateTime.Now;  //update the current time
	}

	Off(All);
}