HUMA: Manual under Construction Links, actions, conditional links, events...

Originally HUMA's sequencing concept was founded solely on the possibility to drive video to certain keyframes that would then link to other media segments in realtime. This functionality has been more and more extended, first by deriving two state events from dynamic input (like user moved forward, user stands still etc) and today there is a more or less complete event<>action model that does not necessarily generate its triggers from the state of the presentation or detected user movement, but incorporates button & click events, allows you to configure timers, conditions, actionlists etc.
However the basic concept is still valid: A HUMA presentation is devided into scenes, scenes have links that link to other scenes or trigger actions. Beside these classic links HUMA now offers a number of other possibilities - still allways valid for the scene they are defied in - to trigger scenechanges, actions etc and a lot more functionality to trigger :

To bring it to the point: If you want something to happen, you need a triggering event. HUMA creates, receives and generates events in multiple ways during presentation, both in time and space:
  • Events may occur as a result of video playback. For example when a segment has reached its last frame a link event is triggered
  • The Humamode templates generate events. For example: Input Evaluation modes will trigger when certain user behaviour is detected.
  • Grids can be layed out in the room, defining virtual hotspots , that, when touched or entered, will trigger.
  • Keyframes may be defined on the timeline. When movie playback passes them, they send triggers.
  • Sprites can act as a combination of all the before mentioned, i.e. act as hotspots that may mutate in time and space.
  • Last but not least input devices can generate triggers (like a mouse button, a light barrier or a networked additional runtime).

When a triggering event occurs it executes actions (given there are any attached to the event).
There is a number of different categories of actions:
  • direct scene changes (incorporating the finishing modes).
  • lists of user defineable actions that will be executed one after the other. These lists may include scene change actions as their last element.
  • lists of conditions, that will be evaluated one after the other and that themselves trigger lists of actions, when a condition turns out to be true

Direct scene changes are the most easily set actions. You just drag the icon of the scene you want to link to onto the field that represents the link in either the scene bin, the scene editor's subpages, or to a gridcell, an embedded Movie's or composite stage source's link field etc. Only timeline cues and sprites can not be equipped with scene change actions in that way as they do not have dedicated link fields. In these cases you will add a scene change action as desribed for actions. As an alternative for drag and drop operation you can use the "setLink" submenu of the contextmenu that appears when you right-click onto any of the linkfields. See image below.

Lists of actions are attached to links via the "add/edit action" command of said context menu. When you select this command a black field will appear in the scene bin directly underneath the scene you are working on as shown above. This is the action list for that link (the list will appear on the lower right hand side when adding actions to gridcells, in the "Templates" tab when adding actions to sprites). Right click the list again and select "add action". You will then be confronted with the actions dialog as shown here:
Actions here are again devided into categories:

  1. sequencing actions: includes the same scene change functionality as a classic Huma Link/finishing mode combination. The difference is: you can send these actions not only to the runtime playing the movie, but to others in the network.
  2. Media actions: assembles a number of actions that manipulate the state of separate segments or the movie as a whole.
  3. Utilities: Some tools, like Mouse event generators, Timers etc.
  4. Control output: assembles actions that send data to physical ports (like midi, serial etc) in order to control external hardware or to communicate with other programs running on the same or additional computers. There are some librarys included here, that include commands for various videobeams, matrix switchers, Dataton Watchout etc.

Conditional links
are attached to links via the "add conditional link" command of the context menu. When you select this the black list field will be devided into two halfs, with the left representing conditions and the right showing actions attached to the currently selected condition.
You again use the right mouse button to get the menu, then select "add condition" to call up the condition dialog as shown. Conditions mainly deal with variables. There are predefined variables and user defineable variables, accessible via the popups in the dialog. To change between predefined and user defined once, click the library or list icon on its left side. When user defined variables are selected you can either select an allready defined variable from the popup, define a new one by selecting the pop-up's last entry("new variable") and select that one afterwards or you can directly type in a constant value into the popup. The arithmetric operations the runtime will perform here are very basic, but still offer a lot of possibilities. (see examples below). When a calculation evaluates to true, the actions attached to it will be executed (you add actions as described above in the right half of the black list after selecting a condition on the left). Actions of a condition that evaluated to false will be ignored and the next condition in the list will be checked. If none of the conditions set up turned out to be true nothing will happen unless you close the list with an "else" and attach actions to that.
The prodedure described for both actionlists and conditional links is valid for all link fields and the gridcells.

Scene Events: So far this has described attaching actions etc. to clearly defined locations. For triggering events, that one can not know when and where they are going to occur (you will not know when a user is going to push a button etc) you set up actions on the first page of the scene editor. In the left half you select the event you are interested in, in the right half you attach actions to it. Keep in mind, that the combinations made here are valid only for the scene they are made in.. That way a mouse click or a button connected to a DA Interface can for instance trigger a sound in scene 1, switch of a segment in scene two and stop the movie in scene 3 while doing nothing in scene 4. To reuse event<>action combinations you can copy and paste entire lists via the context menus.

Actions for Scene-Entry: The lower one of the two small buttons on the left hand side of the sceneevents list lets you access another actionlist. Here you can attach actions to a trigger that will be executed when a scene is entered. It's useful to initialize variables, start sounds etc.

Timeline Cues: These let you trigger actions when the project movie passes certain frames. Right click into the small gray track between the time ruler and the first video segment on any of the timelines. Timeline cues can currently only trigger one single action, not entire lists.
It is here that you can also add html links that will let the Quicktime plug-in call HTML pages into a browser window, when the movie it plays passes the frame (and optionally if the user clicked into the movie at that time). This only works with the Quicktime browser-plugin. HUMA and Quicktime MoviePlayer will ignore it!!

Sprite triggers are not described here but in the SpriteEditor pages. The functionality in terms of event<>action mapping is similiar to the ones described here, but sprites offer a lot more on a lot more compley basis.