At power-up, our kiosk will run an
"Attract Loop". This video sequence will be a succession of still-images
taken at the Alcorn Inn and will loop at the end (the first and last still images are the
same, providing a seamless transition back to the beginning).
When a guest steps up to the kiosk, the motion sensor
is tripped and a short "welcome" video message is played. The guest is
then given the choice to view one of four clips: Great Rooms, Great Food, Great Rates, and
a Special Offer. Great Rooms, Great Food, and Great Rates are located on the
Internal drive of the DVM, and Special Offer is located on the Removable PC-Card (this
allows us to change our special offer at any time without having to copy the clip to the
Internal drive). If the guest does not select a clip within ten seconds, it is
assumed that they have walked away and the kiosk returns to the Attract Loop.
If the guest chooses a clip by pressing one of the buttons, the clip
is played and then the Welcome clip is played again. Once the guest views all of the
desired clips and walks away (hopefully to the nearest phone to reserve a week at the
Alcorn Inn), the kiosk will return to the Attract Loop.
Here is a listing of all the clips and playlists on
||Great Rooms Clip
||Great Food Clip
||Great Rates Clip
||Attract Loop Clip
We want our kiosk to start the Attract Loop as soon as
possible after power up, so we will use the Autoexec Playlist located on the Internal drive
to play and loop the Attract Loop clip as soon as the DVM has powered up. The
Playlist is created as follows:
I ;Our Attract Loop is interruptible
L5 ;Loop Attract Loop - VID00005.MPG
We move on to program the InterActivator
script. First, we configure Port 1 of the InterActivator for the Alcorn McBride
Digital Video Machine:
Next, we assign our contact closure inputs: Input 9 of the
InterActivator is connected to the motion sensor, Inputs 10-13 are connected to the four
external pushbuttons, and Input 14 is connected to the "Playing" output of the
To prevent the guest from being able to interrupt a clip
while it is playing, we will use two flags to keep track of where we are in the show.
This will allow our sequences to decide whether or not they should accept an input
from the guest. PlayingClipFlag will be turned on when one of our four informational
clips is playing, while PlayingWelcomeFlag will be turned on when the Welcome clip is
Next, we want to create the sequences that provide the
interactivity of our kiosk and tightly control the flow of the show. The sequences
we will use are listed in the figure below:
Our first sequence will be the Attract Loop sequence.
Although this sequence wont be used at power up, it will be called on to play the
Attract Loop after a guest has stepped away from the kiosk. AttractLoop selects the
Internal drive of the DVM with the SelectDrive event and then commands the DVM to
continuously play and loop the Attract Loop clip.
Our next sequence is a house-keeping sequence that has become
commonplace in many scripts. This sequence, ResetFlags, indiscriminately resets all
of the flags that we are using in this script. We will use this sequence to return
the flags to a known state at certain points in the show.
The sequence Welcome is triggered by MotionSensor. This
sequence resets the flags using ResetFlags to ensure that the show is in a known state,
turns on PlayingWelcomeFlag to alert the other sequences that the Welcome clip is
currently playing, and then plays the Welcome clip.
When PlayInput (the "Playing" output of the DVM)
turns off, we know that one of the clips has just finished playing - but which one?
Using the two flags we created earlier (PlayingWelcomeFlag and PlayingClipFlag), we can
create a sequence that is triggered when PlayInput turns off, and can decide whether it
should wait for the guest to push a button (after Welcome has played), or immediately play
the Welcome clip (after an informational clip has played).
Our sequence, ClipFinished, first checks the state of
PlayingClipFlag. If it is on, the sequence knows that the DVM has just finished
playing one of the four informational clips. It turns off PlayingClipFlag and starts
Welcome (which plays the Welcome clip again). If PlayingClipFlag is off, then the
sequence checks the state of PlayingWelcomeFlag. If PlayingWelcomeFlag is on, the
sequence knows that the DVM has just finished playing the Welcome clip and that it should
wait for the guest to push a button. It turns off the flag and starts our
"waiting" sequence, WaitingForSelection. We are only interested in the
status of the four informational clips and the Welcome clip during the show, so if both
flags are off, we do nothing.
WaitingForSelection waits ten seconds after the Welcome clip
finishes and then restarts the Attract Loop, assuming that the guest has walked away.
If the guest presses a button during the ten second interval, the sequence that
corresponds with that button will reset WaitingForSelection so that it does not restart
the Attract Loop.
We provide four separate sequences (triggered individually by
a corresponding pushbutton) to play our informational clips: GreatRooms, GreatRates,
GreatFood, and SpecialOffer. These sequences check the status of both flags.
If either flag is on, the sequence knows that another clip is playing and it should not
interrupt it, so it does nothing. This forces the guest to watch a clip in its
entirety before choosing another.
Each sequence resets WaitingForSelection to prevent
it from starting the Attract Loop ten seconds later. After the informational clip has
finished playing, ClipFinished starts the Welcome clip again. When the guest has viewed
all the desired clips and walks away, the kiosk automatically times out, starts the
Attract Loop and waits for the next guest.
As you can see, controlling video playback
from a Digital Video Machine is extremely straightforward. Near-instantaneous access
times eliminate the need for independent Spinup, Spindown, or Search sequences.
Also, the Playing output allows us to make our script clip-independent, so we can change
the lengths or content of our clips at any time without reworking the script. An
InterActivator / DVM combination is ideal for many applications.