Scala InfoChannel Designer 3 - Extended Authoring and Publishing
Transcription
Scala InfoChannel Designer 3 - Extended Authoring and Publishing
Copyright © 1993-2003 Scala, Inc. All rights reserved. No part of this publication, nor any parts of this package, may be copied or distributed, transmitted, transcribed, recorded, photocopied, stored in a retrieval system, or translated into any human or computer language, in any form or by any means, electronic, mechanical, magnetic, manual, or otherwise, or disclosed to third parties without the prior written permission of Scala Incorporated. TRADEMARKS Scala, the exclamation point logo, and InfoChannel are registered trademarks of Scala, Inc. All other trademarks or registered trademarks are the sole property of their respective companies. The following are trademarks or registered trademarks of the companies listed, in the United States and/or other countries: Microsoft, MS-DOS, Windows, Windows NT, DirectX, DirectDraw, DirectSound, ActiveX, ActiveMovie, Outlook, Verdana, JScript: Microsoft Corporation IBM, IBM-PC: International Business Machines Corporation Intel, Pentium, Indeo: Intel Corporation Radius, Cinepak: Radius Incorporated Ligos: Ligos Corporation Adobe, the Adobe logo, Adobe Type Manager, Acrobat, ATM, PostScript: Adobe Systems Incorporated Macromedia, Flash, Flash Player logo: Macromedia Incorporated Laserjet, HP: Hewlett-Packard Corporation UNIX: The Open Group TrueType, QuickTime, Macintosh: Apple Computer, Incorporated Agfa: Agfa-Gevaert AG, Agfa Division, Bayer Corporation The typeface name “Segoe” is a trademark of Agfa Monotype Corporation. The typeface names “Flash” and “Folio” are trademarks of Bauer Types S.A. Some parts are derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm. JPEG file handling is based in part on the work of the Independent JPEG Group. Lexsaurus Speller Technology Copyright © 1992, 1997 by Lexsaurus Software Inc. All rights reserved. TIFF-LZW and/or GIF-LZW: Licensed under Unisys Corporation US Patent No. 4,558,302; End-User use restricted to use on only a single personal computer or workstation which is not used as a server. WARRANTIES AND DISCLAIMERS The following paragraph does not apply to the United Kingdom or any country where such provisions are inconsistent with local Law: SCALA INCORPORATED PROVIDES THIS PUBLICATION “AS IS” WITHOUT ANY WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE LIMITED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer or express or implied warranties in certain transactions, therefore, this statement may not apply to you. This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. Scala may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time. It is possible that this publication may contain reference to, or information about, Scala products or services that are not announced in your country. Such references or information must not be construed to mean that Scala intends to announce such Scala products or services in your country. Requests for technical information about Scala products should be made to your Scala Authorized Distributor, Dealer or your Scala Marketing Representative. Scala may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. Send license inquiries, in writing, to Scala Incorporated, One East Uwchlan Ave., Suite 300, Exton, Pennsylvania 19341 USA. This manual was produced by Ross Hippely, Marc Rifkin and Tracey Waldron. 2 2 Table of Contents Table of Contents 3 Preface 7 ICDesigner resources on the Web 7 1: Using sound 10 Sound sources 10 How ICDesigner manages sound 12 The Sound menu 14 Controlling different types of sound 15 Using sound samples 17 Using MIDI files 24 Using audio CDs 27 Using the Mixer 37 Defining several sound events 42 2: Making scripts interactive 46 Getting started: creating simple buttons 47 Working in the Design Buttons menu 52 Button states and state events 54 Select Action options 57 Other Action options 62 Appearance options 65 Using predefined buttons and presets 69 Working with Toggle and Radio buttons 71 Working with Text Entry Fields 73 Editing buttons 78 Creating more advanced buttons 79 Using the Input menu for custom input options 82 3 3: Branching and using variables 88 A simple Go To branch 88 Variables and expressions in the Branch menu 89 Branching with the Branch menu 97 Controlling script flow with branches 100 Using sub-scripts 112 4: Scheduling InfoChannel Designer 3 events 116 Scheduling and the Scala InfoChannel Player 116 Types of scheduling 119 Working in the Schedule menu 122 Scheduling with more complex scripts 136 How not to schedule 137 5: Printing scripts with ScalaPrint 142 Understanding ScalaPrint terminology 142 The ScalaPrint menu 144 ScalaPrint tabbed options 145 Different layouts for different pages 153 6: Publishing with InfoChannel Designer 3 156 Multiple media publishing 156 Publishing features 158 Publishing to InfoChannel Network 160 Publishing to CD-ROM 167 Publishing to a file 170 Publishing to Web component 172 Publishing to e-mail 175 Publishing to HTML slides 177 Publishing to video 180 Completing publication of a script 185 EX installation required on playback systems 188 Microsoft components 189 4 7: Additional InfoChannel Designer 3 EXes 192 Launch EX 193 Log EX 194 TextFile EX 197 Serial EX 202 Billing EX 212 MCI MPEG EX 215 Optibase EX 222 Queue EX 228 Windows Scripting EX 236 File I/O EX 240 8: Using the Multi-tile Editor 242 How multi-tiles work 242 The Multi-tile Editor 244 Working in the Multi-tile Editor 251 Appendix A: Function and variable reference 258 Standard ICDesigner functions 258 System variables 265 Sound function 266 File I/O functions 266 Sound variables 266 Operators 268 Appendix B: Licensing issues 271 GIF and TIFF files 271 ICDesigner fonts, backgrounds and sounds 272 Media not provided by Scala 273 Using Scala trademarks 274 Understanding the license agreement 274 Third party redistributable software 275 5 Appendix C: The ScalaScript language 277 What is ScalaScript? 277 Why ScalaScript? 279 Using ScalaScript 281 Experimenting with ScalaScript 282 Switching between menus and ScalaScript 285 Appendix D: Possible problems and errors 287 Errors 292 Index 293 6 Preface This volume of the InfoChannel Designer 3 User’s Guide, “Extended Authoring and Publishing”, covers certain authoring features of Scala InfoChannel Designer 3 that not all script authors need, as well as ICDesigner’s publishing capability for distributed multimedia—multimedia content that can easily be delivered when and where you want it, whether the final destination is in another room, another city, or another country. Note that additional documents in electronic form may be installed on your system, accessible through Start menu shortcuts. The most up to date versions of these documents, as well as a wide variety of other helpful information, are available on Scala’s Web site, http://www.scala.com. ICDesigner resources on the Web Scala’s Web site, http://www.scala.com, is an important resource for ICDesigner customers, dealers, and VARs. For answers to questions you can’t find in the User’s Guides, as well as downloads and additional information relevant to ICDesigner users, the Scala Web site should be your first stop. Pages you will find at the Scala Web site provide: • General product information, press releases, contact data • Technical support: ❖ ❖ ❖ ❖ Registration Troubleshooting FAQs Problem report submission Recommended hardware configurations 7 Preface ICDesigner resources on the Web • Downloads: ❖ ❖ ❖ ❖ • Software updates and demos Bonus art packs Sample scripts Additional documentation on EXes and ScalaScript VAR resources: ❖ Forum ❖ Service packs ❖ Technical support and training 8 • Customer case studies • Third-party support links 1: Using sound Any type of sound—music, voices, the sound of a creaking door, a mouse-button click or a big-city street corner—can be used to enhance an InfoChannel Designer 3 script. The right sound applied at the right time not only attracts attention but also helps create a more vibrant viewing experience. When synchronized with on-screen activity such as a text wipe, page transition or animation, sound adds life to the message you are presenting. A simple voice-over recording can often replace pages of less dynamic text, and adding sound helps attract and maintain the interest of the audience. Sound is another ICDesigner element that enables you to create a script that has the impact and appearance of a polished television production. Sound sources There are three basic sources for sounds that can be played by the computer and used in an ICDesigner script. • Samples: Sound samples are sounds that are digitally recorded and available as files on your hard disk or network, or on a diskette or CD-ROM. The original sound is converted into a digital format that the computer can interpret and reproduce. This is done by taking samples of the sound at periodic intervals. The number of samples taken per second, that is the sampling rate, is expressed in hertz (for example 44100 Hz) or kilohertz (44.1 kHz). The higher the sampling rate, the more closely the digitized sound resembles the original. All audio compact discs (CDs), for example, have a fixed 10 1: Using sound Sound sources sampling rate of 44.1 kHz, but 22 kHz is typical for most multimedia sound files where high fidelity is generally less necessary. 255 sound amplitude and sample value (8-bit) sampled sound wave samples 0 time In addition to the sampling rate, the quality of a sound sample also depends on the sampling precision. This is expressed in bits, and reflects the level of accuracy used to measure the changes in amplitude—the up and down fluctuations—of the original sound. An 8-bit sample stores the sound’s amplitude as one of 256 different values, whereas a 16-bit sample is much more precise because it can choose from 65,536 values. The most common types of sound-sample file on the PC are “wave” files with the filetype extension .WAV and .MP3 files that use MPEG techniques for extreme compression. • MIDI files: A MIDI file is the digital equivalent of a musical score, representing the notes, rests, orchestration and dynamics. The score is created electronically using, alone or in various combinations, a computer, a hardware device or software program called a sequencer, and an electronic keyboard or other controller. MIDI (Musical Instrument Digital Interface) is the standard that defines the way in which these devices are physically connected and the way in which they communicate with one another. MIDI 11 1: Using sound How ICDesigner manages sound also defines the standard for the format of the files that contain the score. These files have the file-type extension .MID. Because the score is electronically recorded and reproduced, MIDI files are extremely accurate. The musical parameters that MIDI files can store include pitch, timing, volume, velocity (the force with which notes are struck), and instrument-specific performance nuances such as the use of the pedal on a piano, or vibrato on a guitar. ICDesigner includes a MIDI player or “conductor” that reads the score and sends the notes to a MIDI sound module. This can be a part of the sound card installed in your PC or an external device such as an electronic instrument connected by MIDI cables. • Audio compact discs: Most CD-ROM drives also enable you to access and play tracks on standard audio CDs. If your CD-ROM drive has this capability, ICDesigner can use it. This means that you can coordinate activities in a script with high-fidelity music. How ICDesigner manages sound The Mixer in ICDesigner enables you to combine sounds from each of these as stereo sources, plus two others. Samples MIDI Mixer Volume Mixer Pan Master Volume Left audio output CD audio Microphone Line input Master Pan Right audio output You can globally adjust the volume of one source relative to each of the others, and you can set all sounds currently playing to new volume levels, which can take effect immediately or over time. The Mixer also 12 1: Using sound How ICDesigner manages sound lets you control the volume of a microphone and a stereo line-level external device such as a VCR or tape recorder. You may want to do this, for example, to simultaneously fade out music in the background of the script and increase the volume of a microphone in preparation for a speech. Sound options The Sound options available to you depend on the type of sound you are working with. The ability to take full advantage of the opportunities they offer depends on the equipment, especially the sound card (if any), installed in the PC used to run your script. For example, most CD-ROM drives enable you to play an audio CD even if you do not have a sound card installed. Without a sound card, however, you cannot use the Mixer to mix the sound with other sources and, even then, this capability varies from card to card. Or, if the sound card is monophonic and not able to produce stereophonic sound, the Pan (balance) controls can be adjusted but have no effect. Escaping hardware limitations Although ICDesigner cannot overcome all of the limitations imposed by your equipment, there are many technical details it handles automatically that would pose insurmountable problems in most other multimedia applications. For example, ICDesigner’s sound technology eliminates many worries involving sample playback on typical sound hardware. Most sound cards can play only one sample file at a time, and cannot play sounds that use sample rates different from the ones it supports. ICDesigner’s audio processing software lets you play several samples at once, and even can perform real-time sample rate conversion if your sound files were sampled at different rates. Similarly, sample precision is handled automatically. So if you have an 8-bit sound card, you can still use 16-bit sound sample files, or play an 8-bit sample on a 16-bit card. Even use 11-kHz, 22-kHz, and 44.1-kHz files in the same script, at the same time. 13 1: Using sound The Sound menu Although there can be some reduction in sound quality, in many cases the difference is unnoticeable. In general, you do not need to worry about the technical aspects of sound; ICDesigner takes care of them automatically whenever possible. Once you have configured your sound card in Microsoft® Windows® so that it works properly outside ICDesigner, further adjustments should not be needed. The Sound menu You see the Sound menu when you click on a button in the Sound column corresponding to an element in the List menu or a page in the Main menu. The Sound menu is also accessible from the Design Buttons menu, when specifying a sound for a button state transition. Command: pop-up In the Sound menu, there are four available panels let you select which type of sound event you want to work with: Sample, MIDI, CD, or Mixer. Each type of event has a list of commands, and each command in turn may have its own set of options and parameters that you use to define the details of the sound event. The Command: pop-up in the upper left corner of each panel determines which options you see. Clicking on the Command: pop-up shows you the list of possible commands associated with that type of sound. When you choose a command, the pop-up shows the name of the command, and the set of applicable controls for that command, if any, appears in the panel. 14 1: Using sound Controlling different types of sound When the Sound button in the List menu or Main menu is blank, it means that no sound of any type is currently applied to the element or page. When you click on a blank Sound button for the first time during an ICDesigner working session, you see the Sound menu shown in the preceding illustration. Otherwise, you see the panel for the type of sound you worked with most recently for that event. When the Sound button is not blank, it means that a sound event is already applied to the element in the List menu or page in the Main menu. The text on the button specifies each sound event that is currently applied; that is, the type of sound and the command defined. In the page row shown below, for example, the Sound button indicates that when the script reaches page 2 a sound sample is scheduled to play. (You might need to adjust the width of the Sound column to see all the information about the sound events. See the section “Customizing columns” on page 53 in chapter 2 of the “Basic Authoring” guide.) When you click on a Sound button containing text, you see the Sound menu and the panel for that type of sound event. If at any time the command you see is not the one you want to work with: 1. Click the tab for the panel of the type of sound event you want to apply. 2. Choose the desired command from the Command: pop-up. The commands available for each type of sound event are discussed in the following section. Controlling different types of sound Defining a sound event in your ICDesigner script inserts an instruction that is similar to a cue in the script of a stage play. In the theater script, a cue may direct the actors to move to stage left or the techni15 1: Using sound Controlling different types of sound cian to dim the lights. In your ICDesigner script, the sound event may initiate a special sound effect or adjust the volume of a musical track that is already playing. In both cases, the cue indicates exactly when and where an action should occur, and it specifies the result that must be achieved regardless of any other previous or on-going activity. And, in both cases, the effect of the cue may be brief or long lasting. Each type of sound—Sample, MIDI, CD—has a set of possible events, each of which has its own panel, as does the Mixer. You access the set by clicking on the panel tab corresponding to the type of sound event you want to work with, and then choose the exact type of event from the Command: pop-up list. You can only specify one command for each type of sound in a single sound event, but you can specify commands for more than one sound type in one sound event. For example, you could put both a MIDI command and a Mixer command in the same event. The events available for each type of sound are summarized in the following table. Sample MIDI CD Mixer None None None None Play Play Play Volume Wait Wait Play MSF Pan Stop Stop Sync Volume Pause Wait Pan Resume Stop Volume Pause Pan Resume Eject Read Contents Next Previous Volume Pan 16 1: Using sound Using sound samples The name of the command is shown on the pop-up, and that name also appears on a button in the Sound column that uses such an event. None is used to remove a sound event for the particular sound type. When the pop-up reads None, no sound event of that type is applied to the current element or page. The controls for each event include settings that define the event, as well as options that make it possible to coordinate sound events with other script events. In the table, notice that several sound events are common to the different sound types. Many of the options in the panels that define these common sound events are the same, regardless of the type of sound associated with the panel. The settings have the same effect and the controls work the same way. As a result, the discussion that follows begins by defining each of the sound events and controls associated with the Sample panel and, thereafter, discusses only the things that are different for each of the other types of sound. Click on Preview at any time to test the sounds and settings you define and to hear how well they fit into the events already applied to the current page. Remember, however, that even though the Command: pop-up might indicate that no sound of a particular type is applied (None), a sound may be playing as the result of events on a previous page. When you click on Preview in the Sound menu, you hear only the sounds applied specifically to the current page. Use the Preview button in the List or Main menu to see and hear what actually happens with pages surrounding the one you are working with. Using sound samples Sample Play command This command enables you to select a sample file and access the command panel for sampled sounds. 17 1: Using sound Using sound samples 1. In the Sample panel, choose Play on the Command: pop-up. You see the Command:Play panel, which looks like this: 2. Click on the File: button to open the File dialog. You can listen to any of the sounds using the Preview icon in the File dialog toolbar. (When you preview sounds in the File dialog, the ICDesigner screen or window goes blank while the sound plays. Click the mouse to end the preview and see the File dialog again.) 3. When you find the sound you want, double-click on the name of the file or click on OK. On the File: button, you now see the name of the file you selected. To define the details of the Play event, adjust the settings in the panel as necessary to play the sound sample you selected. You can define the settings in any order and at any time. Each control in the panel and its purpose, possible settings and ultimate effect in the script, are described below. Loops defines the number of times the sample is played before the next page in the script is displayed or the sample is stopped. You can specify a number between one (1) and ninety-nine (99) or an “infinite repeat” setting (∞). The infinite repeat setting is useful when you don’t know exactly when the event should stop. In an interactive script, for example, you often want music to continue playing in the background until someone presses an on-screen button. Use the Loops value control to define the number of plays you want. If the setting is ∞, the sample doesn’t stop until the next time a sample 18 1: Using sound Using sound samples Stop command is encountered in the script or it is otherwise interrupted. The default setting is 1. Volume controls the loudness of the sound. Adjust the volume by dragging the slider to the position you want on the volume control. The sound gets progressively louder as the slider moves from left to right. The intensity and quality of the sound that is heard at the minimum and maximum settings is determined by the sound card. There is normally no audible sound at the lowest setting, but from some cards you might hear low-level noise when the sound is amplified by your audio system or computer speakers. To ensure the highest sound quality from the card, it is common to first set the volume in the Play panel to the maximum level and adjust the volume of the external amplifier as necessary to produce the loudest sound needed. Then go back to the Play panels of the individual sounds and set the Volume sliders to the desired levels. The volume setting is at the maximum level by default. Fade In Time allows you to gradually increase the volume of the sound from zero to the level set on the Volume control. The setting ranges from zero (0) to ninety-nine (99) seconds. When the setting is zero, the sound sample starts to play immediately at the loudness level defined by the Volume control. Use the Fade In Time value control to make the adjustment. The default time is zero and there is no fade-in period. If you have a stereophonic (stereo) sound card and amplification system, the Pan control changes the balance of the sound going to the left and right channels, moving the position the sound appears to be coming from. When the slider is in the center position, the same amount of sound is produced by each speaker. If the speakers are positioned equally to the left and right of the listening audience, the sound is heard as though it is coming from a position in the middle. 19 1: Using sound Using sound samples Dragging the Pan slider to the left or right of the center increases the amount of sound coming from one speaker as it decreases the amount coming from the other. When the slider is at the far left of the control, for example, no sound comes from the right speaker. Changing the Pan setting of the sound can be very effective when the sound is coordinated with the position of an element on the screen. Unless you specifically change the setting, ICDesigner assumes the sound should be balanced and the Pan slider is in the center position. If you have a monophonic (mono) card or system, adjusting the Pan control has no effect. Wait? instructs ICDesigner to wait until this sound event is finished before proceeding to the next event in the script. When Wait? is on (✓), nothing new happens in the script until the sound event is completed. This overrides any pause setting. For example, if the sound sample you are using is 15 seconds long and a pause setting applied to the element or page is 10 seconds, the sample will be allowed to finish before the script continues to the next page. ICDesigner Note When Loops is infinite, the Wait option works like this: if Wait? is on, the sound continues until the page advances from interactive input. If Wait? is off, the page advances when all remaining elements on the page have completed. If Wait? is off, after the sound starts, other script events occur according to schedule. The sound can continue in the background as the script progresses until it stops naturally, stops because it has completed the number of repetitions you defined in the Loops setting, or stops because you define a sample Stop command later in the script. The Wait? button is available in several Sound menu panels for Sample, MIDI, CD, and the Mixer. By default, is off; that is, the script can continue although the sound events may still be taking place. Leaving Wait? off for one or more events can let you have several sound events going on in the script at the same time. For example, music from a CD may be playing in the background when a button pops up on the screen with a sampled sound as it appears. 20 1: Using sound Using sound samples Sample Wait command Like the Wait? button, the sample Wait command causes script execution to stop and wait for the completion of a sound sample event. The difference is that the Wait? button is an additional option for the current sound sample event (which may be to play a sample, or fade it out, etc.). The sample Wait command stands on its own, and causes the script to wait for a preceding sound sample to finish playing. It ensures that the current element or page continues to be displayed until any sound samples are done. In other words, you use the Wait? button only when you want the script to pause and wait for this sound event. Use the Wait command when for an earlier sound event you needed the script to continue— you left its Wait? button off—and now at a later point you need the script to wait for that sound event to finish. For example, you might need to ensure that narration which accompanies the on-screen activity for several pages is finished before the script proceeds to the next explanation or series of events. The Wait command has no parameters, so its command panel is blank. Coordinating several sound events ICDesigner lets you play as many sample files at a time as you want. If there are several continuing sound samples in the script, the sample Wait command waits for all samples to complete before the script continues. When you need to ensure that several events continuing over several pages must all be finished before the script continues, a useful option is to group pages in the Main menu. When you apply the Play sound event to the group, you must also ensure that the Wait? button in the command panel is on (✓). For details about grouping pages, see “Grouping pages” on page 72 in chapter 2 of the “Basic Authoring” guide. 21 1: Using sound Using sound samples Sample Stop command This sound event stops all sound samples currently playing. The Sample panel for the command looks like this: The function of the Fade Out Time control and the time range available is the same as the Fade In Time control in the Play command panel. In this case, however, the time specifies the number of seconds that ICDesigner should use to reduce (rather than increase) the volume of all the samples currently in effect. The volume levels of the samples may vary when a sample Stop sound event begins, but they are all reduced to zero, no sound, during the time allowed. For example, when the Fade Out Time is 3, all sound samples diminish in loudness until, after three seconds, no sample can be heard. The default fade-out time is 0— sampled sound stops immediately. Wait? is available only when a non-zero fade-out time is specified. When Wait? is on (✓) the script will not continue to the next activity until the all samples have completely faded out. The Wait? setting has priority over a pause setting. For example, if the Fade Out Time is 10 seconds and the pause setting applied to the element or page is 5 seconds, the full 10-second fade completes before the script continues. 22 1: Using sound Using sound samples Sample Volume command This event’s command panel looks like this: To set the loudness for all currently playing sound samples, drag the Volume slider to the position you want. The default Volume setting is 255, the maximum level. If you don’t change it, any samples playing at a lower level will increase in intensity when this command executes. Fade Time specifies the number of seconds that ICDesigner should take to adjust the volumes of the samples currently playing so that they match the level you set in the Volume control. The sound will gradually fade up or down to the level set by Volume. The function of the Fade Time control and the value range available is the same as the Fade In Time control in the Play command panel. By default, the Fade Time is zero and the volume levels are adjusted immediately. The Wait? button is available only with a non-zero Fade Time. When Wait? is on (✓) and a Fade Time is specified, the script will not continue to the next activity until the fade completes. When Wait? is off, some of the samples may not reach the established volume level until later in the script. By default, Wait? is off. Sample Pan command This sound event lets you apply the same Pan setting to all sound samples currently playing. This shifts the current samples’ apparent location between the left and right speakers. This event has no effect on a system whose sound card is monophonic rather than stereo. 23 1: Using sound Using MIDI files The Pan command panel looks like this: To adjust the balance so that it is the same for all sound samples currently playing, drag the Pan slider left or right until the sound is in the position you want. You can continue to work in the Sound menu and define sound events of other types for the current element or page, or you Remember can click on the Sound button in the List menu or You can define only one Sample Main menu and define sound events for a different sound event per element or page. element or page. Using MIDI files If your sound card is able to play MIDI (Musical Instrument Digital Interface) files, it should be set up correctly in Windows before you begin. If you have external MIDI equipment, it also needs to be set up properly beforehand. When a MIDI file is playing, the MIDI equipment is dedicated to playing that file. This means that you can control only one MIDI file in the script at a time. Remember that when one file starts playing, any other MIDI file that is currently playing is stopped. MIDI Play command This event lets you select a MIDI file and adjust the controls that determine how it should be played. 24 1: Using sound Using MIDI files With two exceptions, the MIDI Play command panel is the same as the sample Play command panel (page 17). The steps to access the panel are also the same: 1. Click on the MIDI tab, then choose Play from the Command: pop-up to display the MIDI Play command panel. The Sound menu looks like this: 2. Click on the File: button and, from the File dialog, select the MIDI file you want to use. 3. Double-click on the name of the file or click on OK. You see the Sound menu and, on the File: button, you now see the name of the MIDI file you selected. Tempo adjusts the speed at which the MIDI file is played. It is expressed in beats per minute (BPM) and the setting you see when you begin to work in the command panel is determined by the file you selected. Changing Tempo plays the file slower or faster than the original composition in much the same way that a conductor changes the pace at which an orchestra plays a score. Changing the Tempo does not affect the pitch or quality of the sound that is heard. Use the Tempo value control to increase or decrease the setting. ICDesigner enables you to define a setting in a range from 40 to 300 BPM. A tempo of 100 to 120 BPM is typical and 180 is very fast for most MIDI sequences. You should rely on your own sense of rhythm and feeling to adjust the tempo so that the music fits the mood of the production. 25 1: Using sound Using MIDI files The other settings in this command panel work the same as those in the sample Play panel. For details about how you use these controls, see the discussion of the sample Play sound event beginning on page 17. MIDI Pause command This event temporarily stops the MIDI file that is playing. It is used in combination with the MIDI Resume event, which continues playing the file from the point at which the MIDI Pause event placed it on hold. The MIDI Pause command panel looks like this: The Fade Out Time control and the Wait? button have the same functions and settings in this MIDI command panel as similar controls in the sample Stop command panel. A To avoid confusion paused MIDI file, however, is placed on hold and can If you do not intend to be used later in the script without having to retrieve it define a Resume sound event to complete a Pause from the File dialog and go through the process of event applied to a MIDI file redefining it in the Play command panel. in the script, we recommend that you use MIDI Stop instead. For details about these controls, see the discussion about sample Stop on page 22. MIDI Resume command This event continues a MIDI file that was placed on hold by the MIDI Pause command. The file begins to play at the point where it was paused. 26 1: Using sound Using audio CDs The MIDI Resume command panel looks like this: The functions and settings of each of the controls are the same as similar controls in the sample Play command panel. For details about these controls and how to use them, see the discussion about the sample Play sound event, beginning on page 17. Other MIDI events The MIDI Wait, Stop, Volume, and Pan command panels have the same options and settings as the corresponding Sample command panels. For details about the purpose of any of these MIDI events see the discussion for the related Sample sound event: Wait? page 21 Stop page 22 Volume page 23 Pan page 23 Using audio CDs An audio compact disc (CD) is normally played on a portable or home stereo CD player. However, most modern CD-ROM drives are also able to play audio CDs. To incorporate sounds from a CD into your ICDesigner script, the CD-ROM drive installed in the PC must be able to play a standard audio CD. The documentation for the drive should tell you whether it has this capability. 27 1: Using sound Using audio CDs Multi-unit CD-ROM drives Normally, a PC has only one CD-ROM drive, and only one track on an audio CD can be played at a time. If there are additional drives installed, however, or if the drive can accept more than one disc at a time, ICDesigner can use all of them. ICDesigner detects the drive(s) when you start an ICDesigner working session and you can access tracks and/or files on CDs or CD-ROMs from each drive available. In this case, in each of the CD command panels a CD Unit control is added, which enables you to choose the CD drive or disc number that should be used to generate the CD sound event. New CD! All the CD command panels have the New CD! button. If you work with more than one CD while editing, you should click New CD! after you change a CD in the CD-ROM drive. This updates the table of contents for the CD that ICDesigner maintains in its memory so that times and track numbers can be displayed correctly. This button does not cause a script event. The CD Read Contents command (described on page 36) is the script equivalent. CD Play command This sound event enables you to select a track on an audio CD and define the details of the command that plays the track in your ICDesigner script. The CD Play command panel looks like this: 28 1: Using sound Using audio CDs Track In specifies the number of the track on the CD that should start when the element or page you are defining is encountered in the script. The contents of a CD is divided into units called tracks, which are logical breaks in the sequence of the CD. Although a CD may have only one very long track, it is more common that each song, or each movement in a symphony, or each sound effect—anything that has a recognizable beginning—is a separate track. To identify tracks in the sequence of the CD, each track has a number. All audio CDs have an internal table of contents that references each track by its number and specifies the length of time it takes to play. Most CDs also include a listing of the contents as part of the cover information. Use this listing to determine the number of the track you want to play. Use the Track In value control to pick a track number. The upper limit depends on the number of tracks available on the CD. The default for Track In is track 1. Track Out specifies the number of the last track you want to play. When the Track Out setting is higher than the Track In setting, ICDesigner plays both tracks and all tracks between them. When the Track In and Out settings are the same, ICDesigner plays only the track they specify. Use the Track Out value control to pick the final track to play. ICDesigner initially sets Track Out to match your Track In setting. Other settings The functions and settings of the remaining controls in this panel are the same as similar controls used in the sample Play command panel. For example, Loops specifies the number of times the CD track 29 1: Using sound Using audio CDs repeats. For details about these controls see the discussion for the sample Play sound event and, in particular: Loops page 18 Volume page 19 Fade In Time page 19 Pan page 19 Wait? page 20 CD Play MSF command Unlike the CD Play sound event, which allows you to play only complete tracks, Play MSF lets you use specific portions of one or more tracks. The CD Play MSF command panel looks like this: Time In specifies the exact point on the CD and track where you want the sound to start playing. The time is expressed in minutes, seconds and frames (MSF); for example: minutes seconds frames The CD booklet or insert references each track by number and name. It also usually specifies the length of each track in minutes and seconds; for example 3:45 means that the track is three minutes and 45 seconds from beginning to end. 30 1: Using sound Using audio CDs The CD also has an internal table of contents, which you can’t see, that monitors the length more accurately. These measurements are based on the beginning of the CD, not the track itself, and are defined in terms of minutes, seconds and frames, where a “frame” is a unit of time equal to 1/75 of a second. (This is part of the CD standard and is not defined by ICDesigner. Note that CD audio frames are not related to video or animation frames.) ICDesigner has access to this internal table of contents and enables you to take advantage of the more accurate timing measurements when it is essential that an action in the script is precisely coordinated with the CD sound. The Time In setting is directly linked to the Track In setting. Changing Track In automatically updates the Time In setting to reflect the beginning of the new track relative to the beginning of the CD. If, as you adjust the Time In setting, the value is not within the time frame of the track defined for Track In, the track number is automatically updated to correspond with the time you specify. On the following timeline, for example, if you change the Track In setting to 2, then the Time In setting is 02:10.00, unless you choose to change it. If you define a Time In that is earlier than the time borders of track 2—for example 01:50.50—ICDesigner changes the Track In setting to track 1. track 1 track 2 track 3 00:00.00 02:10.00 05:30.45 To refine the timing, use the value controls to edit the minutes, seconds and/or frames accordingly. Use the Preview button to test the setting in combination with other activities defined for the element or page. Unless you specifically change the Time In setting, ICDesigner uses the starting time of the track number in the Track In setting. 31 1: Using sound Using audio CDs Time Out specifies the exact point on the CD where you want the sound to stop. The Time Out and Track Out settings are related to one another in the same way as the “In” settings described above. Changes in one setting can affect the other and, together, they define precisely where the CD stops playing. Although the Track Out setting may be the same as Track In, Time Out must be later than Time In. Unless you specifically change the setting, the end of the Track Out track is used by default. When the number of Track Out is higher than the Track In, ICDesigner plays only the specified portions of the in and out tracks but plays any tracks in between in their entirety. To experiment with the Time Out setting, use the Preview button to test the result. The functions and settings of the remaining controls in this panel are the same as similar controls in the CD Play and sample Play panels. For details about these controls, see the discussion for the sample Play sound event. Loops page 18 Volume page 19 Fade In Time page 19 Pan page 19 Wait? page 20 CD Sync command This option helps ensure that the activities associated with an element or page are synchronized with a CD sound that is already playing. 32 1: Using sound Using audio CDs The CD Sync command panel looks like this: The Sync command is similar to the Wait command. In essence, it halts the progress of the script until a certain point. The difference is that the Wait command waits for a previously started event to finish. The Sync command waits for a previously started CD to reach a particular time setting you specify, and only then allows the script to continue. Rather than the script determining the CD activity, as it does, for example, in the Play MSF event, the CD actually controls the script in a Sync event; the script cannot continue until the CD reaches a certain point. This is useful, and often necessary, to ensure, for instance, that an animation starts at precisely the right time relative to a CD track or that a caption is coordinated with music for a video. Sync Time specifies the time code on the CD that determines when the script runs the page you are working with. The time is expressed in minutes, seconds and frames (MSF), just as it is in the Time In and Time Out settings in the Play MSF command. Unless you specify a time, the setting is 00:00.00. If the Relative to Track setting is off (not marked with a ✓), this Sync Time means that the script does not run the page until the CD begins again with track 1 or a new CD is inserted. If the Relative to Track setting is on (✓), the page is not run until the current track is repeated from the beginning. Use the value controls in the Sync Time button to set the sync point. In order to set the time precisely, you must experiment with the setting and refine it until the on-screen activity is synchronized with the sound as accurately as possible. Use the Preview button in the Sound 33 1: Using sound Using audio CDs menu and in the List or Main menus to see and hear how the setting fits into the scheme of the current page and surrounding pages in the script. To begin testing from a reasonable reference point on the CD, you can use the information on the cover as a guide to the sequence and duration of each track. If there is a CD player with an elapsed time display available, you can use that to identify the time within one second. To determine a more specific starting point, you may find it useful to check the Time In and/or Time Out settings in the most recent Play MSF command (if any), or, from the Command: pop-up, temporarily choose Play MSF to check the time frames and preview the part of the track you are interested in. You can do the final fine-tuning from the CD Sync command panel. When the script encounters the Sync command before the CD reaches the specified time, the script waits at that point. When the sync time on the CD arrives, the script continues. If other events delay the script, however, and it reaches the Sync command after the CD has passed the sync time, the script just continues normally. This could happen, for example, if a preceding event took more time than you had thought when you calculated the sync time—you might have reduced the speed of a wipe, making it take longer to complete. An element or page associated with the Sync event isn’t lost or overlooked; in this case it just does not appear when you planned. To avoid such difficulties, always preview the script in its entirety and be aware of other events that may affect the timing and coordination. Relative to Track? enables you to choose whether the time you set for Sync Time is relative to the beginning of the CD or relative to the beginning of the track that is currently playing. When Relative to Track? is on (✓), the Sync Time is measured from the beginning of the current track. When Relative to Track? is off, the Sync Time is measured from the beginning of the CD. 34 1: Using sound Using audio CDs Click on the button to switch the setting on or off as necessary. By default the button is off and the timing is measured from the beginning of the CD. CD Eject command If the CD compartment on the CD-ROM drive has a motorized opening mechanism, this sound event automatically opens the compartment and releases the CD. Otherwise, the command has no effect. The Eject command can be especially useful in an ICDesigner production that requires a change in CDs. Combined with a visual cue on the screen page, it provides a clear and unmistakable signal that a new CD must be inserted. When you click on CD and choose Eject on the Command: pop-up, the Sound menu looks like this: Fade Out Time specifies the number of seconds ICDesigner should use to gradually reduce the volume of the track currently playing to zero (no sound) before ejecting the CD. The function of the Fade Out Time control and the settings available are the same as the Fade Out control in the sample Stop command panel (page 22). For example, the settings range from zero (0) to ninety-nine (99) seconds, and a setting of zero means that the CD is ejected immediately when the Eject event is encountered in the script. Zero is the default setting. As in the Stop command panel, the Wait? button is available only when the Fade Out Time is greater than zero. 35 1: Using sound Using audio CDs CD Read Contents command This event reads the CD’s table of contents into ICDesigner’s memory. This is necessary, for example, after an Eject command prompts the user to insert a new CD. The Read ICDesigner Reminder Contents command updates the table of contents that If your script uses more ICDesigner uses for CD events. This ensures that than one CD, you should always use a Read ConICDesigner knows how many tracks are on the disc tents event to update and what their timing is. The Play and Play MSF ICDesigner after a new CD events could not locate the proper points on the CD is inserted. otherwise. The Read Contents has no parameters, so its command panel is blank. Depending on the script, you may find it useful to insert a special event page in the List menu or Main menu to define this event. CD Next, Previous events The CD Next and Previous events select the next or previous track on the current CD, relative to the current track. Other CD events The CD Wait, Stop, Pause, Resume, Volume, and Pan command panels have the same options and settings as the corresponding Sample command panels. For details about the purpose of any of these events, see the discussion of the related Sample sound event or, in the case of Pause and Resume, the related MIDI event: 36 Wait? page 21 Stop page 22 Pause page 26 Resume page 26 Volume page 23 Pan page 23 1: Using sound Using the Mixer Using the Mixer The ICDesigner Mixer enables you to mix sound sources of any type and adjust their volumes or pan settings in relationship to one another. This includes external sound sources such as a microphone or tape recorder, as well as the three primary sound sources discussed in this chapter: sound samples, MIDI files and CD tracks. Mixer settings affect all sound events currently playing or in effect for each sound source. This means that the mixer overrides any settings that were defined individually, such as the volume level in a Play event. Sound events you define for the element or page you are currently working on are also affected by the Mixer settings. Mixer versus Windows sound settings The ICDesigner Mixer duplicates the basic functions of the Windows Sound System Mixer. (The Sample source in ICDesigner corresponds to the Windows “Wave” source.) When you enter ICDesigner, the program copies all Windows sound settings and saves them. When you exit ICDesigner, the saved settings are restored. This way, running ICDesigner does not permanently alter your preferred sound settings. However, while ICDesigner is running, it is possible for the Windows sound settings to be changed by working in the Mixer or playing a script that contains Mixer events. Because this can be undesirable for other applications that might depend on the Windows sound settings, the Mixer has the capability to disable any of its controls, so that they do not override the corresponding Windows settings. 37 1: Using sound Using the Mixer Mixer Volume command This sound event enables you to set volume levels for one or more sound sources and automatically apply the setting to all current sound events related to the source. The command panel looks like this: Master volume slider (all sources shown enabled) The three internal sound sources (Sample, MIDI, and CD) have their own volume controls. When a mixer Volume event occurs, the previous volume settings for sounds for any of these sources whose sliders are enabled are replaced by the mixer Volume settings. This means that if you do not want the volume of a particular source to change, you must be sure that its volume slider is disabled. See the following section, “Enabling and disabling Mixer sliders”, for more information. There are also sliders for two external sources. Line controls the volume to the “line” input connector on a sound card and, thus, to any source such as a VCR or tape recorder that may use this connector. Microphone controls the volume of a microphone using a MIC input connector on the sound card. (If your sound card does not have Line or MIC input connectors, these controls have no effect.) By default, the Microphone and Line controls are set to 0 (no sound), the Master is set to 75%, and the other controls are set to the maximum level. If you have made different volume settings for individual sources, just applying the default settings can affect the volume of those sources. Enabling and disabling Mixer sliders The sliders in the Mixer panel are unique in that they can be enabled and disabled. By default, all sliders are enabled, as indicated by the ✓ to the right of each slider name. 38 1: Using sound Using the Mixer When sliders are enabled they have an effect on the playing script, and also on the corresponding sound sources controlled by the Windows Sound System Mixer. Thus any other applications that use sound through Windows can have these parameters altered by editing changes in the Mixer panel. When sliders are disabled, indicated by the absence of a ✓ by the name and the grayed appearance of the slider knob and numerical value, they have no effect, either on ICDesigner scripts or on outside applications. Enable and disable sliders by clicking on the slider name or on the ✓ beside it. You should leave enabled only the sliders for those sound sources you intend to affect with a given Mixer command, so that settings made in Windows and used by other applications are not unnecessarily disturbed. Tips on adjusting volume levels Some things to remember when you are adjusting the sound levels in your script: • For each sound source there are three controls within ICDesigner that can affect the final volume of the source: 1. the Volume slider for the individual source (for example, in a sample Play event) 2. the setting for that source in the mixer Volume panel (for example, the Sample slider)—this setting overrides any Volume settings made previously to the individual source 3. the Master volume slider in the mixer Volume panel • When you apply a mixer Volume event, you affect the volumes of all sound sources whose sliders are enabled. Also, adjusting the volume control for a source adjusts the volume on all sound events of that type that are currently active. These two factors can produce changes in the volume of sources you did not intend to affect with the event. 39 1: Using sound Using the Mixer Be sure to consider all sources and all the current volume settings and changes you have made in the script when making a new volume setting. Disable the sliders of any sound source you do not need to affect with a Mixer event. The Master volume control adjusts the loudness of all sound sources simultaneously. Doing so, however, retains the relative levels set by the individual Sample, MIDI, CD, Line, and Microphone volume controls. Caution! Setting the Master volume control to maximum may damage a listener’s hearing or cause damage to equipment that is connected directly to the speaker output on the sound card. Although the effect of the individual source volume settings cannot be seen on the mixer Volume command panel, they can be heard. Note that the Sample slider overrides the individual volume settings for all the samples currently playing—they all are given the same new volume. If they originally had different volumes in relation to one another, those will be lost when a mixer Sample volume event occurs. Use Preview as necessary to test the settings; be sure that you preview enough of the script that all concurrent sound events are included. Fade Time specifies the number of seconds that ICDesigner should take to adjust the volumes of the sources to the levels you set. For any source, if the volume of an event that is currently playing is different from the new setting, the sound will fade up or down to the new level. The function of the Fade Time control and the settings available are the same as the Fade controls in any other command panel. By default, the Fade Time is zero and the volume levels are adjusted immediately. As in other Volume command panels, the Wait? button is not available unless the Fade Time is greater than zero. The function of the button 40 1: Using sound Using the Mixer is also the same as elsewhere. In particular, see the discussion about the sample Volume sound event on page 23 for more information about the Fade Time control. Mixer Pan command This event enables you to apply a pan setting to all current sound events from any source except Microphone. The command panel looks like this. The controls in this panel adjust the direction that sounds seem to be coming from. They have the same global effect as the controls in the mixer Volume command panel. The Master Pan control works like the Master Volume control, simultaneously adjusting Pan settings while maintaining the relative settings among the individual sources. The individual source controls work the same way as Pan controls in other sound events such as sample Play. The default setting for all the Pan sliders is centered. Refer to these other discussions, if necessary, as you work in the mixer Pan command panel. In particular, see the sample Pan sound event (page 23) for more information. As with the sliders for the mixer Volume command, the Pan sliders can be turned on and off to allow you to control which sources are affected, and whether the event overrides sound settings external to ICDesigner. See “Enabling and disabling Mixer sliders” on page 38 for more information. 41 1: Using sound Defining several sound events Defining several sound events Unlike other special effects that you specify in the List or Main menus, such as a wipe or pause, several sound events can be specified at once. You can repeat these steps and apply several types of sound to the same element or page before clicking on another button in the Sound column to schedule the next sound event(s) in the script. Also, sound events are not confined to a single page; they can play while the other script events happen. You may want to do this, for example, to use a CD track as background music for several pages. This means that many sound events may be happening in the script simultaneously. You can combine sounds as necessary for maximum impact. Here are a few general guidelines: 42 • On the Sound button for each page in the Main menu or each element in the List menu, you can define, at most, one sound event of each type—Sample, MIDI, CD—and manipulate the Mixer. For example, you can start both an audio CD track and a sound sample when you bring a clip onto the page, but you cannot apply two sound samples to the same clip. • A script may include any number of sound samples and several can be used concurrently. For example, a sound sample scheduled to start on one page may still be playing when another sample starts on another page. • Only one MIDI file at a time can be playing in the script. Unlike a sound sample, a MIDI file that is playing stops if you start another. • When a CD-ROM drive is playing an audio CD, only one track on the CD can be accessed at a time. If you have more than one CD-ROM drive, however, ICDesigner adjusts the command panels accordingly and enables you to use a CD (or CD-ROM) from each available drive. 1: Using sound Defining several sound events Staying aware of your sound events As you work in the Sound menu, the text on the button in the Sound column is constantly updated to reflect the sound event you are currently defining and any others already applied to the element or page. It is not possible, however, to look at the Sound button to determine if any sounds are playing at that point in the script. Even if the Sound button for one page or element is blank, a sound event you started earlier with the Wait? button off may still be playing. This means that you must be aware of the sounds you are using in the script and their playing lengths. In most cases, it will be obvious when the effect of a sound is not what you intended. Adding sound to several pages or events in a row When you have defined all the sound events you want to apply to one element or page, you can click on another Sound button in the List menu or Main menu and continue working in the Sound menu. As with the Wipe and Timing menus, this confirms the settings you have just defined without requiring you to close the Sound menu each time. Clicking on Cancel in the Sound menu resets or cancels only the last sound event you worked with. When you have defined all the sound events you want, click on Close to close the Sound menu. Click on Preview in the List or Main menus to test the effect of the sound events you have defined in the total scheme of the page or script. You can open the Sound menu and work in it at any time to refine the settings as necessary. 43 2: Making scripts interactive A script that is interactive can accept input from the user. Buttons and fields are the key to the world of interactivity in InfoChannel Designer 3. A button or a field is an element in your script that provides for interactivity. These elements give the viewer control over the direction of the production. By using the mouse (or another type of input device, like a touch screen) to select buttons, and the keyboard to enter data into fields, the viewer can make choices about how the script should proceed. A button can trigger almost any kind of event in ICDesigner: jumping to a new page, playing a sound, wiping in an element, even making calculations with variables. This makes it possible for you to create flexible, powerful scripts that can adapt themselves to respond to a wide variety of audiences. Your interactive button, then, could be anything from a cat illustration that “meows” when clicked, to a catalog of product photos and text that a potential customer can browse for information, to a quiz that asks and answers questions differently for every user, and displays their scores at the end. A text entry field can accept typed input just like any e-commerce Web page. It puts what the viewer typed—a name, a product code, a password—into an ICD variable, which can then be manipulated, stored, and transmitted. Buttons are created and edited in the Design Buttons menu, where you work with unique button features: 46 • Go to other locations in the script • Link sounds to buttons • Specify hotkeys for buttons • Set variables based on button activity • Use custom mouse pointers 2: Making scripts interactive Getting started: creating simple buttons • Independently set options for various button states: Normal—normal appearance, sound, variables Highlight—special appearance, sound, variables, custom mouse pointer image Select—special appearance, sound, variables, custom mouse pointer image, Go To Text Entry Fields are created through the Add drop-down, and defined in the Design Text Entry Field menu. Although buttons and fields have special features, they are elements that can be manipulated just like other elements—using wipes, cut and paste, and the other ICDesigner menus. You have all the Element Design options open to you to make the element look the way you want. ICDesigner gives you great freedom to design your own buttons, but you don’t have to do so. The Buttons menu also gives you the option of choosing from a selection of predefined buttons and button backdrops supplied by Scala, which have matched images for the various states. This chapter introduces you to the Buttons and Text Entry Field menus, and walks you through the process of creating these interactive elements. It also discusses the Input menu, where you can set various options related to mouse input, keyboard input, and pointer images. Getting started: creating simple buttons To use a button, you generally need a script consisting of at least a few screen pages. Once you have some pages in your script, you can begin making it interactive. The following examples, “Creating a text button” (below) and “Creating a predefined button” (on page 51) show you how to create simple buttons and illustrate how the use of buttons can change the normal script sequence when you set a Go To. 47 2: Making scripts interactive Getting started: creating simple buttons The examples are intended to show you the basics, but there is much more that you can do when creating buttons. You are encouraged to experiment with ICDesigner’s interactive capabilities and use your imagination to create productions that get your audience involved in the multimedia experience. Creating a text button A button in ICDesigner can be almost any element, so text can also be a button, even when there is no separate button image associated with it. The following example shows you how to make text into buttons. 1. Create four new pages by loading the four backgrounds provided in the ScalaArt:\ClipArt\GuideExamples folder. For the sake of this example, choose “look” for page 1; “clock” for page 2; “hourglass” for page 3; and “idea” for page 4. 2. Go to the Design Text menu for the first page, choose a large font, then type “Clock”, “Hourglass”, and “Eureka!”, each on its own line. 3. Click the Buttons icon. You see the Design Buttons menu, which looks like this to start with: 48 2: Making scripts interactive Getting started: creating simple buttons You make an element a button by choosing a kind of button from the Type: pop-up while the element is selected. 4. Select all three elements at once, then choose Push Button from the Type: pop-up. You will probably see a dialog asking if you want to change the timing of the page to Wait Forever. Click Yes in this dialog. 5. Select the 3-state button. This makes each word into a three-state push button. 6. Press F12 or click the middle indicator in the title bar to change the buttons’ visual state from Normal to Highlight. 7. Go to the Design Text menu and click Shadow. This gives each word a shadow when highlighted. 8. Press F12 again, to change to the Select state. 9. Turn on Shadow, and also change the Front color. The buttons will have a shadow and a new color when selected. 49 2: Making scripts interactive Getting started: creating simple buttons 10. Return to the Buttons menu and go to the Select Action panel. Select “Clock” by itself. 11. Choose Action: Go to Next Page. The Select state is where a button actually does its work. Usually, this means jumping to another location in the script. You choose the destination for a button with the Action: pop-up on the Select Action panel. The Go to Event, Go to Next Page, and Go to Previous Page options let you specify that execution flow should branch to another page when the button is selected. The Action: pop-up is described in more detail on page 58 in this chapter. The Level: selector also visible on the Action panel when Go to Event is chosen displays the level of the script where the destination is. If your script doesn’t have any groups, as in this example, your only choices are “<this script>” and “<this page>”. The Go To: selector indicates which page or event you want the script to advance to. 12. Select “Hourglass” and choose Action: Go to Event. Set the Go to: selector to page 3, and finally select “Eureka!” and set its Go To: to page 4. 13. Select Preview to see the buttons in the three button states; move the mouse pointer over the buttons and click on them to see the highlight and select states. (The preview cannot, however, show the effects of Go To: settings. To see how buttons change script execution, you must run the script.) 14. Click the Main icon to exit to the Main menu. Now run your new script and click on the interactive text buttons you have created to see how they affect the flow of the script. See if you can figure out what needs to be done to return to page 1 after your buttons branch to the other pages. You have now created three simple interactive text buttons. You can follow the same basic procedure to create buttons that start with clips instead of text. There are a number of ways to do this in ICDesigner, 50 2: Making scripts interactive Getting started: creating simple buttons but one of the simplest is to use ICDesigner’s predefined buttons, as in the following example. Using a predefined button 1. Create four different pages by loading four different backgrounds from the GuideExamples folder. Choose Paper for page 1; BlueBG for page 2; YellowBG for page 3; and RedBG for page 4. 2. Go to the Text menu for the first page, and type “blue”, “yellow” and “red”, each on its own line. 3. Go to the Buttons menu by choosing the Buttons icon. 4. Click the Add icon, which opens the File dialog, where you can choose button (.btn) files from the GuideExamples folder. 5. Choose the “Blue1” button. After you choose the button, you return to the Buttons menu, and you see the round button. The button is automatically created as a three-state Push button. 6. Place it next to the “blue” text, which will serve as a label. 7. Follow the same procedure to add the “Yellow1” and “Red1” buttons. You see three round buttons, each having a label of blue, yellow, or red. The buttons appear in their Normal states. Predefined buttons, like the one in this example, have matched images for these various buttons states, so you don’t have to load, create or position separate imagery for each state. 8. Choose one of the three buttons you just created, then press F12 to see how the button looks in its highlighted state. 9. Press F12 again to see how the button looks in its selected state. 10. Select the “blue” button and click the Select Action tab. 11. Choose Action: Go to Event and set the Go To: selector to page 2. (You could also use Action: Go to Next Page for this one button.) 51 2: Making scripts interactive Working in the Design Buttons menu 12. Select the “yellow” button, choose Action: Go to Event, and set the Go To: selector to page 3. 13. Select the “red” button, choose Action: Go to Event, and set the Go To: selector to page 4. 14. You can click Preview to see how the buttons appear in the different states. 15. Click Close to exit the Buttons menu. 16. Run the script and try out the buttons. You have now learned how to create two types of buttons—text and predefined. The remainder of this chapter talks about working in the Buttons menu and creating more advanced buttons. Working in the Design Buttons menu The Design Buttons menu can be accessed from the Main menu Design drop-down, pressing F5, or by clicking the Buttons toolbar icon from any other Design menu. When you enter the Buttons menu, you see the Type panel, which gives you several options for button type. Button types The button Type: pop-up controls whether an element is a button, and if so what type of button it is. The possibilities are: • Push Button Push buttons are the most common and versatile type of button. They are typically used for branching to another page of the script, or accepting some kind of response from the viewer. A Push button can have one, two, or three visual states. • Toggle Button A Toggle button is used to switch a logical variable between its two possible values, on and off. This makes it easy for a script to accept and respond to Yes/No kinds of input from the viewer. 52 2: Making scripts interactive Working in the Design Buttons menu The button itself can have either two or four visual states. Unlike a Push button, a Toggle button remains in its selected state after being clicked so that its value is obvious. • Radio Button A Radio button is similar to a toggle button, but it works with any kind of variable, so it can assign any type of value (text, numeric, or logical). Like a Toggle button, it has either two or four visual states, and remains in its selected state after being clicked. Changing a button’s type It is possible to change a button from one type to another. Just select the button and then choose the new type from the Type: pop-up. When you do this, you see a confirmation dialog telling you that button attributes unique to that button type will be lost in the conversion. Turning a button back into a normal element For any element selected while in the Buttons menu that is not a button, the Type: pop-up shows None. If you need to turn a button back into a normal element, select it and then choose Type: None. A warning dialog indicates that you will lose any button attributes you may have already defined if you do this. Button basics In ICDesigner, there are many ways to create a button. You can start with ordinary text, or a clip or graphic object, and turn them into buttons. You can start with predefined button files supplied by Scala, and add text or imagery as labels. And you can build buttons using your own text along with predefined files from Scala in various combinations, or by modifying buttons that you have previously created and exported. Face and backdrop Buttons you make in ICDesigner have two possible components for each state: backdrop and face. The face (text, for example) is generally used to identify the button. The backdrop is an area underneath the face that helps make the face visible against background imagery and emphasizes it or makes it look more presentable. 53 2: Making scripts interactive Button states and state events Buttons with a backdrop image and no visible face, or with a face and no visible backdrop, are possible and may be useful. Keep in mind, however, that the face must be a single element only. You are always free to label your buttons with additional plain text or clips that are next to or on top of a button. If you do so, however, you will then have to move and adjust those items separately whenever you edit the button, and they will not change when the button changes state. Button states and state events Different types of buttons have different state options. Push buttons can have one, two, or three visual states. Toggle and Radio buttons can have either two or four visual states. When you have selected a type of button that has multiple visual states, a series of buttons appears on the menu showing the choice of number of states for that button. Click one of the choices to establish the number of states for the button you are creating. Choosing and keeping track of button states When you create a multi-state button, or select an existing multi-state button, a row of three or four identical buttons appears in the title bar of the Design menus, just to the right of the menu name. Each button has a “button” icon on it, and represents a particular state of the currently selected button. You see these indicators in the title bar of any Design menu whenever a Push, Toggle, or Radio button is selected. At least one of these title bar indicators is always selected, indicating the current state of the selected button. If you have defined a Push button with fewer than three states, or a Toggle or Radio button with fewer than four states, the title bar indicator(s) for the unused state(s) are disabled. More than one state of the selected button(s) may be current at a given time, so that you can apply the same styles and attributes to several states at once. Select multiple button states to affect them all with the 54 2: Making scripts interactive Button states and state events same attributes by Ctrl-clicking as many title bar state indicators as desired. Normal state (selected) Highlight state (not available) Select state (not selected) 2-state Push button indicators Highlight On state Normal On state Highlight Off state Normal Off state 4-state Toggle or Radio button indicators 2-state Toggle or Radio button indicators To cycle through the states of the currently selected button, use the F12 shortcut. Or you can click the title bar indicators to switch directly to a particular state. To remind yourself of which state a title bar indicator represents, hold the mouse pointer over that indicator. The Tool Tip that appears identifies which state it represents, as illustrated here. Both F12 and the title bar indicators are available in any Design menu. Most of the options in the Appearance and Action panels can be applied independently to each of a button’s states. Push button states A Push button with one state has a single appearance. It can respond to being selected, but the button itself cannot give any visible response to the mouse passing over it or clicking on it the way a button with multiple states can. 55 2: Making scripts interactive Button states and state events A two-state Push button can have a different appearance for its Normal (idle) state and its Select state (when it is clicked by the mouse). A Push button with three states can have separate appearances for Normal, Highlight (mouse pointer touching it but not clicked, or highlighted by using arrow keys) and Select (clicked-on) states. If you do not make changes to the button for its Highlight state, the button keeps its normal imagery when the mouse pointer is over it. Using the Highlight state is valuable in most interactive productions as a way of letting viewers know where buttons are, so they know when they can click or press Enter (↵) to choose a button. During playback, a button displays the Select state when it is chosen by clicking on the mouse, when the viewer presses Enter (↵) while the button is highlighted, or when the viewer touches the button on the screen if using a touch screen. Using different imagery for the Select state helps confirm for the viewer that his or her choice has been noticed and accepted. You can also create hotkeys to select buttons. See page 61, “Creating hotkeys”. Toggle and Radio button states The states possible for Toggle and Radio buttons are somewhat different from those of Push buttons. These button types are always in either an Off or On state. Additionally, for a four-state button, both the Off and On states can have a Highlight state as well as a Normal state. A two-state Toggle or Radio button can be either Off (typically appearing like a Push button in the Normal state) or On (typically appearing like a Push button in the Select state). It does not respond to the mouse pointer until clicked on. A four-state Toggle or Radio button works the same way, but both the Off and the On positions also have a Highlight state to indicate when the pointer is over the button. 56 2: Making scripts interactive Select Action options When a Toggle or Radio button is clicked on, the button changes state, but unlike a Push button, it remains in the changed state after the mouse button has been released. A Toggle button switches from its current state to the opposite state whenever it is clicked. Clicking a Radio button, however, can only switch it from its Off to its On state. Clicking a Radio button in its On state does not switch it back to Off. For this reason, several Radio buttons are typically used together to let the user make choices. See page 71 for information on using Toggle and Radio buttons. Select Action options There are two panels in the Buttons menu for controlling the actions that can happen when using the action-oriented button types (Push, Toggle, and Radio buttons): the Select Action panel and the Other Action panel. Actions on button selection The Select Action panel is for specifying the primary purpose for an action-oriented button. In particular, it lets you choose what happens when the button is put into the Select or On state. (This occurs when the button is clicked on, or the viewer presses Enter (↵) or a defined hotkey while the button is highlighted.) Most often, the action is a branching type of operation, moving to another event or page within the script. However, other types of action are also possible. 57 2: Making scripts interactive Select Action options The Action: pop-up on the Select Action panel has the following options: • • • • • • • None Go to Event Go to Next Page Go to Previous Page Return to Bookmark Exit from Script Show WWW Page Using Go to actions The three “Go to” actions allow you to make script execution move to some other location in the script, from which execution continues. The new location can be another page or another event on a page. This lets the response to a button be almost any series of scriptable events. You can return to the original button location after a button Go to by setting a bookmark. The Go to Event action Go to Event is the most flexible button branching action. Consequently it requires you to specify both the destination itself and the level of the script where the destination exists. You see the controls for these on the panel when you choose Action: Go to Event. Use Level: to choose the level of the script where the destination is. Use the selector to cycle through the levels. If the destination is in the same group you are in, you can leave the selector as is. If your script has no groups, the only choices are <this script> and <this page>. Only levels at or above the current level are accessible. 58 2: Making scripts interactive Select Action options Use the Go To: selector to choose the page or event that you want the script to advance to when a button is selected. In most cases, the Go To will be set to a page. Use the selector to choose a page number. A thumbnail of the destination page is shown in the box to the right of the button. Note that if you just want to advance to the immediately following or preceding page in the script, it is simpler to use the Go to Next Page or Go to Previous Page actions. Setting a Go To to an event on the current page is also possible: set the Level: selector to <this page>, then use the Go To: selector to cycle through events on the page. Setting a Go To to events is used in advanced productions, and is covered in chapter 3. Leave Bookmark? allows you to return from a series of events after branching with a Go to Event. Click on Leave Bookmark? to turn it on (✓). Then, at the end of the button’s series of Go to events, insert a special event. On this special event, open the Branch menu and select the Go To panel. Choose Action: Return to Bookmark. When executed, this returns the script to the bookmark location, which is immediately after the original Go to Event. Using Go to Event with a bookmark lets you define sections of a script as independent units that you can go to and return from whenever a button is clicked. For details on using a Go To in the Branch menu, see the section, “Using Go To with a bookmark” on page 110 in chapter 3. Going to the next or previous page A very common type of button-activated branch is advancing to the next page in the presentation, or returning to the preceding page. Because these branches by their nature do not require the options that the general-purpose Go to Event action has, ICDesigner provides simplified actions to handle these two particular branches. The Go to Next Page and Go to Previous Page actions do just what their names imply, advancing to the screen page that immediately follows or precedes the current page on the Main menu. Neither action requires a Level: selection, and because the destination page is implicit, a Go To: selector and page thumbnail image are left out. Leave Bookmark? is 59 2: Making scripts interactive Select Action options also omitted, because you can always return to the original page by using the complementary Go to page option. Returning to a bookmark When using a Go to Event branch on a button or in the Branch menu, you can choose to use the Leave Bookmark? option. This allows you to set a marker to which a later event can return. In this way, you can define sections of a script as independent units that you can go to and return from at any point in the script. This is discussed in more detail, with an illustration, in the section “Using Go To with a bookmark” on page 110 of chapter 3. As with bookmarks and Go Tos on the Branch menu, bookmarks left with a button Go to Event action are used in conjunction with an action that restores the current execution location in the script to the bookmark location. This is Action: Return to Bookmark. The typical usage of this action would be as the Select Action of a “Return” or “Back” interactive button that you would place on a page that was the last in the unit branched to by a Go to Event button. Exiting from a script Although most productions are designed to run continuously, some need to allow the viewer to exit from the script. Creating a button to do this is very simple. Just give a ICDesigner Note button the Exit from Script action as a Select Action. If this button appears within a sub-script, the sub-script This ends the script, returning the viewer either to is exited and execution of Windows, or to the Main menu if the script was run the parent script continues. from within ICDesigner. Viewing a Web page from a script The last Action: possibility, Show WWW Page, actually allows the viewer to jump out of the ICDesigner presentation environment. You see the URL: text box in the panel when Show WWW Page is selected. Enter the address of the desired Web page there (for example, enter http://www.scala.com to jump to Scala’s Web page). When someone clicks a button that has this as its Select Action, ICDesigner attempts to launch or activate the preferred Web browser. If successful, it then tries to connect to the Web page specified. 60 2: Making scripts interactive Select Action options If ICDesigner is in full-screen playback mode, the playback screen is minimized so that the Web browser window is visible on the desktop. Creating hotkeys You can specify a hotkey for any Select action. When a hotkey is defined for a button, instead of using the mouse or Enter (↵) to choose the button, the user can employ the hotkey. Set a hotkey by using the Hotkey: selector in the Select Action panel to cycle through the most common possible hotkeys, or type the hotkey you want into the space between the arrows. With the selector, you can choose any key from A to Z, 0 to 9, F1 to F12, standard symbols and Space as hotkeys. To specify other keys than these—such as accented characters that might be unavailable on the keyboard you happen to be using for authoring—you can enter a keycode value in the format 0nxxx, where xxx is replaced by the keycode. The keycodes for all possible characters are available in the character table in appendix C of the “Basic Authoring” guide. For example, enter 0n214 to make Ö a hotkey. Shift, Alt, and Ctrl can be used as qualifier keys, singly or in combination. Use those key names, and link the qualifier(s) and the main key with a hyphen. For example: To make this action select the button: Enter this in the Hotkey selector: holding Shift while pressing F shift-f holding Alt while pressing C alt-c holding Control while pressing X ctrl-x holding Control and Alt while pressing P ctrl-alt-p Capitalization is ignored in the Hotkey: selector—ctrl-C, CTRL-C, and ctrl-c all define the same hotkey. So to define an uppercase letter as a hotkey, you must enter shift with the letter. Entering the capital letter will not work: use shift-k to make the uppercase K a hotkey. 61 2: Making scripts interactive Other Action options You can also use some special key names: To use this in a button hotkey: Enter this in the Hotkey selector: up arrow (↑) up down arrow (↓) down left arrow (←) left right arrow (→) right Enter key (↵) enter Tab key ( tab ) Backspace key (⇐) backspace Esc (Escape) key escape left mouse button mouseleft middle mouse button mousemiddle right mouse button mouseright Other Action options The Other Action panel of the Buttons menu provides options for secondary responses to button events. Secondary responses available are: 62 • adding sound • setting a variable • changing the mouse pointer 2: Making scripts interactive Other Action options Secondary actions are available for button selection status transitions. In other words, these actions take place when a button changes selection status. Selection status is closely related to a button’s visual state, with the important distinction that any the selection status transitions can occur regardless of how many visual states you have defined for a button. So, for example, even a 1-state Push button can have secondary actions defined for a transition to the Highlight state, regardless of the fact that the button itself does not have a visual Highlight state. The possibilities available from the Transition: pop-up on this panel are: • Mouse off button – the action takes place when the mouse moves off a button or otherwise becomes idle, typically changing to the Normal state from the Select/On or Highlight states • Mouse over button – the action takes place when a button is passed over by the mouse pointer or otherwise is highlighted, typically changing to the Highlight state from the Normal state • Button selected – the action takes place when a button is selected, typically changing to the Select/On state from the Normal or Highlight states From the Transition: pop-up, choose the state transition to which the secondary action should apply. Then choose one or more of the three actions at the right of the panel. The actions happen when the state transition displayed on the pop-up takes place. Adding sound To add sound to your buttons, click on the Sound: button on the Other Action panel. This opens the Sound menu, where you can choose and adjust sounds. 63 2: Making scripts interactive Other Action options Each button state can have a different sound. You may, for example, give your button a click sound when it is highlighted, and, if you are working with a button showing a bus, ICDesigner Note for example, the sound of a horn honking when the A sound or variable set for button is selected. Mouse off button does not happen when the button first appears, but only when the button returns to the Normal state from another state. When the state transition for which you have set a sound on the button occurs, the sound event plays. It plays to completion, even if the button does not remain in the state that triggered the sound. For details on working in the Sound menu, see chapter 1, “Using sound”. Setting variables ICDesigner lets you set a variable value when a button changes state. Clicking on the Variable: button in the Other Action panel opens the Variables menu, where you can set variables. The Variables menu for buttons is the same as the Set Variables panel of the Branch menu. You have as much freedom as elsewhere in ICDesigner to use system variables, functions, expressions, and operators to set values for your script variables. For example, you may want explanatory text to appear at the bottom of the screen each time a particular button is highlighted. To do this, with the pop-up set to Mouse over button, click Variable: to open the Variables menu. In the Set Variable: text box, enter HELP=“Jump to first page”, for example, and click OK. Then, on your button page, type “!help” at the bottom of the screen. Now each time that button is highlighted, explanatory text appears at the bottom of the screen. You can also set variables to keep track of how many correct and incorrect answers a student has given in a quiz script, for example, or to create an on-screen calculator that actually does computations. Refer to chapter 3, “Branching and using variables” for information on creating and modifying variables and expressions. Using alternate mouse pointers You can change how you want the mouse pointer to appear depending on button state. The Pointer: button in the Other Action panel lets you 64 2: Making scripts interactive Appearance options change the mouse pointer shape when the interactive button changes states. Click Pointer: to open the File dialog, where you can select and load a clip to use as a mouse pointer. The pointer is ordinarily the default arrow, or the pointer image specified by the most recent Input menu event (see “Changing mouse pointer designs” on page 83 for more information). When you move the pointer over a Push, Toggle, or Radio button, its appearance changes by default to a hand with the finger extended. For a Text Entry Field, the default pointer image is an “I-beam” ( ) (The Text Entry Field’s Pointer: button is found on the Field panel of the Design Text Entry Field menu.) Changing the mouse pointer by using the Pointer: button does not change the default pointer for your script. If you want a different pointer image that affects the entire script, you must use the Input menu. (See page 83, “Mouse pointers” in this chapter.) Changing the pointer image is particularly useful if the button image is invisible, to let the viewer know that buttons are present. (Invisible buttons are described on page 70.) You may, for example, have a picture of a flower, on which you have placed an invisible button. To let people know that the flower has been highlighted, you could change the pointer from the default arrow in the Normal state to a bee in the Highlight state. Now when someone moves the mouse pointer over the flower, a bee appears, which indicates that the flower is a button and has been highlighted. To remove a pointer image from a button state transition, click Pointer: while that transition is selected on the pop-up, and, in the File dialog, click the Clear Pointer button in the Options section. Appearance options As described previously, buttons made from text elements, clips, or graphic objects can always be edited using the facilities of their Element Design menus to change how those buttons look. The Buttons menu has some additional options for controlling button appearance, 65 2: Making scripts interactive Appearance options accessible in its Appearance panel. The appearance options apply to whichever button state is currently selected, as indicated by the highlighted title bar button-icon buttons. Button backdrops Backdrop Image: lets you choose a backdrop—a predefined image that you can put underneath a “face” element, such as a word or clip. The backdrop image stretches to fit the size you want. You can use any normal clip image, and it will stretch to fit the button. If you use the Scala “multi-tiles” with the .PNG file-type extension, the image does not look distorted the way stretched bitmap images often do. These backdrop images typically have beveled edges, with special effects like rounded corners and patterned backgrounds. They are the ideal way to make plain text buttons look like they were custom-drawn by hand. You can create and edit multi-tiles for custom button backdrops using the Multi-tile Editor available from the Tools drop-down, as described in chapter 8. To use a button backdrop, select a button and click Backdrop Image:. You see the File dialog. You can use the File dialog to see both clip and multi-tile images. After you choose a backdrop, you see the Buttons menu again, and the button you selected with the backdrop image underneath it. You can select a different backdrop image for each button state, if desired. The backdrop stretches to fit the button element; for example, if you type more text into the button, the backdrop becomes longer. You can also make the backdrop larger than the normal size of the element with the Border width and height attributes on the Effect panel of the 66 2: Making scripts interactive Appearance options Element Design menus. In other words, a button backdrop behaves like a more elaborate version of the normal Backdrop style you can select on the Text and Clips menus, typically giving an effect similar to using Backdrop and Bevel together. To remove a backdrop image from a button, click Backdrop Image:, and, in the File dialog, click the Clear Backdrop button in the Options section. Loading clips on the Buttons menu Clicking on the Image: button on the Appearance panel opens the File dialog where you can choose a clip to replace a clip currently being used as a button face. When a text button is selected, the Image: button is disabled. Note that you cannot use the Image: button for adding button preset or predefined button (.BTN) files. To add a predefined button, with its matching images for the various button states, you use Add, from the icon toolbar; to put a preset backdrop under a button, use Apply Preset: (see page 69, “Using predefined buttons and presets”). Shifting the button face The Shift option makes it easy to center a button face within a backdrop, and to make an “indenting” 3-D button look more realistic. It allows you to specify an offset, in pixels horizontally and vertically, that the button face (text or a clip) has from its normal position in relation to its bounding box. You can specify the same offset for all button faces, or a different offset for each. The most typical use of Shift is to use a small offset down and to the right for the selected face of a button that has a beveled style. This heightens the illusion that the button is being pressed down when it is clicked. Or, if one state of your button uses a shadow down and to the right, a simultaneous offset up and to the left makes it appear that the button face has moved up off the surface of the screen. Button backdrops automatically stretch to fit the larger area created by the offse. 67 2: Making scripts interactive Appearance options text button on backdrop, no Shift text button with Shift 27,10 Global button state options The three on/off options in the middle column of the Appearance panel are not per-state, but affect all the states of the selected buttons. Adjusting the hit area The Boxed Hit Area? button lets you adjust the button’s hit area—the area in and around the button that responds when ICDesigner Note the mouse pointer moves over it or clicks on it. The The normal hit area of a text elehit area of a button can be rectangular or it can be an ment is defined by its backdrop irregular shape. size, including Border plus Bevel Thickness; for a clip it is its bounding box. The easiest way to see an element’s boxed hit area is to select it—the selection frame is also the hit area. When Boxed Hit Area? is on (✓), as it is by default, the hit area of the button is rectangular. When this option is off, the hit area is defined by the pixels of the button image, as opposed to the background. The primary use of this option is with clip images that have transparent areas. The hit area of a round button (which has transparent corners), then, can be round. If you have selected three elements with different sizes for the three different buttons states, ICDesigner uses the size and position of the Normal state image for the hit area determination. Maintaining consistent button size Because you can adjust the different button states independently, it is possible to have different sized buttons for each state. This is occasionally useful, but normally you want the button states to match in size. For this reason, the Link Sizes? button is on by default. Link Sizes? forces any size changes you make in one button state to be reflected in the other state(s) so that their sizes match. If this causes problems and 68 2: Making scripts interactive Using predefined buttons and presets you need to have independent control of the sizes of a button’s states, turn this option off. Maintaining consistent position ICDesigner also lets you position button states independently, if you desire. However, most buttons are designed so that the states overlap each other and thus must be in the same position. The Link Positions? button therefore defaults to being “on”, causing button states to retain their relative positioning as you move any one of them. If you do need to position button states independently, turn off Link Positions?, move the individual button states to the correct places, and then turn the option back on again. You can then move the entire button (all states) as necessary without losing the relative positioning. Using predefined buttons and presets ICDesigner offers two ways to reduce the amount of time and effort you must spend creating buttons: predefined buttons and button presets. Both allow you to load a single file that can create all three button states for you, with appropriate Shift and Border values, and even predefined sounds and custom pointers, so that you do not need to set all these things yourself. Nonetheless, once they are loaded, you can modify the buttons to further customize them to your purpose. Button presets Button presets load a set of backdrop images that are already aligned, and contain appropriate Shift and Border settings so that an element fits neatly into the backdrop with no additional effort. They are not complete buttons—they are too plain to be very useful without a label or image as a face element to identify the button’s function. Presets are thus much like an elaborate kind of style that you can apply to buttons. You use button presets by choosing Apply Preset: from the Appearance panel when a button is selected. You see the File dialog open to the Buttons folder, where you can choose a preset .BTN file. 69 2: Making scripts interactive Using predefined buttons and presets Presets are used primarily a simple way to “dress up” text buttons: if a text button is selected when you load a preset, the button backdrop automatically adjusts to fit the text. The same is true if you begin with a clip; the backdrop stretches to follow changes you make in clip size. Predefined buttons Predefined buttons provide complete matched, professionally designed images for three different button states. Some are designed so that they can be useful as is, for example, there are many arrow variations that are useful in common script navigation tasks, and buttons with universal symbols that could be perfect for various kinds of prompting in multimedia environments. Load predefined buttons by clicking the Add icon. You see the File dialog, where you can choose predefined buttons (.BTN files) from the Buttons folder. Clicking OK returns you to the Buttons menu with the button design you chose visible on the page in its Normal state. The images in predefined buttons are face images, which means that you cannot attach further face elements to the button. You can, however, add text or other clips as separate elements on top of or next to predefined buttons if necessary. The button will not adapt to these elements, and options like Shift and Link Positions? do not apply to them. Invisible buttons You can create invisible buttons by using the button file “Invisibl.btn”. An invisible button does not have any imagery associated with it, but a rectangular button “hit area” on the screen is still created. You may, for example, have a page showing a photo of several people, which displays a person’s name when his or her face is highlighted, and displays further information when selected. By using invisible buttons, there is no button imagery to interfere with the photo. 70 2: Making scripts interactive Working with Toggle and Radio buttons Working with Toggle and Radio buttons For certain kinds of applications, the type of interactive input and visual feedback afforded by Toggle buttons and Radio buttons is more appropriate than standard Push buttons. When the viewer needs to make choices on the same page, and see the various choices before proceeding, the fact that these button types remain in their clicked states is helpful. How Toggle and Radio buttons use variables Both Toggle and Radio buttons are automatically set up to control and respond to variables. Toggle buttons control only logical (on/off) variables. Radio buttons can control logical, text, or numeric variables. For either type, you associate a given button with one variable. The same variable can be associated with more than one button, however. The variable’s value changes based on the button state (whether the mouse has moved over it or clicked it). Likewise, the button responds to changes made to the variable’s value, by changing to the corresponding state. This means that buttons can be made to change their state, and thus their appearance, by changing their variable values, not just by responding to mouse clicks. In this way, you can have different buttons that visibly respond to each other, or to other events in a script. Toggle buttons A Toggle button functions just like a switch: it flips a logical variable between its two possible values, Off and On. For a two-state Toggle button, the Off and On states correspond to Normal and Select. For a four-state Toggle button, there are Normal Off and Highlight Off states, and Normal On and Highlight On states. (In this case, “normal” means non-highlighted, rather than Off.) A four-state Toggle button is usually in the Normal state; it can be highlighted when either On or Off. If another button or some other event in the script sets the variable to On or Off, the button state is automatically switched accordingly. 71 2: Making scripts interactive Working with Toggle and Radio buttons Creating a Toggle button To create a Toggle button: 1. Select the element you want to make into a Toggle button. 2. From the Buttons menu Type: pop-up, choose Toggle Button. In the panel you see the 2-state and 4-state buttons for selecting a number of states, and a variable list. Four state indicators appear in the menu title bar. 3. If there are already logical variables defined in this script, their names are shown in the variable list and you can choose one to associate with this button. Otherwise, click New Variable and in the dialog, enter a name to create a new logical variable with a default value of Off. Turn on the External? option if you want a new variable to be common to this script and any scripts above it in the script structure. 4. By default a two-state button is created. If you want a four-state button, which highlights when the mouse pointer moves over it, click the 4-state button. The Variable button on the Other Action panel can be used to change another variable associated with this button. ICDesigner Note It is possible to produce exactly the same functionality as a Toggle button with a Radio button, but there is no advantage in doing so. You can now use the options on the Appearance and Action panels, described earlier in this chapter, to define what the button looks like in each state, and what it does. Note that it is possible but generally does not make sense to use a Toggle button for branching. Radio buttons Radio buttons are closely related to Toggle buttons. The difference is that Radio buttons allow you to use any type of variable, not just logical variables. This also implies that, when using text and numeric variables, you are not limited to in your choice of values to assign to the button states. You can choose any valid value you like for the button variable in a given state. This makes Radio buttons more versatile than Toggle buttons. 72 2: Making scripts interactive Working with Text Entry Fields Creating a Radio button The procedure for creating a Radio button is basically the same as for a Toggle button, except that you also must specify a variable value: 1. Select the element you want to make into a Radio button. 2. On the Buttons menu Type: pop-up, choose Radio. You see the 2state and 4-state buttons for selecting the number of states, and the variable list. 3. If there are already variables defined in this script, they are shown in the list and you can choose one to associate with this button. Otherwise, click New Variable. First choose a variable type and then enter a name to create a new variable. Turn on the External? option if you want a new variable to be common to this script and any scripts above it in the script structure. 4. In the Value: text box, enter a value for the variable you have chosen or created. 5. By default a two-state button is created. If you want a four-state button, which highlights if the mouse pointer moves over it when the button is either On or Off, click the 4-state button. The Variable button on the Other Action panel can be used if you want to change another variable associated with this button. You can now use the options on the Appearance and Action panels, described earlier in this chapter, to define what the button looks like in each state, and what it does. Working with Text Entry Fields Text Entry Fields allow a viewer to enter data with a keyboard. For example, the viewer could be asked to enter his or her name, and the script could then refer to the viewer by name. More sophisticated applications of Text Entry Fields can gather, store, and process information entered, use it as a basis for branching, and display choices made by the script. 73 2: Making scripts interactive Working with Text Entry Fields Like Toggle and Radio buttons, Text Entry Fields require a variable. The variable must be a Text variable, and whatever the viewer enters in the button is stored in this variable. The variable can be displayed and manipulated the same as any other variable in ICDesigner. Unlike buttons, Text Entry Fields do not have different states, or any possible action other than accepting keyboard input. Thus a Text Entry Field has only one possible appearance. Creating a Text Entry Field 1. From the Add drop-down, choose Add Text Entry Field. You see a dialog asking you to choose or create a variable for the field. 2. If there are already any user-defined Text variables, they are listed and you can select one. Otherwise, enter a name in the Variable: text box to create a variable by that name. 3. Turn on the External? option if you want a new variable to be common to the script and any sub-scripts that it has. 4. On the page, you see the variable name within a dashed box with graphic handles, representing the size of the field. The menu changes to the Design Text Entry Field menu. You can now move and/or resize the field as necessary. 74 2: Making scripts interactive Working with Text Entry Fields 5. Specify options for the field, its text, and the mouse pointer. You have all the options normally available to text elements in the Design Text Entry Field menu. (The illustration above shows a field that has been given a backdrop; the text has a contrasting color and an outline.) There is also an additional panel in the menu devoted to options specific to field elements. Text Entry Field options The Design Text Entry Field menu is nearly identical to the Design Text menu. Aside from the addition of the Field panel, the only differences between the two menus are: • the Text Entry panel of the menu contains a Cursor button with a color block • the Position panel contains an Element Size control • the Misc panel does not have the Update: pop-up • the Alignment panel does not have Word Wrap or Line Space options, but does have a Vertical Text Alignment pop-up 75 2: Making scripts interactive Working with Text Entry Fields Field appearance As it first appears on the script page during playback, the Text Entry Field contains nothing. The viewer just clicks in the field and begins typing a response. If you want the field to have something particular in it to begin with, assign the text you want to the field’s variable with a Branch menu special event. Also, in playback the field initially is invisible; you should use one of the available options to make the field apparent to viewers. Once a viewer clicks within the field a text cursor appears. The appearance of the variable name text that you see while working with the field (its font, styles, etc.) is what the viewer will see when typing into the Text Entry Field. Adjust the styles as necessary. Note that because you can adjust the size of the field, both Horizontal Text Alignment and Vertical Text Alignment options are available. New / Edit Variable Click the New / Edit Variable... button to create additional variables to be associated with Text Entry Fields, or to change the External? option of variables. If you only want to change the association of the field to another existing variable, you can just select it in the scrolling list above this button. Field Length It is possible to limit the number of characters that can be entered in the Text Entry Field by turning on (✓) the Field Length? button. When on, this option becomes a value control to let you specify the maximum number of characters that can be entered. This limit is independent of the physical size of the field. Password One common usage of text entry in an interactive script is entering a password, to control access to information and options in the script. Typically, when passwords are typed in a computer system, asterisks (*) are substituted for the characters typed on the screen, as a security feature to prevent onlookers from learning the password. This pass76 2: Making scripts interactive Working with Text Entry Fields word concealment function is available by turning on (✓) the Password? option for a Text Entry Field. Decimal Only You can restrict the allowed input to numeric characters by turning on Decimal Only?. When this option is on (✓), only numbers (0-9) and numeric operators (+ - * / .) may be entered in the Text Entry Field. Note that whatever is entered is still placed in a Text variable. To convert this type of input to an actual numeric value, you must use the VALUE() function (described in appendix A). Backdrop Image Like buttons (see page 66), Text Entry Fields can be given an image backdrop. A backdrop is a good way to make the field visible to the viewer. The Backdrop Image: button opens the File dialog, where you can choose an image file. If you have assigned an image backdrop and want to remove it, click the Clear Backdrop button, which appears in the Options section of the dialog. Pointer The Pointer: option allows you to choose a special mouse pointer design for the time when the pointer is over the Text Entry Field. By default, the pointer changes to an “I-beam” cursor ( )to emphasize that text entry is expected. The Pointer: button opens the File dialog, where you can choose a different pointer image. If you have assigned a custom mouse pointer and want to return to the default pointer, click the Clear Pointer button, which appears in the Options section of the dialog. Cursor The Cursor button is on the Text Entry panel rather than the Field panel. It lets you specify the color of the text cursor, which appears as a vertical bar in the Text Entry Field when the viewer clicks in the field. Drag a color from the color bar to the Cursor color block to change the color. 77 2: Making scripts interactive Editing buttons Editing buttons Click on Edit in the Buttons menu to see the Edit drop-down. The Edit drop-down in the Buttons menu gives you the same editing options as other Edit drop-downs, with a few differences. Cut, Paste, Select All, Appear Later, and Appear Earlier function the same way for buttons as for other elements in ICDesigner. (Refer to the discussion of the Edit drop-down on page 145 in chapter 5 of the “Basic Authoring” guide for more information on Edit options.) Copy and Export, however, have special results when used from the Buttons menu. • Copy copies selected buttons to the ICDesigner clipboard. Copied buttons retain all of their styles and Go Tos when pasted, except in cases where it is not physically possible. For example, a button that is pasted into a different script, which does not contain the original Go To destination page, cannot retain the original Go To. You can use the Go to Event selectors to see which Go Tos have not been retained in your copied buttons. A Go To destination page from the original button that does not appear on the selector of the copied button has not been retained because it physically does not exist there. • Export opens the Export Options dialog for you to save the selected button. In the Export as Type: pop-up, Button is available. If you choose Export as Type: Button, ICDesigner automatically adds the file extension .BTN and saves the button, including each of its states, as a predefined button file. All its appearance-related settings are retained, but Action settings and variables are discarded. 78 2: Making scripts interactive Creating more advanced buttons Creating more advanced buttons The examples in the beginning of the chapter showed you how to create simple buttons. Now that you are more familiar with the Buttons menu, you can begin experimenting more, implementing more buttons features. The following example takes you through the process of creating more advanced buttons to give you practice implementing more button features, like: • using clips • giving buttons sound • setting variables to your buttons • using Go To with bookmarks For the following example, let’s say that you are creating an interactive production that will be displayed in the lobby of a hotel. You want the production to tell people what the hotel has to offer, so you have a page in the script that is like a menu, where viewers can choose a button to get more information. We’ll create a menu with buttons for Entertainment, Food, and Services. 1. Create pages to work with by loading backgrounds for four different pages. 2. Go to the Design Text menu, and on page 1, type “Choose a button for more information” at the top of the page. On page 2, type “Cafe” in the middle of the screen, and “!special” at the bottom. Type “Entertainment” on page 3, and “Services” on page 4. Since you are creating buttons that will advance the viewer to pages with information, be sure to give the viewer ample time to absorb the information by setting long enough pauses for those pages. (See chapter 11 of the “Basic Authoring” guide, “Advancing the script automatically” for more information about timing.) 3. On page 1, open the Buttons menu. 4. Click on the Image: button in the Appearance panel. This opens the File dialog where you can choose a clip to load. 79 2: Making scripts interactive Creating more advanced buttons 5. Load the coffee cup image from the GuideExamples folder. You see the clip on your page in the Clip menu. 6. Adjust the size of the clip and place it next to the word Cafe. Make any other changes you want to its appearance, then return to the Buttons menu. 7. While the clip is selected, choose Push Button on the Type panel, and make it a three-state button. The clip is now a button in the Normal state. 8. Press F12 to switch the button to its Highlight state. 9. Switch to the Other Action panel and choose Mouse over button from the pop-up. Click on the Sound: button to add sound to the clip in its highlighted state. You see the Sound menu. 10. Choose a sampled sound that is appropriate. After you select a sound and click Close, you see the Buttons menu again. 11. Go to the Clip menu and change the appearance of the clip so that it looks different when highlighted—try changing its Front color, or turning on Shadow. 12. Return to the Buttons menu, and on the Other Action panel click the Variable: button. In the Set Variable: text box of the resulting menu, enter: special=“Today’s special: Double mocha cappuccino” and click OK. In the Variable Definition dialog that appears, the variable type Text is already selected, so just click OK. (See “Creating variables and expressions” on page 91 in chapter 3 for more information on variables.) 13. Press F12 again to switch to the Select state, then go to the Clip menu to edit the appearance of the clip in its Select state. If you need to refer to what you did for the Highlight state, press F12 to cycle through the states while on the Clip menu. You can also use the indicators in the title bar, which identify the current state. (You could also add sound for this state as you did for Highlight.) 80 2: Making scripts interactive Creating more advanced buttons 14. Return to the Buttons menu, and go to the Select Action panel. On the Action: pop-up, choose Go to Event. 15. Use the Go to: selector to tell the script where to branch to when that button is selected. (Since there are no groups in the script, and you are going to branch to another page, the Level: selector can be left as it is, reading “<this script>”.) Set the Go To destination to page 2. 16. Make sure that Leave Bookmark? is on. This will let the user return to the hotel menu after page 2 is finished running. 17. Click the Main icon on the toolbar to exit the Buttons menu to the Main menu. 18. Click on the Branch column button for page 2. You see the Branch menu. 19. You see the Go To panel. Use the Action: pop-up to choose Return to Bookmark. This makes the script return to the location from which you branched (page 1), because of the Leave Bookmark? setting for that button. You have now created an interactive button for Cafe. You can go back to page 1 and create buttons in a similar way for the Entertainment and Service categories, too, by following the same steps. Some other approaches you could use to create these buttons: • Instead of modifying the clip’s appearance for each state, use Apply Preset: to load backdrop images for all three states. This would make the image look more “button-like”, and would remove the need for steps 11 and 13. • Rather than make the clip a button, leave it as an illustration, and make the label text into a button. You could use Apply Preset: here also. • Make neither the clip nor the text a button, and instead load a predefined button with Add and place it next to the label text. This too eliminates the need to create separate appearances for each button. 81 2: Making scripts interactive Using the Input menu for custom input options So far in this chapter, you have worked in the Buttons menu to create and edit buttons. There are some options related to buttons, however, that cannot be made in the Buttons menu, but must be made in the Input menu instead, which is explained in the following section. Using the Input menu for custom input options ICDesigner offers several options related to interactive input. Some are specific to the use of buttons, but others involve the mouse and keyboard. From the Main menu, click on the button in the Input column for a page in your script. You see the Input menu, which looks like this: The Input menu has three tab panels: Button Controls, Mouse Pointer, and Slideshow Controls. Specifying button input options On the Button Controls panel, you can choose the type of input recognized in a production using the Mouse?, Touch Screen? or Keyboard (arrows + Enter)? options. At least one of these options is always on; you cannot turn off all three. Mouse? allows the viewer to use the mouse to highlight and select buttons when the production plays. The mouse pointer appears and the script can respond to mouse clicks if the page uses buttons. The option is on (✓) by default. Touch Screen? should be turned on (✓) when the system playing the production uses a touch screen. Turning on the Touch Screen? option turns off the Mouse? option so that the mouse pointer does not appear. Because mouse and touch 82 2: Making scripts interactive Using the Input menu for custom input options screen input are mutually exclusive, the appearance of the pointer would be both unnecessary and misleading to the viewer. Pointer Image options are not necessary with touch screens, so they are also disabled. Turning the Keyboard (arrows + Enter)? option on lets you use the keyboard rather than the mouse and main mouse button to highlight and select buttons on the screen. When this option is on (✓), you can move to and highlight buttons with the arrow keys, and select the highlighted button by pressing Enter (↵). This option is available whether the touch screen or mouse options are on, and can be used by itself. Changing mouse pointer designs As mentioned previously in this chapter, to change the pointer image for buttons in the Highlight and Select states, you use the Buttons menu (see page 64, “Changing the mouse pointer”). However, to change the default pointer images for entire pages and scripts, or to choose when the pointer is visible in your script, you must use Input menu options in the Mouse Pointer panel, as explained below. The Pointer: pop-up lets you choose when you want the pointer visible in your production. Even on a page that has no buttons, for example, you might want to use the pointer for illustration purposes, to point to items on the page as you discuss them. Or, alternatively, you may want the pointer visible only when buttons are available for selection. Use the pop-up to choose Always or For Selection Only. The default is For Selection Only. Choose For Selection Only when you want the pointer to be visible only if there are buttons on screen. Choose Always when you want the pointer visible regardless of whether there are buttons on screen or not. In addition to choosing when the pointer is displayed, ICDesigner lets you change pointer images using the Pointer Image: and Busy Pointer 83 2: Making scripts interactive Using the Input menu for custom input options Image: buttons. These options affect the pointer designs you see when the script runs. ICDesigner Suggestion Although you can select any clip as a pointer or busy pointer, for best mouse response you should choose a relatively small image. The Pointer Image: button controls the design of the normal mouse pointer used on screen. You may, for example, want the image to be a pointing finger instead of the standard arrow. When you click on Pointer Image: you see the File dialog open to the Pointers folder. You can also navigate to another folder, and choose any clip to use as a pointer image. The Busy Pointer Image: button lets you change the image of the busy pointer, which appears on the screen when the script is busy and temporarily cannot accept input. By default, there is no busy pointer. Click this button, and in the File dialog, choose a new image. To stop using a custom pointer image in a script, click Pointer Image: or Busy Pointer Image:, and, in the File dialog, click the Clear Pointer button in the Options section. This returns to the defaults, an arrow as the normal pointer and no busy pointer. Changing the script default pointer To change the pointer for the entire script, you can group the script’s pages and apply the Input event to the group. Choose Select All from the Edit drop-down on the Main menu, and then Group. Input menu settings you make for the group become defaults for the entire script. Controls for advancing pages The buttons on the Slideshow Controls panel, Mouse Buttons? and Keyboard (Page Up/Down)? let you choose how you want your script to advance when you are working with a slideshow-style production— that is, one in which you move from page to page without using buttons. With these buttons, you can choose the mouse, the keyboard, or both the mouse and keyboard to advance. Mouse Buttons? controls whether the mouse buttons by themselves control the advance to another page. Pressing the main mouse button moves forward in the script, and the secondary mouse button moves back. It is on (✓) by default. Note that on any page with buttons, the 84 2: Making scripts interactive Using the Input menu for custom input options button-selection function of the mouse buttons takes precedence over the page-advance function, regardless of the setting of the Mouse Buttons option. Keyboard (Page Up/Down)? controls whether the keyboard can advance the script. The Page Down key moves to the next page, and the Page Up key moves to the previous page. It is also on (✓) by default. Input event scope The events you set in the Input menu are different from other events on column buttons in an important way. All other events apply only to the page for which you have set the event. Input events, however, are “sticky”: they remain in effect from page to page until another Input event changes them. For example, if you turned on Touch Screen? for page 3, and Mouse? for page 8, the pages from 3 to 7 would have touch screen control, even though you did not explicitly set it on all those pages. This can save you some effort, but it might also be confusing at times. Removing Input menu events When you need to remove an Input event you have set for a particular page, click the Delete button on the Input menu. The page and those following it then assume the Input settings from the most recent previous Input event, or the default settings if there was no previous Input event. 85 3: Branching and using variables Many of the scripts we have used as examples have been relatively simple. They proceed from the first page to the last, playing every page and event between in the order in which they appear in the script. However, there are also situations in InfoChannel Designer 3 that call for a script to execute in a non-linear fashion—that is, for pages and events to run in some order other than that in which they appear in the Main and List menus. Using buttons, as described in chapter 2, is one way to change the sequence in which a script executes, but there are cases in which you need the same capability to jump to a different location in a script, but do not want a button. It can also be necessary for some decision-making ability to reside in the script itself. For example, an arithmetic quiz script has to be able to evaluate a student’s response to determine whether it is correct, calculate a score based on several responses, and perhaps show a different screen at the end depending on whether the student did well or poorly. These are both cases in which you would need to use the Branching and Variables menu (normally just called the Branch menu), in order to use branching and variables. Although we have left it for this chapter, this menu is not complex, and you can make use of it in scripts that are not particularly “advanced”. Using it, however, does require more detailed planning than other ICDesigner tasks. This chapter covers the Branch menu, and also describes when it can be helpful to use sub-scripts. A simple Go To branch In chapter 2 it was described how to use ICDesigner’s buttons to break through some of the limitations of a linear approach, and the Go To action was introduced, which lets script execution shift to a different location. However, when you want a Go To but not a button, 88 3: Branching and using variables Variables and expressions in the Branch menu you need to use the Branch menu’s general-purpose Go To panel events. Because using a Go To does not require variables or conditions, and can be useful even in simple scripts, we will give a quick example here before covering the subject more thoroughly. 1. In the Branch column, click the button for the event after which you want the Go To to happen. You see the Branch menu with the Go To panel showing. 2. From the Action: pop-up, choose Go to Event. 3. Click arrows on the Go To selector to choose the name of the destination page or element. The selector steps through all the possible destinations. In the display box, you see a miniature image of the destination page. 4. Click OK to accept the modified event and close the menu. The script will then jump to the new location you specified after it completes the event where you placed the Go To itself, skipping all the events between. Details on using Go To can be found on page 107, “Using Go To”. Variables and expressions in the Branch menu You use the ICDesigner Branch menu to create and modify variables and expressions, and to use them as the basis on which to branch to another part of the script. ICDesigner also provides many standard functions that you can use in expressions to manipulate variables. 89 3: Branching and using variables Variables and expressions in the Branch menu Variables A variable is a “container” for a quantity that can change within a script. Because you can name variables, you can refer to what they hold by their names, regardless of the actual value. For example, within a quiz script, you can create a variable that keeps track of how many correct answers a user has given, with a name, such as “CORRECT”. You can increase it for each correct answer, and display its current value on a screen page at any time by referring to its name. There are four variable types in ICDesigner: text, logical, integer, and real. ICDesigner also has various system variables that it maintains, which you can also use. New EXes can make additional system variables available. Refer to appendix A for a list of available system variables. Expressions An expression is a statement that uses variables together with arithmetic operations such as addition and multiplication, logical tests and comparisons such as >= (greater than or equal to) and OR, and functions such as LEFT() that can manipulate variables. ICDesigner evaluates an expression as a numerical value, a text value, or a logical value (TRUE/FALSE, ON/OFF) depending on the type of expression it is. Some examples of expressions that assign values to variables are: ICDesigner Note To make the text more easy to follow, we show variable names in SMALL CAPS, and functions and logical operators in ALL CAPS. However, you do not have to use any capitalization when you use variables, functions, or operators. You can use all lowercase, or any mixture of upper and lowercase. 90 • SEVEN=4+3 • CORRECT=CORRECT+1 • TOTALCOST=(UNITS*UNITCOST)+SHIPPING • CITY=“Trondheim” • NAMELETTERS=LENGTH(NAME) • CONFIRM=TRUE Some examples of logical expressions are: • CORRECT < 10 • CORRECT >= 10 AND BONUS=TRUE • (LOOPS > 7) OR (ANSWER <> “iguana”) 3: Branching and using variables Variables and expressions in the Branch menu The result of the expression evaluation can either be placed in a variable, or its logical value (truth or falsity) can be used as the basis for a decision by one of the branching instructions (see page 97, “Branching in the Branch menu”). Operators Operators are the symbols and keywords that you use with variables to construct expressions (see the preceding examples). Familiar operators include the arithmetic operators + (plus), - (minus), * (multiply), and / (divide). Other operators, such as ** (exponentiation), <= (less than or equal to), and NOT, perform logical, relational, or advanced arithmetic functions. Refer to appendix A for a list of operators available in ICDesigner and additional examples. Functions A function is an automatic procedure that ICDesigner provides for your use. It can take text or numeric input (constant values, variables, or expressions) and returns a value as the result. You can use a function in an expression, as in the NAMELETTERS example above: LENGTH() takes a string as input, and returns a number that is the text length in characters. A function like ABS() takes a number as input and returns a number. A function can also be used as a complete expression. Function syntax is simple. A function always has one or more parameters after the function name, enclosed in parentheses. If there is more than one parameter, they are separated by commas. An example of a multiple-parameter function statement is: RANDOM(1,LENGTH(NAME)) This shows how one of the parameters of a function can itself be a function, in this case one that takes a variable as its parameter. Refer to appendix A for a list of functions available in ICDesigner and additional examples. Creating variables and expressions ICDesigner makes creating variables and expressions as simple as possible. 91 3: Branching and using variables Variables and expressions in the Branch menu 92 • When you set a variable to an initial value in the Set Variable: text box, you see a dialog that lets you create a new variable by that name. Just pick the proper type: Text, Logical, Integer or Real. The first set of bulleted points under the previous heading, “Expressions”, shows examples of what you could enter in the Set Variable: text box to establish or change a variable value. • The variable creation dialog also offers the choice to make variables “external”, or common to any scripts of which the current script is a sub-script. This lets scripts and sub-scripts communicate through the values of the external variables they share. • The Branch menu shows you scrolling lists of the currently available system variables, functions, and expression operators, to make entering expressions easier. Variables you create in your script are also shown, at the top of this list. Click items in the lists to add them to the expression in the text box. • Variable names can be up to 32 characters long, can contain letters, numbers, and dots (.), and must begin with a letter or underscore (_). Names must be unique within a script. • You indicate a string by enclosing text between double quote marks (“”) as in the fourth of the preceding bulleted examples. Text variables in ICDesigner can accept strings of any length, which can contain any ASCII character. • Numeric variables can be either Integer (whole numbers, like 8949, 0, and -23) or Real (decimal numbers, like 3.14159, 0.00007, and 1088.6). It is possible to format integers for display as fixed-point figures such as monetary values. • Logical variables and expressions can have one of two values, either TRUE or FALSE, which can also be given as the equivalent ON and OFF. • When creating or referring to variables, expressions, and functions, you can use any number of spaces between names and operators to help make them more readable, but ICDesigner ignores them; no spaces are required. 3: Branching and using variables Variables and expressions in the Branch menu • ICDesigner ignores capitalization in variable, function, and operator names; you can use any combination of uppercase and lowercase. For example, Count, count, and COUNT would all refer to the same variable. Capitalization is also not significant within strings: the string “Japan” is considered the same as “japan”. • You use parentheses to indicate the order in which operations should be performed. As in ordinary arithmetic, portions of an expression within parentheses are evaluated before portions outside them, and the innermost portions are evaluated first. The number of left and right parentheses in an expression must match. 왘 To create a variable: 1. Click on a button in the Branch column for an existing event. (Or choose Add Special Event from the Add drop-down, and then click that event’s Branch button.) You see the Branch menu. 2. If the Set Variable panel is not showing, click its tab. 3. In the Set Variable: text box, type a name for the variable. It should be brief but descriptive, so that you will recognize its function when you see it in different parts of the script. 4. After the name, enter an equals sign (=) and an initial value for the variable. This can be an explicit value, or can itself be a variable, expression, or function, whose ultimate value is used. ❖ For an integer variable, the value can be any whole number between -2,147,483,648 and 2,147,483,647, or any expression that evaluates to a number within that range. ❖ For a real variable, the value can be any number between 38 38 approximately -3.402 and 3.402 , or any expression that evaluates to a number within that range. ❖ For a text variable, the value can be text of any length. Any “literal” text must be enclosed in double quotes: “Oscar”. ICDesigner preserves the capitalization you give it, along with any spaces that you include. 93 3: Branching and using variables Variables and expressions in the Branch menu ❖ For a logical variable, the value can be ON or OFF. You also can use TRUE or FALSE, which are synonyms for ON and OFF respectively. ❖ If you do not know what the initial value will be, you can enter a 0 for a numeric variable, two double quote marks (“”) for a text variable or FALSE for a logical variable. 5. Press Enter. 6. You see a dialog asking if you want to create this variable, and asking for a variable type. Choose Text, Logical, Integer, or Real. 7. You can also choose to make the variable an external variable. Turn on the External? option if the script you are working in is a sub-script, and you want the variable’s value to be available to the script(s) above it in the script structure. If the current script is not a sub-script, making its variables external has no effect. 8. Click Close to close the menu. Once a variable has been created, it can be referred to anywhere in the script without bringing up the dialog that asks if you want to create 94 3: Branching and using variables Variables and expressions in the Branch menu the variable. However, if you refer to a variable before the script has executed an event that explicitly assigns it a value, the variable has a default value. For numeric variables, the default value is 0, for text variables, it is an empty string (“”), and for logical variables, it is OFF (FALSE). Once you have created a variable, it remains the same type as when it was created (numeric, text, or logical), and you will see a problem dialog if you then try to assign a different type of value to it. Deleting variables A variable you have created can be deleted only if it is not used anywhere in the current script. When you close the Branch menu, ICDesigner looks for any unused variables, and displays a dialog for any that it finds, asking if you want to delete the variable. Click Yes to delete the variable. Using variables Some of the most common situations in which you use variables include: • Whenever you need to accept and store input from someone viewing the script, such as which button someone clicked. • When you need to make a calculation or decision based on input that can change. • When using a Repeat function on the Branch menu, to count the number of repetitions in a loop. • When you need to display information that has previously been entered, or was generated within a script. Defining constants It is sometimes worthwhile to define a variable for a value that is “constant”—not meant to change within the script. You can use the variable name wherever you need the constant in your script. If at some future time the constant value must be changed, you don’t have to change every instance of it in your script. You have to change only the one location where you assigned it its constant value. 95 3: Branching and using variables Variables and expressions in the Branch menu Displaying variable values To display a variable value in a script, you type the variable name preceded by an exclamation point (!) in any screen text, string, or text variable. When the script runs, ICDesigner automatically substitutes the variable value for this variable reference. For example, at the end of a quiz script, you could create a page with the line, “Congratulations, !NAME, you got !CORRECT answers right!”. When the script runs, the contents of the variables NAME and CORRECT would appear in the text, so that it might read, “Congratulations, Elizabeth, you got 20 answers right!”. ICDesigner Note For variable display to work, there must not be any space between the exclamation point and the variable name, and there must be no style differences in the variable reference. When displaying the value of expressions, the entire expression must be enclosed in parentheses. Displaying variable values this way works for variables you create and for system variables like TIME. It also works for expressions: for example, !(3+2) would display as “5”. When you embed a variable or expression in text, the displayed value takes on the same font and styles as the variable reference. You must make sure that your page layout allows for the longest possible value of the variable, or the text could run off the screen, or the line could wrap to another line. When you embed functions or expressions, always put them in parentheses, as in the example above. Auto-updating One special feature of the variables in ICDesigner is auto-update: even after you have displayed a variable on the screen, if the value of the variable changes, the display automatically updates to reflect the new value. This is easy to see with variables like TIME. Try running a script with the text line, “The time is: !TIME.”—you have created a simple on-screen clock! How long a variable continues updating is affected by the Update option on the Misc panel of the Element Design menus (see page 228 in chapter 7 of the “Basic Authoring User’s Guide”). Formatting numbers to display decimal values Although ICDesigner can use decimal (floating point) numbers, you might want to use it to calculate and display fixed-point values, as in decimal monetary systems. You do this by starting with values that are 100 times the their actual values, and then using ICDesigner’s 96 3: Branching and using variables Branching with the Branch menu FORMAT() function, or embedded formatting codes, to display final values with two decimal places to compensate. In a dollar-based system, for example, this means that you convert all dollar amounts to cents. So if you wanted to add $24.95 and $17.02, you would actually add 2,495 and 1,702 instead, which equals 4,197. The FORMAT() function allows this to be displayed with two decimal places: 41.97. The formatting characters used by the FORMAT() function can also be used in embedded variables: “The cost was !(4197,“##.##”)”. For information and examples on using the FORMAT() function, see the “String functions” section of appendix A. Branching with the Branch menu You work in the Branch menu when you need to branch, or interrupt a script’s usual top-to-bottom (first-to-last) flow. A script’s flow is the sequence that it follows when executing its pages and events. The Branch menu is available on both the page level (in the Main menu) and the element level (in the List menu), so you can branch both within pages and from page to page. You cannot, however, branch directly from a page to an element. Branching Branching is necessary to make sure that certain events happen (or do not happen) in certain situations. Branching can also keep you from having to add items to your script several times when you simply need to repeat them. A branch is a place from which the script can jump to a different location, and resume showing events from the new location on. Some types of branches always go to the same location; others can make a decision about where to branch to, or whether to branch. Looping, a technique that lets you repeat an event a certain number of times, also involves branching. 97 3: Branching and using variables Branching with the Branch menu A long interactive script that accepts audience responses and operates differently depending on those responses is likely to involve several types of branching to achieve its purpose. Click the button in the Branch column for an existing page, element, group, sub-script or special event to open the Branch menu. The Branch menu has three tab panels to choose types of branches. All branch events require some additional information, which either defines when the script should branch, or specifies the location to which it should branch. When you choose a type of branch, you see various controls for choosing a variation and entering additional information. The Condition and Repeat branch panels are very similar, based on the Set Variable panel, and list system variables, functions and operators you can use in determining how to branch. branch types The Go To panel has no controls other than the Action: pop-up except when the Go to Event option is chosen. Click one of the tabs to display the panel for one of the three types of branch events: 98 • Condition • Repeat • Go To 3: Branching and using variables Branching with the Branch menu Condition branches This branch decides whether to execute the event of which it is a part, depending on whether a certain condition is true. You specify the condition in the Show If Expression: text box. When the event for which you specify this type of branch is a group, you can conditionally execute or skip a whole series of events. The condition is usually an expression involving one or more variables. For example, the condition might be the expression “SCORE > 95”. An event having this condition would execute if, and only if, the value in the variable SCORE was greater than 95. The page having this flow condition might in that case be a screen congratulating a student on getting a high score. Repeat branches The Repeat While and Repeat Until branches are very similar. Both are used to repeat the event (or group of events) of which they are a part, so that you don’t have to add the event to the script several times. In most places where you want to repeat, you could use either. One form or the other is usually simpler to use in certain situations. Like the Show If branch, Repeats require a condition such as ATTEMPTS=4 in the text box. When the condition is true, the event with the Repeat While branch is executed again. When the condition becomes false, the script continues to the next event. Details on the differences between the two kinds of repeats and where you would use them start on page 102, “Using Repeat While and Repeat Until ”. Go To branches As the name implies, a Go To branch tells the script to go to another point, from which the script continues. It doesn’t require a condition; it always branches when script execution reaches it, after executing the event of which it is a part. A Go To can be made conditional, however, by combining it with a Show If branch. In the Level: selector, you need to specify the level of the script that the destination location is on (the path to its group, if any). Then, using 99 3: Branching and using variables Controlling script flow with branches the Go To: selector you find the name of a page or event to provide a target for a Go To event. The Leave Bookmark? option makes it possible to return from a Go To branch. The bookmark is set at the point immediately after the Go To, and after the script has finished in the target location, it can return and resume running again from that point. More detail on how to use Go To branches is on page 107, “Using Go To”. Controlling script flow with branches Although the branching events themselves are very simple, how to apply them to achieve the right effect isn’t always obvious, especially to those who have no experience with a computer programming language. You do not need that kind of experience to use ICDesigner’s branching options, however. This section explains how and when to use the branching events in a script. Some important facts to keep in mind: • The events with branches can be groups, and thus the branches can apply to more than one page. Grouping pages so that you can adjust the flow of more than one page at a time is in fact one of the main uses of the Group option. Collecting related pages into a series makes it simpler to use branches to repeat, or to avoid executing, those pages. However, you must plan carefully when using both Go To branches and grouping in the same script. You cannot branch into a group, only to a group as a whole. Because of this, grouping page that are the destination of Go To branches from outside the group is not possible without modifying those branches. If you attempt to group a Go To destination event without including the Go To itself in the group, you see a dialog explaining that this cannot be done. • 100 More than one branch can be combined on a single event; for example, you can use Show If with Go To or one of the Repeat branches. 3: Branching and using variables Controlling script flow with branches Using Show If Show If Expression is the simplest of the branches to understand because it translates literally into words and action: “If this condition is true, then show this event.” If the condition is not true, the event is skipped, and the script continues with the following event. The condition can be any logical expression that is legal in ICDesigner. Because expressions in ICDesigner can use logical operators (see page 89, “Variables and expressions in the Branch menu”), you can also use the condition to make more complex comparisons. For example, you might have a quiz script that gives a student the answer to a question if he or she has made four unsuccessful tries at clicking the correct button. 왘 To show a page with the answer after the number of tries reaches 4: 1. When the student clicks an answer button, add 1 to a variable called TRIES for each time a question is asked. (In Set Variable:, put TRIES=TRIES+1.) 2. Create the page that gives the answer. 3. Put the page at the point in the script immediately after where the script adds 1 to the TRIES variable. 4. Click the Branch button for the answer page to open the Branch menu. 5. Click the Condition tab. The text box reads Show If Expression:. 6. In the text box, enter TRIES=4. 7. Click Close to close the Branch menu. The Branch button for the page displays “If”. When this page is encountered when TRIES is not equal to 4, it won’t be shown. But once TRIES reaches 4, the page can be shown. Show If can also be combined with Go To and the Repeat branches, to make those operations conditional. See page 106, “Example 5: Conditional loops”, and page 111, “Using a conditional Go To”. 101 3: Branching and using variables Controlling script flow with branches Using Repeat While and Repeat Until The Repeat options provide an important “labor-saving” capability. You use Repeat While and Repeat Until when you need to repeat some action several times. You can use these events to repeat a single event several times, or to repeat a series of events. It is easy to visualize this: script execution runs through the series of events, then at the end of the series, jumps or “loops” back to the top of the series to repeat the loop. Which loop? The difference between the two types of loops is the point in the loop where they evaluate whether the “while” or “until” condition is true. Repeat While evaluates the condition before executing the contents of the loop each time; Repeat Until evaluates the condition after each time through the loop. This means that Repeat Until always executes the events in the loop at least once, because it doesn’t check its condition for the first time until the end of the first time through. Repeat While, however, looks at the condition before starting the loop. If the condition isn’t true when the script first reaches the loop, the loop is skipped entirely. Another way to think of the difference is that Repeat While loops continue while the condition is TRUE, but Repeat Until loops continue while the condition is FALSE (until it becomes TRUE). You can always use either type of repeat, by varying how and when you initialize the condition expression. One type of repeat or the other might require a special event to set the condition expression (see page 104, “Example 1: simple loop”, steps 2 and 3). This expression, which is evaluated to determine whether the loop should repeat, could have its initial value set within the loop, or before the loop. Generally, if the value of the variable used in the condition is set somewhere earlier in the script, it is simpler to use Repeat Until. If the loop is self-contained—that is, its condition variable is created and set within the loop—Repeat While is probably simpler to use. The two types are mutually exclusive; a loop can’t be both a While and an Until loop. 102 3: Branching and using variables Controlling script flow with branches The examples that follow show some typical situations that illustrate when and how you would use one or the other. Defining a loop In the Branch menu you click the Repeat tab and then use the pop-up to choose Repeat While or Repeat Until for that event. To define a loop, you first group the page or series of pages that you want to repeat and then apply the Repeat branch to the group. Example 1: A simple loop This is the smallest and simplest kind of loop. This example performs a page wipe three times using Repeat While and a counter variable that keeps track of how many times the loop has been repeated. Here is a flow chart showing what it does: the Repeat condition test 쑺 1: Check the value of COUNT. Is it less than 3? 쑺 No 쑽 Yes 2: Perform the wipe. 쑽 3: Increase the loop counter (COUNT= COUNT+1). 쑽 쑽 Go on to the next event Step 1 is where Repeat While does its work: it decides whether to continue to the page event—the wipe—based on the value of the COUNT variable. Once COUNT equals 3, the script exits the loop and goes on to the next page. 왘 To create this loop: 1. Create three pages with different backgrounds. On the first, put the text, “Going to loop...”, on the second, “Looping!”, and on 103 3: Branching and using variables Controlling script flow with branches the third, “Done. I Looped !COUNT times.”. (Be sure the exclamation point does not have a space after it.). Give the “Looping” page a pause of 1 second. 2. Click the Branch button for the first page to open the Branch menu. 3. In the Set Variable panel’s text box, enter COUNT=0. You see the Variable Definition dialog. Choose the Integer variable type and click OK to create and set the COUNT variable. 4. Click the Branch button for the second page, and enter COUNT=COUNT+1 in the Set Variable: text box. 5. Click the second page’s Wipe button. In the Page Wipe menu, give the page the ScrollDivide wipe, and click Close. 6. In the Main menu, click Edit and choose Group to group the second page. 7. Click the Branch button for the resulting group. 8. Click Repeat, and make sure the pop-up reads Repeat While. 9. In the Expression: text box, enter COUNT<3. Click OK to exit the menu. In the Main menu, you see that the Branch button for the first page reads “Set”, and for the group it reads “Repeat”, reflecting the settings you made. Run the script. After you click on the first page, you should see the “Looping” page wipe onto the screen three times, then the “Done!” page. When ICDesigner runs this script, it notices that there is a Branch event. Since it is a Repeat While instead of a Repeat Until, ICDesigner looks at the variable COUNT first. The first time it is tested, COUNT hasn’t yet reached 3, so ICDesigner goes on to the page event—the page wipe. Then the loop counter, COUNT, is increased, and ICDesigner goes back to the top of the loop. For a While loop, the condition test is at the top. After the third time however, COUNT equals 104 3: Branching and using variables Controlling script flow with branches three, so ICDesigner displays the third page, which shows you the value of COUNT. In this case, setting COUNT equal to 0 is not really necessary, because ICDesigner sets numeric variables to zero when it starts a script. However, it is good to get into the habit of giving your loop counters a starting value, because a script will not always restart before its loops are run again; plus, sometimes you need to start a loop with a value other than zero. A loop can be made even simpler if what you need is an infinite loop—a loop that runs forever. Eliminate steps 2 through 4 above, and for the loop condition, enter TRUE. Since the condition is true by definition, the loop always passes the condition test, and never exits. If necessary, an infinite loop like this can be jumped out of with a Go To, or an interactive button. Example 2: A multiple-event While loop To create a While loop with additional events is basically the same as in Example 1. You group all the events in the loop, and apply branching events to the group. 왘 To create a loop containing several pages: 1. Create the pages you wish to loop through, and, in the Main menu, arrange them in the order they should appear. 2. Select all the pages you want to be in the loop (use Shift-click or Ctrl-click). 3. From the Edit drop-down in the Main menu, choose Group. You see a new group page in the Main menu. (You might want to change its name to indicate that it is a loop.) 4. Enter the Branch menu and as described in steps 2–4 of Example 1, set up the Repeat While and counter variable as necessary to repeat the loop the proper number of times. You can, of course, call the counter variable anything, choose any number of repetitions, and otherwise customize the loop. 105 3: Branching and using variables Controlling script flow with branches For this loop it is just as easy to use either type of Repeat, by reversing the comparison. That is, to accomplish the same thing using Repeat Until, you set up the loop the same way, except choose Repeat Until, and for its condition, enter COUNT>=3. Example 3: A multiple-event Until loop, indefinite length A loop does not need to have a predefined number of repetitions. You can have a loop that repeats until some expression becomes true, however many times that takes. For example, a quiz script could continue asking a question until the correct answer is given. You would set up this loop as the preceding examples, except that you would not necessarily have to set up a counter variable. (You might still set up a counter for a reason other than controlling the number of repeats. You might want to count the number of tries the student took to answer the question.) Your condition expression would be something like ANSWER=“Apollo”. Example 4: A loop with more complex variable usage Once you understand how to make simple loops with counter variables, you can start using more complex expressions. You could make the loop condition dependent on two or more variables, and use operators like AND, OR, and NOT to make more comprehensive decisions. You can create special events as necessary to set variables at particular places in a loop. For example, your quiz script loop might have an expression like this as a Repeat Until condition: (ANSWER=“Apollo” AND SECONDS < 15) OR TRIES >= 4. Assuming you had set up the variables SECONDS and TRIES, this would exit the question loop if the student gave the answer “Apollo” within 15 seconds, or made four tries at the answer. Example 5: Conditional loops You can specify both Repeat While/Repeat Until and Show If for a group, to create a conditional loop. The Show If is evaluated first, and the loop will be skipped if the condition is not true. To do this, set up the loop normally, then, after specifying the loop condition in the Branch menu, click the Condition button and enter the expression that must be true for the loop to be executed. 106 3: Branching and using variables Controlling script flow with branches Example 6: Nested loops Loops can be nested—that is, placed inside one another. In a nested loop, the inner loop goes through all its repetitions for each single repetition of the outer loop. Nested loops are called for when you have two “levels” at which you need to repeat things. For example, suppose several students use your quiz program, and you have stored the score they made for each question. You might then want to display all the scores. The two levels of that task are the individual student level (displaying each score for one student) and the “class” level (doing the same for each of the other students). To do this, the “inner loop” does the individual-level task, and the “outer loop” does the class-level task. the “ClassLoop” group contains the “StudentLoop” group Example 7: Jumping out of a loop In the loop condition, sometimes it is not possible to cover all the possible situations under which you might want to exit a loop. In such cases, a conditional Go To or a button with a Go To can jump out of a loop based on some other factor, even though the Repeat expression is still true. Using Go To actions Go To actions are the most powerful of the branching instructions, because they can remove all linear, sequential limitations to the order in which events are executed. This can give you much more flexibility when you have more complex things to do in your script. It is made more powerful by ICDesigner’s capability to set a bookmark when 107 3: Branching and using variables Controlling script flow with branches you use a Go To action, so that you can later return, and continue running the script from the point after the action. The most common use of Go To actions is on buttons. When you want to display a new page or perform some other action when someone clicks an on-screen button in your script, the button most likely has a Go To branch associated with it. You can set up a Go To action for a button in the Design Buttons menu. Creating a Go To action from the Branch menu is nearly the same. Non-button Go To branches should be used sparingly, however. Overuse of such actions, especially Go to event, can make a script difficult to understand and edit. Before you use a Go To branch, see if there might be another way to accomplish your objective by rearranging events to make the branch unnecessary. 왘 To use a Go To branch: 1. Click on the button in the Branch column for the event after which you want the Go To to happen. You see the Branch menu. 2. You should see the Go To tab. Click the Action: pop-up to see the possible types of Go To. 108 3: Branching and using variables Controlling script flow with branches 3. Choose a Go To action. Go to Next Page and Go to Previous Page are self-explanatory and have no options, so you can choose one of these and just click OK to finish. 4. If you choose Go to Event, you see the Go To: and Level: selectors, and the Leave Bookmark? button. The default Go To setting just continues with the next event after the Go To without branching. 5. The Level: selector lets you specify where within the script structure the branch target is. Its possible settings vary depending on whether the current event is within a group, and whether you entered the Branch menu from the Main menu or the List menu. You can branch to any place earlier or later in the current script. However, you cannot branch into a separate script, or a to group that is below the current level in the script structure. From the Main menu, if the branch event is not within a group, the selector is disabled and reads <this script>. Within a group, the options include the current group, any group(s) above it in the structure, and the top level of the script (<this script>). From the List menu, the selector works the same, except that it is never disabled and the choice <this page> is also present. Choose a level using this selector if necessary. 6. In the Go To: selector, choose the destination page or element. The selector steps through all the possible destinations on the script level you have chosen. In the display box on the right, you see a thumbnail of the destination page or the name of the destination element/event. 7. If you do not need to return to the point immediately after this Go To after executing events at the destination location, turn off the Leave Bookmark? option. 8. Click Close to close the menu. 109 3: Branching and using variables Controlling script flow with branches There are several situations in which you would typically need to use a Go To: • (with Leave Bookmark?) to execute a different section of the script and then return to the original location—often this usage is from a button • to exit a loop • to branch around one or more events that you do not want to execute • (with Show If ) to branch to another location if a certain condition is true • (using Action: Exit from Script) to exit from a sub-script at someplace other than the end of the script Exiting a loop Using Go To as an additional way to exit a loop was discussed in Example 7 of the preceding section. Branching around events Before using Go To to branch around some events, consider whether you could structure the script so that it is unnecessary. If the Go To is unconditional, it is very likely that there is a location for the events you want to branch around that would eliminate the need for the Go To. Using Go To with a bookmark The real power of Go To comes when you also use the bookmark feature to allow you to return from a Go To. If you place an Action: Return to Bookmark at the end of a section of events, execution will return to the place where you last left a bookmark. This, in effect, lets you define sections of a script as independent units that you can go to and return from at any point in the script. This is most valuable if you have a sequence of events that might need to be run several times in the course of a script, but from different places in the script (rather than several times in a row like a loop). 110 3: Branching and using variables Controlling script flow with branches An example of the Go To-with-bookmark structure: Page 1 쑽 Page 2 Page 3 Go To: page 7 (leave bookmark) 쑽 Page 4 Page 5 Page 6 ICDesigner Note The Go To on Page 6 is not strictly necessary, but it is there on the assumption that you do not want to run the unit from 7 to 9 again. Go To: Page 10 Page 7 쑽 unit Page 8 Page 9 Action: Return to Bookmark Page 10 쑽 In the above script, the pages would run in the order: 1, 2, 7, 8, 9, 3, 4, 5, 6, 10.... A more important reason for skipping over a script unit this way is to keep a Return to Bookmark from being executed again. Executing a Return to Bookmark when you did not intend to will disrupt the proper order of events. If ICDesigner encounters a Return to Bookmark for which it cannot find a bookmark, it continues without branching, and displays a message dialog when you exit the script. Using Go To with bookmarks and Return to Bookmark requires very clear planning of the order in which events and script units will be executed to avoid this kind of problem. Typically, if you use more than one unit in a script, you should place them all at the end of the script, and execute them only through Go To branches with bookmarks. The event just before the first of these units can be the Go To that keeps script execution from “falling through” to execute the unit. Another option is to use sub-scripts. Using a conditional Go To A conditional Go To, created by defining a special event that contains both a Show If and a Go To, is often useful. 111 3: Branching and using variables Using sub-scripts When the script reaches this event, it evaluates the Show If condition, and if it is true, moves execution to the point specified by the Go To. However, if your intent is only to conditionally branch around some events you do not want to execute, a better solution is to group those events, and apply the Show If to the group. Using sub-scripts The ability to use sub-scripts—scripts that are run from within other scripts—adds much flexibility to ICDesigner. Although there is nothing that you can do in ICDesigner that requires a sub-script, there are various situations in which subdividing a script can be worthwhile. Primarily, breaking a large script into sub-scripts is helpful in the same way that breaking any large task or object into smaller sections is. Working with smaller pieces makes each piece more manageable, and allows you to work on one area of the script without affecting others. In particular: • Parts of the script are loaded only when needed, reducing initial start-up time and overall memory usage. • Testing and development time is reduced because the complete script does not have to be edited and run each time it is tested. • It is easier and safer to distribute work on a large script project among different people as separate pieces. • Sub-scripts reduce the need for Go To/Return to Bookmark structures in the main script, which can be difficult to keep track of as projects grow larger. Variables in sub-scripts By default, variables that you create in ICDesigner are “local”—specific to the scripts within which they are used. For example, the value of a COUNT variable in a parent script is normally independent of that of a COUNT variable in any sub-script it might have. This makes it possible to use standard variable names like COUNT or LOOPS for 112 3: Branching and using variables Using sub-scripts indexing and other utility purposes in various scripts, without worrying about their values interfering with one another. However, often it is useful to be able to communicate variable values between scripts and sub-scripts. Doing so is the purpose of the External? option available when you create a variable. The value of an external variable is “global”—available not just within the script in which it was created, but in any parent script (one above it in the script structure) as well. For example, a sub-script that calculates a score could then pass the score value to a parent script that displayed the score, using a SCORE variable declared as external. To use variables this way requires planning. You must keep track of which variables are external and which are not. When multi-leveled scripts that use variables extensively do not work as expected, often the reason is related to variable values not being passed when they should be (because a variable was not made external), or variables unexpectedly affecting one another (because a variable used in several places was made external). Being sure to initialize all your variables with a starting or default value eliminates many potential problems. Exiting a sub-script If you use sub-scripts, the physical end of the script is not likely to be where the script finishes. For this reason, you need to be able to define a point other than the last event in the script as the end. You can do this by inserting a Go To with the action Exit from Script. When the script reaches a Action: Exit from Script, the sub-script ends. 113 4: Scheduling InfoChannel Designer 3 events Scheduling is a key element of many Scala InfoChannel Designer 3 distributed productions, and ICDesigner’s scheduling abilities distinguish it from most other multimedia products. Scheduling lets you communicate timely information, freeing you to leave Players unattended even when displayed information must change from day to day. With ICDesigner, you can schedule events to be run according to various criteria: • at regular intervals—hourly, daily, or weekly • continuously between two given times or dates • once, at a specific date and time For example, you might need an event to be repeated between two and four o’clock in the afternoon, only on Fridays, during January. This kind of scheduling is useful when promoting special events and prevents the display of outdated information. Scheduling a page in your script to appear only once at a specific time can be used, for example, to start CD audio automatically at a certain time. This chapter discusses scheduling in general and focuses on using the Schedule menu. Before we look at that menu in detail, we first discuss the ICDesigner approach to scheduling. Note that outside the ICDesigner authoring environment, selective playback according to Schedule events is available only in scripts published to InfoChannel Network. The iplay 3 software used for other InfoChannel publish media does not support scheduling. Scheduling and the Scala InfoChannel Player ICDesigner lets you communicate continuously. InfoChannel Players are set up to run ICDesigner non-stop, 24 hours a day if the hardware 116 4: Scheduling InfoChannel Designer 3 events Scheduling and the Scala InfoChannel Player is left on. This capability is what makes scheduling so useful and so important. You configure the InfoChannel Player to run a particular script. That script, the Main Script, runs continuously. Recall that all ICDesigner scripts automatically loop by default, starting over at page one after the last page is reached. Thus, the simplest ICDesigner production is a script that repeats itself in the same way, day after day. For example, if an ICDesigner script you create consists of only three pages without scheduling or other advanced features, the Player runs page one, then page two, then page three, then page one, then page two, and so on, ad infinitum. Page one Page two Page three Productions involving scheduling, however, display different information at different times, or on different days. The Player for these productions still runs a single script containing all events. The script still automatically loops. What is different is that not every event is run on every pass through the script. Some events in the script are skipped over because they do not fall within the scheduled valid ranges. 117 4: Scheduling InfoChannel Designer 3 events Scheduling and the Scala InfoChannel Player By default, an event has no schedule. If you do not schedule a script event, it runs every time that script execution reaches it. When a schedule is set for an event, that event is not run except as scheduled. Is this event scheduled? No Yes Is this a scheduled time for this event to run? Yes Run the event No What can be scheduled? You use the Schedule menu for all of the following (although some have limited scheduling options, as explained in the next section, “Types of scheduling”): • a screen page, consisting of a background and all its elements • individual elements on a screen page such as text, clips and sounds • a special event, which is an event not related directly to the screen display, such as a timing event or a command to an external device like a CD player • a group, a collection of pages that you can treat as a unit • a sub-script, another script that is run from within the current script Scheduling works essentially the same with screen pages, special events, elements, sub-scripts, and groups. We use the term events to apply to all types of things you can schedule. Some types of scheduling don’t apply to elements, however. Where a distinction is important, 118 4: Scheduling InfoChannel Designer 3 events Types of scheduling we use the term page the same way that it is used in the Main menu— to apply to any page, be it a screen page, special event page, group or sub-script. Types of scheduling There are two types of scheduling in ICDesigner: periodic and interrupt. Each has its particular uses, depending on what your production needs are. Periodic scheduling can be applied to any script event. Interrupt scheduling can be applied to any kind of page (including special event pages, groups and sub-scripts), but not to elements on a page, and not to pages within groups. Periodic scheduling Periodic scheduling creates “windows” of time, which you define as the valid time periods. It uses four successively more specific levels that you may use to define a valid time period: • Valid Range – the overall schedule time period • Valid Weeks – whole weeks by week number • Valid Days – days of the week • Valid Time of Day – the single-day level Enabling or disabling an event for the period Given a time period that you have defined as valid, you can specify one of two possible results for a periodic schedule entry: you can either enable or disable the event for that period. In other words, the valid period can operate “positively”, to specify when the event can run, or “negatively”, to specify when it cannot run. Although it is ultimately possible to accomplish the same result with positive scheduling alone, in certain kinds of scheduling situations it is much simpler to use the negative approach. Most descriptions of periodic scheduling in this manual assume that you are using the positive, periodic/enabled approach. 119 4: Scheduling InfoChannel Designer 3 events Types of scheduling As ICDesigner runs a script and reaches an event that has a periodic schedule setting, it checks to see whether the current date and time is within the valid period defined by the schedule. If it is, then: • a periodic/enabled event runs (it cannot run outside the valid period) • a periodic/disabled event is skipped (it can run at any time outside the valid period) In short, the periodic/disabled type of schedule exactly inverts the sense of the valid period. Periodic schedule indeterminacy It is important to emphasize that periodic scheduling does not cause events to run at a certain time, or guarantee that an event will run during any given scheduled period. It simply allows the event to run if, in the normal pace and sequence of the script’s execution, the event is reached during a period for which it is enabled. In short, periodic scheduling specifies when something can happen, not necessarily when (or even if!) it will happen. Specifying a definite execution time for an event is what interrupt scheduling (described in the next section) is for. The following diagram graphically illustrates how three levels of periodic scheduling (for simplicity, omitting consideration of the Valid Weeks level) work together to “filter” the possible execution times of a script event. The example schedule has an overall Valid Range setting of one week, with Monday, Wednesday, and Friday selected in Valid 120 4: Scheduling InfoChannel Designer 3 events Types of scheduling Days, and periodic/enabled daily in and out times of noon and midnight: Valid Range (one week) Valid Days (Mon, Wed, Fri) possible event times Mon Tue Wed Thu Fri Sat Sun Valid Time of Day (enabled, noon – midnight) script execution ranges during script when this scheduled event CAN run Interrupt scheduling The Valid Range, Valid Weeks, and Valid Days levels of scheduling are active and work for interrupt scheduling just as they do for periodic scheduling. However, in contrast to periodic scheduling, at the daily level interrupt scheduling is definite. When the scheduled time arrives, ICDesigner interrupts whatever else is happening in order to run the page that is interrupt-scheduled for that time. Valid Range (one week) Valid Days (Mon, Wed, Fri) possible event times Mon Tue Wed Thu Fri Sat Sun Exact Time of Day (at noon) times during script when this scheduled event WILL run script execution During normal running of a script, ICDesigner skips over interruptscheduled pages. After running an interrupt-scheduled page, ICDesigner continues by running the next page in the script after the interrupt-scheduled page. It does not automatically return to the interrupted page—however, there is an option to set a bookmark to allow resuming playback from the point of interrupt. 121 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu For periodic-scheduled events, the location of the event in the script dictates when the event may run. For interrupt-scheduled pages, the location of the page in the script is irrelevant to when the event will run. It does, however, dictate what page will run next after the interrupt-scheduled page, if the bookmarking feature is not used. Factors affecting scheduling Many of the important issues in scheduling are related to issues in timing, so you should be familiar with chapter 11 of the “Basic Authoring” guide, “Advancing the script automatically”. In particular, you must keep in mind that the timing of events is relative. Neither type of scheduling adjusts pause lengths, wipe speeds, or other factors that control a production’s pacing, in order to cause something to happen at or by a certain time. You must adjust these factors carefully yourself to ensure that events can occur as scheduled. To make the best use of scheduling in a complex production, you will sometimes need to utilize grouping and/or sub-scripts. You may wish to review chapter 2 of the “Basic Authoring” guide, “Working in the Main menu”, where these topics are introduced. You should be aware that the use of groups and/or sub-scripts has special considerations (for details, see the chapter just mentioned and the section “Scheduling with groups and sub-scripts”, later in this chapter). Particularly when using interrupt scheduling, you might want to take advantage of branching, explained in chapter 3, “Branching and using variables”. The explanations and examples included in this chapter should help to clarify the ways in which the different types of scheduling work, and how to choose which to use in your scripts. Working in the Schedule menu You schedule events in the ICDesigner Schedule menu. Click a page’s button in the Schedule column in the Main menu to schedule a page, 122 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu or click an element’s Schedule column button in the Design List menu to schedule an element. In either case, you see the Schedule menu: current date and time reference four levels of scheduling As with other menus in ICDesigner, you can select several events at once before clicking in the column to edit them all at the same time. Doing so can be hazardous, however, due to the numerous schedule parameters, and the fact that each event’s schedule can consist of multiple entries (see the next section). You use the Schedule menu to specify schedule entries in the schedule for the event. Each entry consists of a collection of time-related information that identifies when the scheduled event can or will play. The entry information controls are grouped in four sections, corresponding to successively more specific levels of scheduling: • Valid Range – the controls in this section establish the overall date/time range within which the event can play, and outside of which it cannot play • Valid Weeks – the controls in this section make it possible to schedule events through the year on the basis of week numbers • Valid Days – the controls in this section operate on the level of individual weeks, and let you permit the event to play only on certain days of the week • Valid Time of Day/Exact Time of Day – the controls in this section operate on the level of the individual days that are valid as defined 123 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu by the other controls, and establish whether the schedule entry is of the periodic or interrupt type Other buttons in the Schedule menu let you add, view, and remove entries. Schedule entries The schedule for a script event can contain more than one entry. You might, for example, want the same page to be run only during an hour in the morning and another hour in the afternoon. Each hour would be one entry in the schedule for that page. When you open the Schedule menu, you start at entry 1. Once you have edited it to your satisfaction, you can add further entries for that event if necessary. 왘 To add another entry for the event, click the Add Entry button. 왘 To edit or review other entries in the schedule for a page once you have more than one entry, use the Entry Number value control to move to the different entries. 왘 To delete a single schedule entry (the current one), click the Remove Entry button. 왘 To delete all the entries in the schedule for that event, click the Remove All button. With either Remove button, you see a confirmation dialog. 124 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu You can edit the schedule for only a single event at a time. To edit the schedule for another event, select the event you wish to edit. Caution! Nothing prevents you from creating pointless multiple-entry schedules that cause an event to always or never run, or that make interruptscheduled events interrupt each other. You must keep track of the cumulative effect of the entries. You can multi-select several events, setting a schedule for all of them at the same time. Doing so is hazardous, however, if you are editing existing schedule settings and not all the events have identical schedules. Editing an entry while multiple events are selected gives that entry number the same settings in all those events, regardless of what the individual events’ original settings for that entry number might have been. To accept the changes you have made to the displayed schedule entry and exit the Schedule menu, click Close. To discard changes and exit the menu, click Cancel. Combining entries To create complex schedules for an event, you use multiple entries for it. You can combine entries that use the different types of scheduling—periodic/enabled, periodic/disabled, and interrupt—freely. When the periodic/enabled and periodic/disabled types are combined, the valid period(s) created by the cumulative effect of all enabled entries is determined first, then the disabled entries are used to “cut holes” in the valid period. Schedule information in the column button A good way to help you keep track of whether your work in the Schedule menu is having the desired effect is to look in the Schedule column for the event. Information about the entry is displayed in the column button. Of particular note is the information in parentheses, which is interpreted as follows: • (current) – the schedule includes the current moment; the event could play immediately • (next: <date> <time>) – the date and time that the event will next be able to play 125 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu • (expired) – the scheduled period has passed; the existing schedule allows no further playback current date is past the end of the valid range, so schedule has expired If you are scheduling something for future playback and you see “(expired)”, it is an immediate indication that there is something wrong. If you see “(next: ...)”, compare the date and time shown with when you believe the next scheduled playback should be to help you determine if your scheduling is accurate. Make the Schedule column wide enough so that you can see these indications appear as you change the settings in the Schedule menu. When the column button is blank, the event is not scheduled and can play at any time. Setting the overall schedule range The first step in creating a schedule is to define the overall range within which the event can possibly run, using the controls in the Valid Range section of the Schedule menu. 126 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu When you turn on (✓) the From? and To? buttons, start date, start time, end date and end time value controls become available. You can adjust the date alone, or use the time value controls as well to specify the beginning and ending points of the range more narrowly. Defaults In the Schedule menu, times are displayed in 24-hour hours:minutes:seconds format, and default start and end times are 00:00:00 and 23:59:59, respectively. Thus the default start time or In time is at the beginning of the day (at midnight) and the default end time or Out time is at the end of the day (one second before midnight). Dates default to the current date. This means that making an To setting without a From setting implies a start date of now; setting a From date without an To date implies that the schedule continues indefinitely. Setting neither a From date nor a To date means that there is no date range within which the schedule should be restricted. Example 1: Ten days of promotional pricing Suppose your script runs on displays in a chain of 24-hour gas stations. One of the pages in the production extols the virtues of a premium grade gasoline. In July 2002, you are told that you should get ready to promote special promotional pricing on that page, for a sale which is valid only from August 1, 2002 at 8 AM through August 10, 2002 at midnight. 왘 To create this: 1. Create a new element on the premium gasoline page, a clip that wipes the price and expiration date onto the page. 2. Click the Schedule button for the clip to open the Schedule menu. 3. Set a start date of August 1, 2002, by clicking From? (✓), and then adjusting its start date value control. 4. Set a start time of 08:00:00 by using the start time value control. 5. Set an end date of August 10, 2002 by clicking To? (✓) and then adjusting its end date value control. 127 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu 6. Because you want the promotion to run all day on the 10th, you don’t have to specify an end time. You finish editing the scheduling by clicking Close. After 8 AM on August 1, and until the end of August 10, every time your script reaches the promotional pricing event, the clip wipes in on the page. At any other time, it doesn’t run. Once your new script is on the gas station Players, you won’t have to do anything more to get the display of sale information started, or to stop it. You won’t have to delete the scheduled element from the page to keep it from appearing once the sale ends. You might choose to delete it later to keep the script small, or you might choose to keep it there in case you are asked to schedule it again. Scheduling by week number For applications that require scheduling on a week-to-week basis, ICDesigner offers the Valid Weeks option, which lets you use week numbers. The Weeks: button has a default setting of All, so that week numbers are not considered in establishing the valid period. To do weekly scheduling, click the button. When you click the Weeks: button, you open a dialog that lets you choose the desired weeks graphically. 128 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu In the dialog are a series of buttons, one for each week of the year. (The week numbering obeys the ISO standard, which uses whole weeks, Week 1 being defined as the week that includes January 4.) 왘 Click a button so that it is indented to select that week number. 왘 If it would be easier to select the weeks in which the event should not run, do so and then click Invert to arrive at the selection of those weeks you do want. 왘 Click All to select all weeks, or None to clear any selection you have made and start again. When you have finished selecting the week numbers you want in the valid period, click Done to return to the Schedule menu. The Weeks: button lists the selected weeks numerically, with ranges of contiguous weeks shown as, for example, 17-32, and discontiguous ranges and individual week numbers separated by commas. Keep in mind that the Valid Weeks setting is beneath the Valid Range setting, if any, in the scheduling hierarchy. This means that although you can choose any weeks of the year, weeks or parts of weeks that are outside the Valid Range setting are not in the schedule. Example 2: Local and national promotion Let’s say you run a network of plasma panel signs that are set up to advertise store specials in a chain of supermarkets. Among the products in constant ad rotation are soft drinks. The supermarket chain has an ongoing contract to advertise various weekly specials for one national soft drink manufacturer throughout the year. But the store also on certain weeks promotes its own store brands, during which the national brand ads should be temporarily stopped. 왘 To easily create complementary schedules for your national and local soft drink special pages: 1. Click in the Schedule column of the local brand special page to open the Schedule menu. 129 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu 2. Ctrl-click on the national brand special page in the Main menu so that it is also selected for scheduling. 3. Click the Weeks: button to open the Select Weeks dialog. 4. In the dialog, click the first two week numbers of each quarter, the weeks that the local brand is promoted. (Both pages get this schedule.) 5. Click Done to exit the Weeks dialog. 6. Ctrl-click on the local brand page in the Main menu to deselect it. 7. Click the Weeks: button to open the dialog again. You see the weeks schedule you just set for the national brand page. 8. Click Invert to deselect all the weeks that the local page runs, and select all the others. 9. Click Done, then Close to exit the Schedule menu. Now the two pages cover all the weeks of the year, with no overlap. Setting valid days of the week In the Valid Days section of the Schedule menu are buttons that may be used to limit the days of the week that an event runs. The Days: pop-up has two possible settings: All and Selected Only. The default is All, so the individual day buttons are disabled. To enable them, choose Days: Selected Only. Initially, none of them is selected. If you select a weekday button, you allow the event to run on that day of the week within the overall valid range. You can select any combination of days during the week. selected buttons limit the schedule to those days of the week the Days: Selected Only setting for an event that runs only on weekdays 130 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu Example 3: Today’s menu Suppose you are creating a script to run on a hotel information channel. You might want to promote the hotel restaurant’s dinner specials. If there is a special for each day of the week that stays the same week after week, you can set this up easily using the Valid Days controls: 왘 To create the schedule: 1. Prepare a page for each day, all bearing the text “Today’s Menu”. (You could even create a page for each course, and group the pages into menus for each day of the week. Remember, a group is scheduled like any other page.) 2. After creating the pages, open the Schedule menu for the Sunday page. 3. Switch the Days: pop-up to Selected Only. 4. Click the Sun? button so that it is selected (✓). 5. Click the Monday page’ in the Main menu to select that page, then select its day button in the Schedule menu. 6. Continue for the remaining pages, selecting the page, then turning on the appropriate day button. 7. Click Close to exit the Schedule menu. Each page runs only on the selected day, with the pages for unselected days being skipped. Later, your chef might decide that seven menus is too many and that he won’t be cooking duck on Thursdays anymore. Instead, he will serve the same thing on Tuesdays and Thursdays. 왘 To re-schedule: 1. Open the Schedule menu for Tuesday’s page. 2. Click on the Thu? button to add Thursday to the page’s schedule (so that both the Tue? and the Thu? buttons are selected). 3. Delete Thursday’s menu page. 131 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu Periodic scheduling: setting a daily range To specify a limited time range within each valid day that an event may play back, you use the controls in the Valid Time of Day section. Set the Event: pop-up to Is Enabled within Valid Period. With periodic scheduling selected, you see the Daily In Time and Daily Out Time value controls in the Valid Time of Day section of the Schedule menu. Adjust the Daily In Time and Daily Out Time values to specify the times of day to begin and end allowing the event to play back. These daily times apply to every day that is permitted by the Valid Range, Valid Weeks, and Valid Days settings. If the Out time occurs after the event has already started, the event completes; it is not cut off. Keep in mind that if your script is long and the period defined by the In/Out times is short, your event could be skipped altogether—the running script might not happen to reach the event during the specified time. With a short script, your event may run many times within the period. With periodic scheduling, there is no way of specifying how many times an event is to run within the time “window” specified by the schedule. Example 4: The lunch page For this example, suppose your ICDesigner production is an internal corporate information channel. You notice the performance of too many employees sagging during afternoons when they’ve skipped lunch. 왘 To add a humorous noon-hour reminder that it’s time to get out of the office for a few minutes and get something to eat: 1. Create a new page with a lunch reminder. 2. Open the Schedule menu for the lunch page. You want this page to appear every day, so you do not need to make any changes in the Valid Range or Valid Days sections. Event: Is Enabled within Valid Period is the default schedule type, so the Daily In and Out Time controls are already visible. 132 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu 3. Adjust the Daily In Time control to set the start of the enabled period to 12:00:00. 4. Adjust the Daily Out Time time control to set the end of the enabled period to 13:00:00. 5. Click Close to exit the menu. Now, whenever the script gets to your page during the noon hour, it runs. During the rest of the day, the lunch page is skipped. Interrupt scheduling: setting an exact playback time When using interrupt scheduling, the Valid Range, Valid Weeks, and Valid Days controls function in the same way as they do with periodic scheduling. Switching to interrupt scheduling only changes the controls available on the daily level. Remember that elements on a page cannot be interrupt-scheduled. Interrupt scheduling is available only for pages. To interrupt-schedule a page, change the Event: pop-up to Interrupts Exactly. The Valid Time of Day section becomes Exact Time of Day. The At Time value control in this section indicates the first (or only) time you wish the page to run. You see three new controls, Repeat?, Every, and Until, for interrupt scheduling. The Every and Until controls are disabled unless Repeat? is on. available with Repeat? selected Repeating an interrupt-scheduled event Without using any other controls, an interrupt-scheduled page runs once per day at the time specified by At Time. You might prefer to repeat the page—once every hour, for example. To do so, turn on Repeat? (✓). This enables the Every and Until value controls, so you can adjust the frequency and extent of repetition. 133 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu Specify the repeat time interval with the Every value control, in hours, minutes, and seconds. The interval is measured from the time the page last began. (Leaving the default setting of 00:00:00 results in no repeats taking place, even if Repeat? is on.) Use the Until value control to set a time to stop repeating the page. Leaving the default time of 23:59:59 allows the page to repeat for the rest of the day. As long as the repeated page begins before this time, it will run to completion—if the Until time occurs while the page is running, it is not cut short. Remember, when an interrupt-scheduled page’s At time comes, it interrupts whatever the script is doing at that moment. It does not wait for any event that might be running at the time to finish—it will interrupt in the middle of an element wipe just as readily as in the middle of a page pause. Leaving a bookmark An interrupt-scheduled page disrupts the normal script flow, effectively acting as a branch to that page. Without your taking any further action, script execution would continue with the pages that physically follow the scheduled page in the script. Typically, however, this is not what you want. It is more likely that you want to resume the script from the point of interruption, so that the interrupt-scheduled page works as a temporary “detour” rather than a branch. This is made possible by the Leave Bookmark? option. This option appears, and is enabled by default, when Event: Interrupts Exactly is chosen. When Leave Bookmark? is on (✓), a bookmark is left at the point of interruption. A Goto: Return to Bookmark branch, applied to the interrupt-scheduled page, causes script execution to return to the interrupted page and begin playing it from the beginning. This is illustrated in the following example. Example 5: The $1,000 prize To reward your loyal viewers, you might have a prize giveaway on your cable TV channel. When a special message is displayed, the first viewer to call in wins. Design a page for your script giving the details. 134 4: Scheduling InfoChannel Designer 3 events Working in the Schedule menu 왘 To display the message at an exact date and time: 1. Open the Schedule menu for the prize information page. 2. Click From? (✓) and set the start date value control to the chosen date. 3. Click To? (✓) and set the end date value control to the same date. 4. Switch the Event: pop-up to Interrupts Exactly. 5. Set the At Time value control to the chosen time. Leave Bookmark? is on by default, but you need to explicitly create a Go To branch. 6. With the prize page still selected, click its button in the Branch column to open the Branch menu. 7. On the Go To panel of the Branch menu, choose Return to Bookmark from the Action: pop-up. 8. Click Close in the Branch menu. Your page will be displayed only once, on the date and at the time you specified, and it will interrupt whatever the TV channel script was doing at exactly that time. When the page finishes, the script will return to the interrupted page. If you do not intend to return to the interrupted page, you should turn off the Leave Bookmark? option. Viewing a summary of schedules The Schedule menu offers a way to look at the schedule entries in a summary view. Click View Schedules to see a listing of schedule entries, identified by page/element name. The View All Entries In: pop-up lets you choose whether to see the entries for just the selected event(s), or for all events in the script. 135 4: Scheduling InfoChannel Designer 3 events Scheduling with more complex scripts If your script uses scheduling extensively, this is a way to quickly review and compare entries, to verify them and help spot possible conflicts. This illustration shows both a periodic/enabled and a periodic/disabled entry, with all the basic schedule information. Click the Copy to Clipboard button to copy the entire listing to the Windows clipboard in plain text format. By pasting into a text editor, database, or other application, event scheduling can be reviewed conveniently outside of ICDesigner. When you have finished reviewing the schedule entries, click Close to return to the Schedule menu. Scheduling with more complex scripts If your scripts use groups or sub-scripts, you should be aware of the possible effects on the execution of scheduled events. Interrupt scheduling with groups and sub-scripts Interrupt-scheduled pages cannot be grouped or moved inside a group, so grouping is not a factor in their execution. Interrupt-scheduled pages in a sub-script, however, execute at their scheduled time only if the sub-script is currently running. While the main script is running, ICDesigner does not “see” the scheduled 136 4: Scheduling InfoChannel Designer 3 events How not to schedule events in its sub-scripts, and does not jump into the sub-script from the main script to run an interrupt-scheduled page. If the start time of an interrupt-scheduled page in the main script occurs while a sub-script or grouped page is running, ICDesigner does return to the top level of the main script to run the interrupt-scheduled page. In any case, after an interrupt-scheduled page runs, the script continues with the page that immediately follows the interrupt-scheduled page in the main script. Using a Return to Bookmark branch in a subscript always returns to the beginning of the subscript, not to a specific page. Periodic scheduling with groups and sub-scripts Periodic-scheduled events also may not execute according to schedule when groups or sub-scripts are involved. A periodic event runs only when it is actually reached during normal flow of the script. Thus, as the script steps through all events, including those in groups and subscripts, if it reaches the periodic-scheduled event within a “window” of time specified by the event’s schedule, the event runs. But if a sub-script or group uses branching to create a loop such that the main script is never returned to, periodic-scheduled events in the main script never run, just as non-scheduled events in the main script won’t run. How not to schedule While the scheduling features of ICDesigner are very powerful, they are not without limitation, and require careful attention to achieve the desired results. 왘 Here is a summary of scheduling pitfalls to avoid: • Too-short valid periods with a long script If your script is long and the scheduled valid periods are few and/or short, scheduled event will not be played regularly, because 137 4: Scheduling InfoChannel Designer 3 events How not to schedule script execution will seldom happen to reach the scheduled events during a valid period. • Periodic-scheduled events that are never reached Periodic scheduling does not cause events to run, it allows them to run if they are reached. So a scheduled event running depends on script execution regularly reaching it. A periodic-scheduled event that is never reached—for example, because of its location in the script relative to a branch, looping group, or non-exiting subscript—can never run. • Conflicts at different levels of scheduling Careless scheduling can lead to events being scheduled never to happen. For example, scheduling a page to run only on Monday, Wednesday, and Friday, and scheduling certain clips on that page to run only on Tuesday and Thursday will result in those clips never being seen. The same holds true when you schedule a group and then individually schedule pages within the group. Scheduling of events on lower levels needs to be within the “window” provided by the levels above them, or they never get to run. • Interrupt-scheduling everything In ICDesigner, events take a variable amount of time, depending on hardware and other considerations (see chapter 11 of the “Basic Authoring” guide, page 313, “Factors that affect timing”). Thus you cannot reasonably set a schedule in ICDesigner that determines exactly what is going to be displayed at each minute of the day. As a general rule, interrupt scheduling should be the exception, used for those pages that really must run at a particular time. • Interrupt-scheduled pages too close together Generally, pages that are important enough to be interrupt-scheduled are important enough that you do not want them to be interrupted themselves. Interrupt-scheduled pages—and their Repeat intervals, if they repeat—should be far enough apart (in terms of script execution time) that you do not risk them interrupting one another. 138 4: Scheduling InfoChannel Designer 3 events How not to schedule • Leaving out a Return to Bookmark “go to” branch Even if the Leave Bookmark? option was on for an interrupt-scheduled page, a Return to Bookmark branch is also required on that page or a succeeding page to resume at the interrupted page. 139 5: Printing scripts with ScalaPrint Scala InfoChannel Designer 3 gives you the ability to print out your scripts. Using ScalaPrint, you can produce color or black and white hard copies on paper or transparencies to enhance or accompany your ICDesigner production, or simply to aid in your design process. You may want to summarize your script, print certain pages of your script, or you might need a permanent printed record of the entire script. You might find a need for a cue card-type list of notes for a presenter to follow while your script is being presented. Using ScalaPrint, you can choose how much of your script to print, whether it be the entire script or only selected pages, as well as lay out the pages in different formats so you can use your printouts for different purposes. Whatever you choose, ScalaPrint provides you the ability to customize your script printouts to accommodate your particular needs. ScalaPrint produces printed output in a graphical format similar to the way the Thumbnail view in the Main menu displays your scripts. You can print all script pages on one sheet of paper, or each on its own page—as well as every option in between. The ScalaPrint menu lets you arrange the size, numbering, and arrangement of all the script’s pages on the printed page, and direct that output to a specific printer device. Understanding ScalaPrint terminology Slides Using ICDesigner, you create scripts consisting of pages and groups of pages. Within ScalaPrint, however, the individual script pages as they appear when printed are called slides to distinguish them from the physical pages that are printed out. Each script page you select from the Main menu to print is condensed into a slide, much like a photographic slide, and placed on the page according to your layout selec- 142 5: Printing scripts with ScalaPrint Understanding ScalaPrint terminology tions. Then you select options to size, order, label, number, and frame the slides to suit your needs. Print job In ScalaPrint, as in other applications, your intended output from the printer device is referred to as a print job. A print job consists of the slides for the selected script pages you intend to print, their size and layout on the page, and how you order, label, and frame them. You may select to print all script pages or just some of them. Depending upon how you arrange the slides on the printed pages, you may end up with a multiple-page print job, or a print job consisting of all slides on one page. Matrix The script pages you select from the Main menu to print are formed into slides, and the slides are arranged on pages depending upon the matrix, or column and row arrangement of the slides. You can choose to place each slide on its own page, or place perhaps 6 slides on a page, arranged in 2 columns of 3 rows. The matrix, in this example, would be 2 × 3. Should you decide that you’d like to have each slide print on its own page, the matrix you use is 1 × 1. You cannot select different matrices for different pages in the same print job. In order to have different slide arrangements on different pages, you must configure a separate print job for each intended layout. (See “Different layouts for different pages” at the end of this chapter.) 143 5: Printing scripts with ScalaPrint The ScalaPrint menu The ScalaPrint menu To open ScalaPrint, click the Print icon on the Main menu toolbar. You see the ScalaPrint menu on the screen, divided into two main areas: the page preview section and the ScalaPrint tabbed options. page preview options panels The page preview section, located across the top of the screen, provides a graphical representation of how your script’s slides will be positioned on a sample printed page. You do not see your actual script pages’ images or content on the screen; just gray boxes used to represent the size and position of each slide. The tabbed options panels let you select the options that control the layout of your slides on each page, as well as choose the destination printer to generate the hard copy. As you change most layout options, you see the page preview update to reflect your changes. Remember, the slides are only a representation of the physical position of your script pages; they are not a preview of what will actually print. 144 5: Printing scripts with ScalaPrint ScalaPrint tabbed options ScalaPrint tabbed options Click one of the five tabs to see the available options on each panel. You can choose from General, Layout, Labeling, Margins, and Printer. General panel options The General panel options deal with the overall arrangement of the script pages you want to print. Slides The Slides: pop-up lets you choose whether to print slides for all script pages, or only the slides corresponding to the script pages that you have selected in the Main menu. Use the pop-up to switch between All and Selected. If you have more than one script page selected in the Main menu before you start ScalaPrint, the Slides: pop-up defaults to Selected. Pages The Pages: pop-up lets you print all pages in the current print job, or select a range of pages from the print job. Use the pop-up to switch between All and Range. Choosing Range enables the Print Range control below. Note that this control refers to pages of the print job, not script pages. For example, if your script has twelve pages and your slide layout places six slides on each printed page, the print job has three physical pages, controlled by this option. Choosing Pages: All does not print all script pages unless the Slides: All option has been selected. Print Range When you select Range from the Pages: pop-up, the Print Range value control becomes active, allowing you to specify the beginning and ending pages of a range you wish to print from the current print job. Select the page number range using the value control. You can use the arrows or enter the page range numbers manually. Possible values for this control are from 1 to 999. The Print Range value control is not limited to the actual number of pages in the current print job, so it is possible to set page numbers that are higher than 145 5: Printing scripts with ScalaPrint ScalaPrint tabbed options the maximum number of pages. If the starting page number is too high, no pages are printed. Entering an ending page number greater than the maximum number of pages is has the same effect as entering the maximum number. Copies Use the Copies value control to set the number of copies of the current print job you wish to print. Include Background? You have the option to exclude the background images from your slides so that they will not be printed as part of the slide. Turning off Include Background? excludes background images from all slides in the current print job. Suppose, for example, that your slides contain text overlying somewhat busy background graphic images, and you are using ScalaPrint to generate transparencies. You want to emphasize only the text, so you might choose to exclude the background images from the slides. The Include Background? option is on by default. Layout panel options The Layout panel contains options that tailor the way that slides are laid out on the pages of your print job. Orientation Choose the direction in which the slide’s contents are positioned on the page with the Orientation: pop-up. You can select either Portrait, in which the page height is longer than its width, and columns are positioned across the narrower dimension of the page; or Landscape, in which the page width is longer than its height, and columns are positioned across the widest dimension of the page. 146 5: Printing scripts with ScalaPrint ScalaPrint tabbed options Matrix You can specify the number of slides that will appear on a page as well as how they are arranged in columns and rows by using the Matrix value control. The first value represents the number of columns of slides, and the second value represents the number of rows of slides. You can have as few as 1 slide per page (a matrix value of 1 × 1) to as many as 100 slides per page (a matrix value of 10 × 10). Obviously, as matrix values increase, the number of slides on a page increases and there is less room to display each slide. ScalaPrint reduces the size of all slides equally, maintaining their original aspect ratios. As you adjust the matrix values, the page preview slides change correspondingly. To change the Matrix value, use the value control. You can use the arrows or enter the numbers manually. Slide Order Placing multiple rows and/or columns of slides on a page requires that you decide how to order them. Using the Slide Order: pop-up, you can specify whether the slides’ order is Across, filling each row to progress to the bottom of the page, or Down, filling each column to progress to the right side of the page. The default order is Across. Scale Sometimes when printing a script you need more white space around your slides, whether it be for notes, framing, titles or labels, or just for aesthetic reasons. Using the Scale option, you can scale down or reduce slides to a percentage of their maximum size. Keep in mind that the maximum slide image sizes are initially determined by the number of slides you choose to place upon each page with the Matrix control. Scaling does not increase the number of slides on a page; it merely reduces each slide’s image size. You cannot scale up, or enlarge a slide to greater than 100% of its maximum size. Row Alignment Just like you justify or align text, you can align slides. However, with ScalaPrint, you are actually aligning the slides within the boundaries of their individual matrix areas. 147 5: Printing scripts with ScalaPrint ScalaPrint tabbed options Row Alignment: allows you to align the rows of slides vertically on the page. Choose from among Center, Top, and Bottom alignments. Selecting Center aligns the slide row(s) at the centers of the matrix areas. Selecting Top aligns the slide row(s) along the top edges of their matrix areas. Selecting Bottom aligns the slide row(s) along the bottoms of their matrix areas. Aligning slides has a visual effect only if the slides have room to move vertically within their matrix areas. If your slides do not move when you change their alignment, use the Scale option to reduce their size. Column Alignment Column Alignment: allows you to align the column(s) of slides horizontally on the page. Choose from among Center, Left, and Right alignments. Selecting Center aligns the slide row(s) along the centers of the matrix areas. Selecting Left aligns the slide row(s) along the left edges of their matrix areas. Selecting Right aligns the slide row(s) along the right sides of their matrix areas. Note that further adjustments may need to be made to the page’s margins using the Margins option tab, discussed later in this chapter. Aligning slides has a visual effect only if the slides have room to move horizontally within their matrix areas. If your slides do not move when you have justified them, use the Scale option to reduce their size. 148 5: Printing scripts with ScalaPrint ScalaPrint tabbed options Labeling panel options ScalaPrint’s Labeling panel gives you a variety of options to control the labeling of your slides on the printed pages. title slide name slide number frame page number Title? The Title? option, which is on by default, places the name of your script, without its file extension, at the top of each page of your print job. With the Title? option turned on, you see a greeked representation of the title displayed at the top of the page preview. With the Title? option turned off, the printed pages have no heading. Page Number? The Page Number? option enables or disables printing the print job’s page number at the bottom of each page. The page number represents the order of the pages as they are generated by the printer for this print job, and does not necessarily correspond to the numbering of pages in the script. With the Page Number? option on, you see a greeked representation of the page number displayed at the bottom of the page preview. 149 5: Printing scripts with ScalaPrint ScalaPrint tabbed options For example, suppose you select pages 1, 3, and 5 from the Main menu, and set the matrix to 1 × 1 in ScalaPrint, so each slide prints on one page. You have defined a print job of 3 pages. These pages, if you turn on Page Number?, will be pages 1, 2, and 3 of the print job. The print job’s page numbers do not correspond to the script’s page numbers. Frames? You can choose to have an beveled frame, much like a picture frame, placed around your slides. If you turn the Frames? option on, a predefined frame is placed around each slide; if left off, which is the default, the slide is displayed and printed with no border around it. With the Frames? option on, you see thin lines representing the frames outlining each slide in the page preview. ScalaPrint frames are the same thickness regardless of slide size. Slide Name? Turn Slide Name? on to enable the name of a slide to print directly underneath the slide image. The slide’s name corresponds to the script’s assigned page name, including the extension if a file name is used. With the Slide Name? option on, you see a greeked representation of the slide name displayed underneath and to the left of each slide in the page preview. This option is off by default. Slide Number? Slide Number? enables or disables printing the slide’s script page number directly underneath the slide image. This number is the same as the script’s page number. If a slide is part of a group of pages in the Main menu, the slide number is printed as the Group number, followed by a dash (-), and then the page number within the group. With the Slide Number? option on, you see a greeked representation of the slide number displayed underneath and to the right of each slide in the page preview. 150 5: Printing scripts with ScalaPrint ScalaPrint tabbed options Margins panel options You can adjust the margins of the printed page by using the Top, Left, Bottom, and Right value controls on the Margins panel. The units of measure indicated on the value controls are controlled by the Margin Units: pop-up. Adjusting the margins is especially useful when you need to leave room for binding your printout. Printer devices have different minimum margin settings, and you may find that a minimal margin you select is not supported by your printer. If your images, text, or labels seem to be cut off near the page edge, consult the printer manual to determine the printer’s minimum supported margin. Margin Units Margins can be specified as either 16ths of an inch (English units) or millimeters (metric units). Use the Margin Units: pop-up to switch between English and metric. When you change between millimeters and sixteenths, the individual margin values accurately convert from metric to English and vice versa. Printer panel options The Printer options panel allows you to adjust physical printing options, including allowing you to choose the print device itself. 151 5: Printing scripts with ScalaPrint ScalaPrint tabbed options Printer Use the Printer: pop-up to choose from the list of available printers your computer is set up to use. You can select only from those printers configured in the Windows Printers folder. If the printer name you want is not available from the pop-up, check your system’s printer settings. The default printer displayed in ScalaPrint matches your default Windows printer. Paper Use the Paper: pop-up to choose a paper size for your print job. The sizes listed are those that the currently selected printer accommodates. Printer Properties Clicking the Printer Properties button opens the Windows Printer Properties dialog so you can select from among the other features the selected printer driver offers. Other than to select printer device, paper size, number of copies and paper orientation, you must use the external Windows Printer Properties dialog to change the current printer’s features. 152 5: Printing scripts with ScalaPrint Different layouts for different pages For these printer settings that you can also make directly in ScalaPrint, the corresponding settings in the Printer Properties sheet reflect whatever choices you have already made. Similarly, changes you make in Printer Properties are reflected in ScalaPrint when you click OK and return. Reset Settings Clicking Reset Settings changes all of ScalaPrint’s settings back to their defaults, causing whatever selections you have made to be discarded. Print! When you have made all your choices for your print job’s content, layout, and destination, you are ready to print. Click the Print! button to send the currently configured print job to the printer you have selected. Close Selecting Close exits ScalaPrint and returns you to the Main menu. All General, Layout, Labeling, Margins, and Printer settings are automatically saved when you close the ScalaPrint menu. Different layouts for different pages ScalaPrint supports only one matrix or layout for the entire print job. If you want to select more than one matrix arrangement for different pages, you must configure separate print jobs for each intended layout. Say, for instance, that you want pages 1, 6, and 11 to print by themselves, each being the only slide on the page; yet you want pages 2-5 together on a page, and pages 7-10 together on a page. To accomplish this, you must set up and print two separate print jobs. Select pages 1, 6, and 11 from the Main menu, set the Matrix pop-up to 1 × 1, and then send the print job to the printer. Then select pages 2, 3, 4, 5, 7, 8, 9, and 10 from the Main menu, and set the Matrix pop-up to something which would allow 4 slides to print on a page, such as 2 × 2, or 1 × 4, or 4 × 1. Then send the second print job to the printer. 153 6: Publishing with InfoChannel Designer 3 Scala InfoChannel Designer 3 gives you the tools you need to create dynamic multimedia productions to communicate your messages with maximum impact. Once you have created an InfoChannel Designer production, you will want as many people as possible to see it. With ICDesigner you can publish your productions, or have them distributed so that your message is received by someone else. The most powerful type of publishing offered in ICDesigner is publishing to InfoChannel Network. An InfoChannel Network consists of a system of remote PCs running Scala InfoChannel Player software, and controlled through the Scala InfoChannel Network Manager application, both available separately. Scala’s freely available Internet-enabled viewer technology, iplay 3, provides playback of ICDesigner’s script files that have been published to CD-ROM or as a Web component or file. The Microsoft® Internet Explorer browser can play ICDesigner scripts directly in the browser window if iplay 3 is installed. Scripts can even be published as video files or as simple Web pages, neither of which require Scala software to be viewed. In any case, your productions can be seen by anyone regardless of whether or not that person has ICDesigner authoring software. Multiple media publishing ICDesigner allows you to publish to a variety of media. You can publish to an ordinary disk file, publish for transmission by e-mail, publish for CD-ROM mastering, or publish to the InfoChannel Network for remote transmission. The publishing process involves collecting all the files that compose the production (including art, graphics, video, and sound) and putting them together in a conveniently portable form. Whatever the publishing medium, the procedure you use is substantially the same, with different options depending on the final destination of the published script. 156 6: Publishing with InfoChannel Designer 3 Multiple media publishing Different capabilities in publish media You need to be aware that the different ICDesigner publish media yield different end products, not all of which provide the same experience for the viewer. There are significant variations in form and capability among the publish media, including the following: • EX functions – EX events authored using optional EXes—Log, TextFile, Billing, Serial, MCI MPEG, Optibase, Queue, and WinScript—require those EXes to be present on the playback system for those events to operate. Only the ICPlayer 3 software, running on a Player in an InfoChannel Network, supports the playback of optional EX events in published scripts. The iplay 3 viewer software does not support optional EXes. This means that optional EX events cannot be expected to function in scripts published to CD-ROM, File, E-mail, or Web Component. (Publish to HTML Slides and to Video do not involve script playback in the usual sense, so they also do not support EX events.) • Scheduling – The scheduling of script events through the Schedule menu is supported only in scripts published to InfoChannel Network. Scheduled events in scripts published to other media can play at any time. • Editability – Scripts published to CD-ROM, File, E-mail, or Web Component can be edited, but doing so is difficult mainly because of the way their media files are referenced. Generally, publishing is not the ideal way to distribute a script intended for further editing. It is better to use Save As on the Main menu with the appropriate Advanced Save Options settings if you need to “package” a script and still allow it to be editable. Scripts published to HTML Slides or to Video are not editable at all within ICDesigner. • Cross-platform capability – Actual script playback is dependent on Windows and thus is restricted to the PC platform. Scripts published to Video, however, would be viewable on other plat157 6: Publishing with InfoChannel Designer 3 Publishing features forms for which AVI or AnimGIF viewers exist. Scripts published to HTML Slides would be viewable on any platform’s browser, although the dynamics of script playback are not represented. • Interactivity – Scripts published to HTML Slides or to Video do not preserve any interactive features of a script (buttons, Text Entry Fields, script navigation). • Playback software requirements – Scripts published to InfoChannel Network require ICPlayer 3 software for playback. Scripts published to Web Component, File, E-mail, or CD-ROM require the free iplay 3 viewer software; this is included automatically in Publish to Stand-alone CD-ROM, and can be downloaded from www.scala.com. Scripts published to Video require any player program that handles the AVI or AnimGIF formats. Scripts published to HTML Slides require only standard web browser. Publishing features ICDesigner lets you make choices about what you want to include in your published production. You set options in the Publish Script dialogs, of which there is one for each publish medium. This dialog makes it easy for you to make various global settings regarding the script’s final published form and destination. It also addresses possible licensing and software setup issues. (Scala gives you the right to reproduce and distribute the clip art that comes with it, but your script might use content for which you must obtain other licenses independently. See appendix B, “Licensing issues”, for more information.) When you click the Publish icon from the Main menu toolbar, you see a drop-down list showing the possible publishing media: • 158 InfoChannel Network – Publish to InfoChannel Network is for customers who have an installation that also includes InfoChannel Network Manager 3, Scala’s facility for transmitting and updating scripts on systems of remote PCs running InfoChannel Player 3 6: Publishing with InfoChannel Designer 3 Publishing features software. Publishing to the network is the first step in the transmission process. • Web Component – Similar to Publish to File, but allows you to upload the published script file directly to a Web server. This also can create an example HTML page for immediate Web access to the published script. A knowledgeable Web author can cut and paste the script with its Web-enabling HTML “wrapper” from this page. Requires iplay 3 for script playback. • Stand-alone CD – Creates a file set and folder structure that are ready for burning as a CD-ROM image, containing the script as an autorunning Windows application. When the script runs, iplay 3 is installed if necessary, then the script runs off the CD. • File – For sharing with recipients who already have iplay 3, this packages the script for easy distribution, including the capability to save the script with all associated media as a single file. • E-mail – Assuming your default e-mail program is SMAPI-compliant, opens it and prepares a new message ready to address and send, with the published script as a single-file attachment. Requires iplay 3 for script playback. • HTML Slides – Creates a set of HTML pages that displays your script as a series of static slides. This is useful as a quick and easy way to share the basic design of a script. Because these pages are standard HTML, they can be seen in any browser, on any Webenabled computer platform. • Video – Plays back the script, capturing the resulting display as a standard form of computer video file, either an AVI or an AnimGIF. This is an ideal way to share non-interactive scripts as single files, using universally available playback software. Choosing any of these media opens that version of the Publish Script dialog, the options on which vary depending on the medium you choose. But for all the publish media, the dialog is laid out and functions in essentially the same way. 159 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network Options column The Options column on the left hand side of the dialog contains a different set of options for each type of publish medium. Script Information box The Script Information box gives you information about the script that you have chosen to publish, such as the approximate size in megabytes of the script. ICDesigner automatically scans your script and displays information about it in the Script Information box. It also displays information about data that is being processed, while it is being processed. Finally, it tells you whether or not publishing was successful after you click the Publish! button. If publishing was not successful, you see an error message telling you why it failed. Publish! After you have chosen all your publishing options and click the Publish! button, the published production is saved. ICDesigner allows you to assign a password to your scripts, which protects them from being inspected or edited by people who do not have access to the password. A password is not needed, however, simply to run the production. The script currently showing in the Main menu is the one published. None of the original script’s files are affected by publishing. Publishing to InfoChannel Network The Publish to InfoChannel Network dialog is where you prepare a script for distribution to a network of remote Player machines on an InfoChannel Network. The publishing process collects all the script’s 160 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network constituent files and arranges them in a structure that is appropriate for efficient and reliable transmission. The published script is deposited in a Publish Location, a folder defined in and accessible to InfoChannel Network Manager, Scala’s companion software for administration of InfoChannel Networks. Script Name Enter a name for the published script (.SCB is appended). This does not need to match the name under which it has been saved (as a .SCA file) in ICDesigner. Publish to Use the Publish to: pop-up to pick one of two possible settings, Local or Shared Folder or FTP. These give you the option of either saving the script and its related files to a Publish Location on a local disk, or uploading it via FTP to a remote Publish Location. There are additional options that vary depending on which publish setting you choose. 161 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network You would publish to disk if your Publish Location happens to be on a local disk or accessible through a LAN. If the Publish Location is offsite, you would use FTP. To use FTP, you must have an account with an Internet Service Provider that offers FTP hosting, and know the username, password, and FTP site and directory information. Folder (Publish to Local or Shared Folder only) If you choose Publish to: Local or Shared Folder, the Folder: button appears below the pop-up. Click this button to open the File dialog, where you can specify the folder into which the script-related files should be published. The File dialog has the Default Custom Places button. Clicking it specifies the Default Publish Location folder as the destination. This folder—normally located at <systemroot>:\Documents and Settings\All Users\Documents\Scala\Network Transmission\Publish Locations\Default where <systemroot> is the letter of the drive where ICDesigner is installed—is set up automatically for you during installation. 162 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network It is recommended that you use this as your destination folder unless you have a compelling reason to use a different location. The Default Publish Location allows more efficient data flow, and also is simpler from the Network Manager side because it requires no configuration to use. If you need to choose your own destination folder, it does not have to exist already. Navigate to the folder within which you would like to make the publish folder, click the New Folder icon to create a folder, rename it, then open the new folder. If you have previously published this script to the folder you choose, any previously published versions of this script are deleted before publishing is performed. FTP Folder (Publish to FTP only) The FTP Folder: button appears below the pop-up when Publish to: FTP is chosen. Click to open a dialog in which you enter FTP login information. URL: – enter the FTP upload address to which the script files should be sent. For example: ftp://192.168.0.10/Aserver/NetMgr/PubContent or ftp://ICNMserver.com/Publish Locations/MyContent1 163 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network Be sure to include the path from the FTP root to the directory on the FTP server into which the published files should be deposited. Use forward slashes to separate directory levels in the path. User Name: – To gain access to the FTP server to upload the published script, an FTP logon is required. Enter the name in the User Name: text box. Password: – A password is also required to complete the logon to the FTP server. Enter it in the Password: text box. The characters you type appear as asterisks (*), so you will not be able to see them. Confirm Password: – Type the password again in this box. What you enter must exactly match the Password: entry. Click OK when you have entered the FTP login information. In the FTP Folder: button, you see the FTP URL with the username you gave embedded in it, like this: ftp://Dezignr@ICNMserver.com/Publish Locations/MyContent1 Advanced Options Advanced Options opens a dialog that allows you to specify whether to include wipe files and font files with the published script. When these options are on, messages appear in the Script Information box reminding you. Include Fonts? Turn on (✓) Include Fonts? when your production uses fonts that might not be installed on the Player machine. Turning Include Fonts? on ensures that they be included with the script files. Scala bitmap fonts are placed in a Fonts directory; TrueType fonts, if their distribution is permitted, are provided as embedded binary data. If a TrueType font is internally defined as non-redistributable, ICDesigner cannot include it. The viewer must acquire that font independently before the production can be played. Important: You must be sure to check on the licensing requirements for the fonts that you include. ICDesigner bitmap fonts are freely 164 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network redistributable for any purpose and have no licensing requirements. The TrueType fonts included with Scala ICDesigner are freely redistributable for any production you create, but only for non-commercial purposes. TrueType fonts that you acquire from other sources have licensing restrictions that vary from manufacturer to manufacturer, and it is your responsibility to comply with the requirements for each. See appendix B, “Licensing issues”, for a more complete discussion of licensing requirements. Include Wipes? Include Wipes? should be turned on (✓) when your production includes ICDesigner wipes that you want to make sure perform on the Player. Alpha wipes, for example, use special image files to generate their reveal patterns. When this option is on, the wipe files used in your production are included with the other script files. If this option is not included, wipes become simple Cut wipes on a Player that does not already have the necessary wipe files. Copy to Linked Content Folder? Turning on the Copy to Linked Content Folder? option causes a duplicate copy of the published script to be placed in the Linked Content folder. Use this option when you want to load the script into another script in ICDesigner as a sub-script, but have the sub-script later published as a link, so that it can be independently updated like any other linked content file. (Normally, sub-scripts are included with their Main Scripts when published to InfoChannel Network, and so cannot be independently updated.) When you publish a copy of a script to the Linked Content folder, you see a <scriptname>.SCB file in the folder. This file is not the actual script file, however it can be opened just like an unpublished .SCA script file. In the Linked Content folder is also another folder, which contains the actual script and its content files. You cannot open this folder from the File dialog, and do not need to. The naming and structure of the contents of this subfolder are esoteric and should not be disturbed. 165 6: Publishing with InfoChannel Designer 3 Publishing to InfoChannel Network Publishing scripts with linked content Scripts that use linked content—files chosen from the Linked Content folder—are treated differently in publishing to the InfoChannel Network than other scripts. Unlike other content files, linked content files are not included and stored along with the script when it is published. Only references to the content file name are included in the script. The actual content files to be used in playback on InfoChannel Players are assumed to be present on the Players, having been sent there separately. However, since the linked files are not published with their script, they are not guaranteed to be on the Players. If the linked files are in fact not on the Players at the time the script referencing them plays back, playback will not be correct. Because of this risk, when you publish a script to the InfoChannel Network, it is scanned for linked content references. If any are found, you see a warning dialog that reminds you of the nature of linked content and lists the files that need to be sent separately to the Players: Linked content file reference in this script 166 6: Publishing with InfoChannel Designer 3 Publishing to CD-ROM Publishing to CD-ROM The Options column in the Publish Script to Stand-alone CD dialog contains settings specific to publishing for CD-ROM distribution. A production published to a stand-alone CD plays back from the CD. On the CD is included a setup program that installs the iplay 3 player software as well as any required third party components. Project Name Project Name: is the name given to the published script and the folder in which the script and other script files and folders are placed. The .EXE file that starts playing the script also has this name. The name can be anything you want, but illegal characters are stripped from it, and any spaces in the name are replaced by underscores (_). The extension .SCB, indicating a published ICDesigner script, is automatically added to the name you give. Publish to Folder Publish to Folder: indicates where your publish folder will be. When you publish, all the files used by a production are copied to the publish folder. The default location is the folder where the script is saved, or to the Scripts folder for an unsaved script. Click the Publish to Folder: button to open the File dialog, where you can choose a location. The location you choose must be within the 167 6: Publishing with InfoChannel Designer 3 Publishing to CD-ROM folder structure that will eventually be written to the CD-ROM master. After publishing, the folder you choose here contains the README.TXT file for the script, an AUTORUN.INF file, and a folder (with the name you gave in Project Name:) that contains all the script folders and files. If you have previously published this script to this folder, any of the previously published contents related to this script are deleted before publishing is performed. After publishing, the folder (with all of the production’s files) can be mastered to a CD-R with any CD burning software. Startup Image The startup window is the first thing you see when you run a published script either by double-clicking its icon in My Computer, or choosing it through the Start menu. If you do not change the startup window image, you see the default iplay 3 startup screen shown above. To substitute your own image for ICDesigner’s default, click on the Startup Image: button to open a File dialog, then choose the image file that you want to import. Click OK. When you run the published production, you see the image you chose as the startup screen. The image can be any size, color depth, and graphics format supported by ICDesigner, but to ensure compatibility with the majority of machines, we recommend you use an image that is approximately onequarter the size of a 640 × 480 VGA screen. If the image you choose is smaller than the minimum of 240 × 120 pixels, it will be scaled up to 168 6: Publishing with InfoChannel Designer 3 Publishing to CD-ROM that size. To have text on your startup screen, the text must be part of the image itself. AutoPlay? The AutoPlay? option lets you create productions that install themselves and play automatically. If this option is on, when the viewer inserts the CD into the CD-ROM drive and closes the CD-ROM drive drawer, a setup program begins to run. The setup program copies the iplay 3 player to the system’s hard drive automatically. Then the production begins to run from the CD. On (✓) is the default. If any of the required Microsoft software components are not installed on the playback PC, the setup program displays a dialog explaining that they need to be installed before the production can run. It can install DirectX® 8.1 automatically if Microsoft’s distribution archive has been included on the CD. It is recommended that you include the DirectX archive in your CD image, so that large Internet downloads will not be required before your production can be viewed. Please see the section “Microsoft components” on page 189 of this chapter for more information. Publish as One File? Publish as One File? allows you to embed the media files that are part of the production into the same file as the script itself. Normally, most media (background and clip image files, sound files, etc.) are included as separate, externally-referenced files. This can be more flexible in many circumstances. To prevent confusion, and ensure that crucial files do not become lost, misplaced, or misused by recipients of the CD, you can publish all the script contents as a single file. However, a factor to keep in mind is that for a script published this way, the entire file must be loaded into memory. For large scripts and/or playback machines without plenty of free RAM and disk swap space, this can result in impaired script performance. 169 6: Publishing with InfoChannel Designer 3 Publishing to a file Run Script in Desktop Window? A script can run either full screen or in a window on the desktop. The Run Script in Desktop Window? option lets you specify which. Color Palette The Color Palette: pop-up provides three choices that let you control the color depth of the display mode that the script uses in playback: • Same as User’s Desktop – does not change the color depth of the user’s screen. This is the safest choice, as it eliminates the possibility of iplay trying to use a display mode that is unavailable to the video card or damaging to the monitor. However, playback does require a High Color or True Color display mode. If the user’s desktop is set to 256 colors, the script will not be able to play. • Thousands – If necessary, sets the display mode color depth to High Color (16 bits, approximately 65,000 colors). • Millions – If necessary, sets the display mode color depth to True Color (24 bits, approximately 24 million colors). Publishing to a file The Publish Script to File dialog lets you save the script and all its content to a disk location in a format ready for playback with iplay 3. Use this medium if the intent is to share the script over a network, transfer it to another system on a floppy or other removable disk medium (other than as its own CD-ROM) or simply to store it in its published form (possibly as a single file), for later playback using iplay. 170 6: Publishing with InfoChannel Designer 3 Publishing to a file In the Options column are the buttons Project Name:, Publish to Folder:, Publish as One File?, and Advanced Options. Project Name Project Name: is the name given to the published script and the folder in which the script and other script files and folders are placed. The .EXE file that starts playing the script also has this name. The extension .SCB is automatically added to the name you give. Publish to Folder Publish to Folder: lets you choose the publish folder, within which your published script will be placed. When you publish, all the files used by a production are copied to the publish folder. The default location is the folder where the script is saved, or to the Scripts folder for an unsaved script. Click the Publish to Folder: button to open the File dialog, where you can choose a location. After publishing, the folder you choose here contains a file (with the name you gave in Project Name: plus the extension .SCB), and another folder, which contains all the script folders and files. Keep in mind that the publish folder you choose should be empty to start with. If it is not, anything in the folder is deleted before publishing is performed. Publish as One File? Publish as One File? is an option that allows you to embed the media files that are part of the production into the same file as the script itself. Normally, most media (background and clip image files, sound files, etc.) are included as separate, externally-referenced files. This can be more flexible in many circumstances. However, to prevent confusion, and ensure that crucial files do not become lost, misplaced, or misused by recipients of the CD, you can publish all the script contents as a single file. 171 6: Publishing with InfoChannel Designer 3 Publishing to Web component Advanced Options Advanced Options opens a dialog that allows you to specify whether to include wipe files and font files with the published script. This is the same dialog as described in the “Publish to InfoChannel Network” section. See page 164 for details on the Advanced Publish Options dialog. Publishing to Web component Opening the Publish Script to Web Component dialog makes it possible to publish the script to a Web server, from which it can be accessed through a standard URL. The published script is no different from that produced by Publish Script to File with the Publish as One File? option on. The intent of this form of publishing is primarily to allow the script to be incorporated into a Web page created in a Web authoring application. A Web author can put the published script file in a Web page by enclosing it in the appropriate HTML Object “wrapper” code. Publish Script to Web Component includes an option to create a simple Web page containing the script, which is convenient for testing and as a template for how to invoke the script. When someone who has the iplay 3 viewer installed accesses a page that contains a link to the published script in a capable browser, the script plays. In Microsoft Internet Explorer 4 and up, the script plays in the same browser window. 172 6: Publishing with InfoChannel Designer 3 Publishing to Web component This form of access is like a standard Web page. The script content downloaded by the browser is not stored permanently on the machine’s hard drive, but rather is cached as temporary files like normal Web data. The URL must be visited again to see the latest version of the script, just like a Web site. Setting up a Web page Publishing a Web page is a simple process. But there are a few important pieces of information you need to know beforehand to be able to complete the process. In particular, you need to know two things: • where on the Web server your script will reside • the URL that people will use to access it You need to enter these locations, in the form of paths to a server directory, in this dialog. If you administer your own Web server, you should be able to determine these locations for yourself. If you use the Web server of an Internet service provider (ISP), you need the ISP to tell you where the script files should go, and the URL that would be used by the outside world to get to them. Project Name Enter the page title that should appear on the title bar of the Web browser in the Project Name: text box. This also is used for the file name for the published script (.SCB is appended). Publish to Use the Publish to: pop-up to pick one of two possible settings, Local or Shared Folder or FTP. These give you the option of either saving the script and its related files to a local disk, or uploading it via FTP to a remote Web server. There are additional options that vary depending on which publish setting you choose. 173 6: Publishing with InfoChannel Designer 3 Publishing to Web component You would publish to disk if your Web server happens to be on a local disk, or if you want to check the published file from your browser without uploading it to a remote server. In most cases, a Web server is remotely located, and final publishing involves publishing to an ISP via FTP. Folder (Publish to Local or Shared Folder only) If you choose Publish to: Local or Shared Folder, the Folder: button appears below the pop-up. Click this button to open the File dialog, where you can specify the folder into which the script-related files should be published. The folder does not need to exist already. Navigate to the folder within which you would like to make the publish folder, then type a backslash and a name into the Folder: box. You are asked if you want to create a folder by that name. FTP Folder (Publish to FTP only) The FTP Folder: text box appears below the pop-up when Publish to: FTP is chosen. Click to open a dialog in which you enter FTP login information. URL: – Use this to enter the address on the FTP upload site to which the script files should be sent. For example, ftp://yourprovider.com/sites/user66. Be sure to enter the path from the FTP root to the directory on the FTP server into which the uploaded files should be deposited. You should use forward slashes to separate directory levels in the path. User Name: – To gain access to the FTP server to upload the published page, an FTP logon is required. Enter the name in the User Name: text box. Password: – A password is also required to complete the logon to the FTP server. Enter it in the Password: text box. The characters you type appear as asterisks (*), so you will not be able to see them. Confirm Password: – Type the password again in this box. What you enter must exactly match the Password: entry. 174 6: Publishing with InfoChannel Designer 3 Publishing to e-mail Click OK when you have entered the FTP login information. Include an HTML Template Page? So that you can immediately test the published script in a browser, the Include an HTML Template Page? option is provided. When this option is off, just the <title>.SCB file is produced and uploaded. By itself, this file is not playable from a browser. Turn this option on (✓) to generate a simple Web page that contains the HTML code needed to access and play a published ICDesigner script. The HTML file for this page is placed in the same location specified for publishing the script file. You can use this page as is to make the script instantly available over the Web, or use it as the starting point for a page of your own design. Two additional options are enabled when you choose to include a template page: HTML File Name In the HTML File Name: text box, enter the name you want for the <projectname>.HTML file that generates the template page. A default name is provided, which you can change if necessary. URL for Script In the URL for Script: text box, enter the URL by which the template page should be accessed. A default location is provided, which you can change if necessary. After publishing, you should be able to enter this URL in your browser and see the template page, from which you can play the script. Publishing to e-mail Because it is often necessary to exchange scripts with others you are working with, the Publish Script to E-mail dialog makes it possible to publish to e-mail. Publishing to e-mail simply means that ICDesigner publishes the script as a single file, and automatically invokes your email program with the script file already set up as an attachment to the e-mail. This is not fundamentally different from publishing to disk 175 6: Publishing with InfoChannel Designer 3 Publishing to e-mail and then later running your e-mail program and attaching the published script file, but is more convenient. Publish to e-mail works through the Simple MAPI mail protocol, so you must have a browser or mail program that supports MAPI. (In some versions of Outlook Express™, you need to look under Internet Options and enable it as a MAPI client so that ICDesigner can find it.) The process for e-mail publishing is much the same as publishing to disk; you just don’t have to specify a folder. Choose E-mail from the Publish drop-down to see the Publish Script to E-mail dialog. Set Project Name: to the desired name for the published script. In the Advanced Publish Options dialog, decide whether you need to include fonts or wipe files for the recipient of the script and select those options accordingly. This is the same dialog as described in the “Publish to InfoChannel Network” section. See page 164 for details on the Advanced Publish Options dialog. When you have set all options and click Publish!, your e-mail program is opened. A new mail message is started with the published script file as an attachment. You see the e-mail application window, where you address the message and write any message text you like as you normally would in that program. When you instruct the mail program to send the message, it does so and the mail program window is closed or minimized so you can return to ICDesigner work. The recipient of the email must save the attached script, and then can run it. The iplay 3 viewer is required. 176 6: Publishing with InfoChannel Designer 3 Publishing to HTML slides Publishing to HTML slides Choose HTML Slides from the Publish drop-down to see the Publish Script to HTML Slides dialog. ICDesigner includes the Publish to HTML Slides feature to make it easier to share ICDesigner script ideas over the Web. This type of publishing does not make a script play in a Web browser—use Publish to Web Component for that. Instead, Publish to HTML creates a set of HTML files. These files define a Web page that provides an overview of an InfoChannel Designer script. The Web page created by this type of publishing consists simply of a grid of thumbnail images of the screen pages in the script, much like the Thumbnail view of the Main menu. When a thumbnail image in this index page is clicked, a full-sized image or “slide” of the screen page is displayed in the browser window. The title bar of the full size pages has navigation buttons to let you move forward and back through the slides, or return to the index page. In a browser, it would look something like this: 177 6: Publishing with InfoChannel Designer 3 Publishing to HTML slides The slides displayed show all the text, clips, and draw objects on the page. Just the initial frame of an animation background, movieclip or animclip is shown. Page and element wipes, sound, and other dynamic aspects that might be included in the script are not represented. Putting up a Web page of a script published to HTML is a way to achieve extremely wide, fast distribution of a script for review and commentary. It does not require viewers to have a special plug-in—a standard browser is sufficient. This also means that it is platform-independent, allowing you to share your script concept with users of Macintosh®, UNIX®, and other operating systems. Although it omits certain significant components of a finished script, its storyboard-like format lets you easily publicize and get feedback on the graphic design aspects of a script, which can be important in a time-critical authoring environment. Setting up a Web slides page The basic process of setting up a Web page of slides is the same as on the Publish Script to Web Component dialog, so Project Name:, Publish to: and the related options found on that dialog are duplicated here. See the documentation of these options starting on page 173 for details. This illustration shows how the dialog might look after an FTP publish site and login have been specified: 178 6: Publishing with InfoChannel Designer 3 Publishing to HTML slides Include Page Names? When the Include Page Names? option is turned on, the names of the screen pages as seen in the Main menu are displayed under the page thumbnails in the generated Web page. Thumbnails Per Row Similar to the Thumbnail view, you can also specify how many page images should appear in a row. Use the Thumbnails Per Row value control to increase or decrease the number of thumbnail images that appear in a horizontal row. The default is 5. Thumbnail Size in Pixels You can specify how large each thumbnail should be using the Thumbnail Size in Pixels value control. Enter a horizontal and a vertical size. If these settings are not proportional to the aspect ratios of the pages themselves, the resulting thumbnails will be as large as possible to fit within a box of the size you specified. All pages are converted to JPEG images for Web publication, regardless of the original format of their component images. Scale Pages? The Scale Pages? option lets you decide whether the full-size images seen when the thumbnail images are clicked should be scaled to a particular size. Typically, this would be used to make the full-size images somewhat smaller to fit more conveniently into the browser window, which could be less than a full screen. By default, the full-size image has the same pixel dimensions as the original background. Turning this option on (✓) turns the option button into a value control that allows you to specify horizontal and vertical pixel dimension values for the full-size images. If these settings are not proportional to the aspect ratios of the pages themselves, the resulting images will be as large as possible to fit within a box of the size you specified. 179 6: Publishing with InfoChannel Designer 3 Publishing to video Publishing to video Choose Video from the Publish drop-down to see the Publish Script to Video dialog. For those times when you need to share an ICDesigner script with someone who does not have the Scala software necessary for playback, it is possible to publish the script in standard computer video formats. The supported animation formats allow the script playback—with its wipes, animations and buttons—to be represented in a standard multimedia file. When you publish to ICDesigner Note video, ICDesigner plays the script and essentially Publish Script to Video does not capture any sound does a screen capture of the graphic output. Script events that the script might looping is ignored; the script only plays through once have. It is graphics-only. from beginning to end. The resulting file is a playback-only medium; there is no way to respond to buttons in the script, nor to edit the resulting file. The mouse pointer is not captured. However, when you simply need to send a production to a diverse, possibly unknown audience, the video publish option can be a lifesaver. Project Name The name you enter in Project Name: becomes the name of the video file. An extension of .AVI or .GIF is added automatically depending on the video format you choose. 180 6: Publishing with InfoChannel Designer 3 Publishing to video Publish to Folder Clicking Publish to Folder: opens the File dialog, where you can choose the location to store the video file. This form of the File dialog does not allow you to select files—only a folder or a device. Size options The Output Size: button by default is set to Original, and shows the script size in pixels horizontally and vertically. Animations are normally generated to be the same size as the script. However, you can specify a different size. To do so, click the Output Size: pop-up and change it from Original to Custom. When you do this, you see the Custom Size value control and the Keep Aspect? option in the space below the pop-up. Using a custom output size The Custom Size control initially shows the same dimensions as the script size. Use the first value on the Custom Size control to set the horizontal size in pixels, the second value to set the vertical size in pixels. Picking values that are integer multiples or fractions of the initial value (for example 320 × 240 for a script that is 640 × 480) gives the best looking results. If you need an in-between size, a value that is a multiple of 4 will probably look best. Output size constraints Some AVI video codecs require that the video dimensions be a multiple of 4, or some specific value. In such cases, the resulting video may not match the displayed output size. To automatically retain the proportions of the original script when adjusting the animation size, turn on (✓) Keep Aspect?. When this option is active, changing either the horizontal or vertical size also changes the other size value in tandem to yield a constant aspect ratio for the published animation. 181 6: Publishing with InfoChannel Designer 3 Publishing to video Video Format The Video Format: pop-up allows you to choose the type of video file produced when you publish to video. Currently supported format options are AVI (Audio Video Interleave) and AnimGIF. Choosing a format controls which further options are shown beneath the pop-up. Frame Rate (AVI format selected) The Frame Rate pop-up controls how much “temporal resolution” the resulting video playback has, in terms of frames per second. A higher number gives a truer representation ICDesigner Note of the normal ICDesigner playback quality, with The value chosen here should match the value smoother motion and transitions. However, the proused for playback in the cessing time required for the publishing process software that will be playing increases as the frame rate is increased, as does the size the video file. of the resulting video file. Fifteen values are provided, including several fractional values that are appropriate for film and video work. Advanced (AVI format selected) Click the Advanced button to open the Advanced AVI Settings dialog. This dialog lets you adjust various parameters involved in the AVI format’s data compression process. Some options in this dialog may be disabled, depending on the selected video compressor. 182 6: Publishing with InfoChannel Designer 3 Publishing to video Video Compressors – The dialog lists the available DirectX video compression methods or “codecs” (compressor/decompressors). Different codecs offer varying combinations of performance level, file size, and compatibility. Select one to be used for this publication. Quality – Image quality in the resulting video file can be sacrificed for the sake of greater compression if desired. The Quality slider lets you indicate to the codec how important the image quality is compared to the level of compression. The slider goes from 0 (greatest compression) to 100 (best image quality). The value itself is arbitrary, and is interpreted differently by each codec. Key frames – A codec can use periodic “key frames” as a way to keep errors introduced by the compression process from accumulating over the length of the video. A key frame is a full frame of video. Normally each frame of compressed video consists of only the changes from from previous frame. Turn on (✓) Use Key Frames? to take advantage of this capability, and to allow adjustment of the key frame interval. Adjust the Key Frame Interval control to determine how many frames of changes should be generated between each key frame. Lower key frame intervals (more total key frames generated) can improve the faithfulness of the video version, at the expense of increased file size. Video rate – Another way to control the ratio of performance to file size is to specify the video data rate. Turn on (✓) Video Data Rate? to take advantage of this capability. Adjust the Video Data Rate control to specify a target number of kilobytes per second for the video stream. The codec attempts to compress the video to yield a data rate in playback that does not exceed the value you set here. The codec varies the quality of the compression to try to maintain this data rate. Using this option does not guarantee that playback will reach this rate in practice. 183 6: Publishing with InfoChannel Designer 3 Publishing to video Custom configuration – For those codecs that offer additional parameters, the Custom Configure button is enabled. Clicking ICDesigner Note this button opens a dialog with options specific to the Any dialog provided by the codec selected codec. manufacturer must open on the Windows desktop. If you are running ICDesigner in full-screen mode, it is minimized so that the codec dialog can be seen. The ICDesigner screen is restored when you exit the dialog. You need to consult documentation from the codec manufacturer for information on using whatever options their configuration dialog provides. If the Custom Configure button is disabled, there are no manufacturer-specific options for the selected codec. Frame Rate (AnimGIF format selected) The Frame Rate setting controls how much “temporal resolution” the resulting video playback has, in terms of frames per ICDesigner Note second. A higher number gives a truer representation This control affects only the of normal ICDesigner playback quality, with encoding, not the speed of script smoother motion and transitions. However, the proplayback. The software used for cessing time required for the publishing process playing the video file may provide its own frames-per-second setincreases as the frame rate is increased. The maxiting to control playback speed. mum value is 60 frames per second. Use Transparency Compression? (AnimGIF format selected) Transparency is a built-in capability of the AnimGIF format. The AnimGIF publishing option can take advantage of transparency to improve the level of compression achieved in AnimGIF videos. Normally, the Use Transparency Compression? option, which controls this feature, is left on (✓). If there aren’t enough colors available in the display palette, however, using transparency compression can leave undesirable artifacts in the resulting video. If you notice “noise” or a ghosting effect in your published AnimGIF videos, and the truest image quality is important, try turning off this option. Number of Loops (AnimGIF format selected) You can set the number of times that the AnimGIF file should play back using the Number of Loops control. Looping capability is an option that is built into the AnimGIF format; increasing the number of loops does not increase the file size or the time it takes to publish. 184 6: Publishing with InfoChannel Designer 3 Completing publication of a script To make the AnimGIF loop indefinitely, set this control to ∞. Monitoring the progress of publishing to video When you click Publish! in the Publish to Video dialog, ICDesigner opens a dialog that lets you follow the progress of the encoding. (It takes significantly longer to complete the publish to video process than it takes for the script to play back normally.) A thumbnail image on the left shows a selection of completed frames so that you can see how much has been done. There are also displays of the current frame in the video in terms of elapsed time and script page number. When the encoding process is complete, the AVI or GIF file is saved in the location specified by Publish to Folder:. Completing publication of a script When you have chosen your publishing options, there is one more question to consider before you are ready to publish the script, namely whether to protect it with a password. Password protection for published scripts Protection and confidentiality are important for many multimedia publishers, which is why ICDesigner lets you encrypt or “lock” scripts. Encryption helps protect your work from unauthorized editing, and it allows you to keep any scripting “secrets” you might have used from being revealed. When you lock a script, it is encrypted. This means that the script is encoded and must then be decoded before it can be inspected. The only way to decode the script is to enter the correct password—which you, the producer of the script, choose. A locked script can still be run just like an unlocked script. However, it cannot be edited or its events viewed to let the viewer see how it was put together. An “open” script allows viewers who already have ICDesigner and the necessary fonts installed to edit or review the techniques of the pro185 6: Publishing with InfoChannel Designer 3 Completing publication of a script duction. If you do not choose a password for a script, it remains an open script: no password is asked for when the viewer opens it, all its events are listed in the menus, and it can be easily edited. Opening a locked script One can open a locked ICDesigner production by running ICDesigner and choosing the script (named <project name>.SCB) in the Open Script File dialog. A password is requested. • Entering the correct password allows the script to open like a normal script. The viewer can review the techniques of the production and to make changes to it. • Entering the incorrect password, or no password, allows the viewer to run the script to see the production, but not to review the techniques of the production or make any changes to it. The following message is displayed: A password is not necessary, however, to run the production, which can be done by choosing its icon from the Start menu or My Computer. 186 6: Publishing with InfoChannel Designer 3 Completing publication of a script Publishing Clicking the Publish! button performs the publication of the script to the medium that you chose. Messages about the progress of the publication appear in the Script Information section, or in the case of publishing to certain media, in a separate dialog. 왘 To complete publishing: 1. Click the Publish! button (see “Completing publication of a script” on page 185). The first thing you see when you click Publish! for most publish media is the dialog that allows you to lock the published script. A password dialog asks you to select a password for the script. 2. You can choose to lock the script or leave it unlocked. ❖ To leave the published script unlocked, and available to inspec- tion and editing by anyone, leave the text boxes in the dialog blank. ❖ To lock the published script, enter a password in the Password: text box. Because the characters you type are shown as asterisks (*), you must enter the password again, identically, in the Verify: text box. There is no limitation to the length of passwords, and they are not case-sensitive. 3. Click OK. 4. If there is another folder of the same project name in the publish folder, you see an InfoChannel Designer Message dialog asking whether you want to delete the contents and continue publishing. The contents of the publish folder is what you will reproduce, onto CD for example. This means that if you want to add files to 187 6: Publishing with InfoChannel Designer 3 EX installation required on playback systems the folder, you may need to do so after you have finished in the Publish Script dialog, or the contents will be deleted. 5. Click OK. The Script Information box tells you whether or not publishing was successful. ICDesigner publishes your production into the location you specified. Depending on the publish medium you chose, there may still be some steps left before the publication process is complete: • For publication to stand-alone CD, you should if possible copy the necessary Microsoft software (see page 189) to the Publish folder so that it is included on the CD. Then you need to actually create a CD image and burn it to a CD-ROM master, which requires third-party CD-burning software. • For publication as a Web component, you need to embed the script file with the appropriate HTML Object wrapper statements, into your own Web page code. If you use the Include an HTML Template Page? option, you could copy and paste from the file it generates. • For publication to e-mail, you need to address the e-mail to which the script is attached and possibly include a message to the recipient explaining what is needed to view the script. Cancel/Close Choose Cancel to cancel publishing and return to the Main menu. If you have already successfully completed publishing, this button changes to Close, and just exits the Publish dialog. EX installation required on playback systems Published scripts may include EX events that depend on Scala EXes that are not integral to the product. As mentioned previously, in order for these scripts to play back correctly on a given machine, the EXes employed by the script must be installed on that machine. 188 6: Publishing with InfoChannel Designer 3 Microsoft components It is not possible to publish Scala EXes with a script. They must be separately obtained, licensed and installed on any machine that needs to play back scripts that require them. Microsoft components Scala iplay 3 requires certain Microsoft software components to be installed in order to run properly: • Service Pack 2 for Microsoft Windows 2000 • Microsoft DirectX 8.1 or better CD publications The iplay 3 installer for a script published to Stand-alone CD can offer to install DirectX 8.1 on systems that don’t have it if its distribution archive is included on your CD master image. The Publish to Stand-alone CD operation cannot automatically include the DirectX archive for you. You must obtain it yourself. It is freely available for download from Microsoft at the following location: http://www.microsoft.com/downloads/details.aspx?familyid=db685892afc4-40e3-bad0-d4db291a8095&languageid=f49e8428-7071-4979-8a673cffcb0c2524&displaylang=en You can also visit Scala’s Web site at http://www.scala.com for a link to the DirectX 8.1 download location. Note that this is not the “Home User Download” version of DirectX 8.1, which is not suitable for this purpose. Whoever does need to install DirectX must agree to Microsoft’s license terms. At the present time, DirectX can be licensed simply by accepting its licensing and redistribution agreements. Once you have obtained the DirectX 8.1 redistribution archive, place it in a folder called “Directx”, inside a folder called “3rdparty”, both of which you need to create in the root of the CD publish folder produced by the publication process. Then you can burn your CD-ROM with the archive in the master image. Assuming the DirectX archive can be located as \3rdparty\Directx\Dsetup.exe on the CD, the 189 6: Publishing with InfoChannel Designer 3 Microsoft components iplay 3 installer can find it and offer to install DirectX 8.1 on the viewer’s system. Including the DirectX archive on your CD is optional. If you do not include it and a viewer’s machine requires it, the iplay 3 installer directs the viewer to Scala’s third-party components Web page, which has a link to the location from which DirectX can be downloaded. Web Component, File, and Email publications The DirectX archive cannot be included when you publish to Web Component, to File, or to Email. Anyone wishing to play a published script published in any of these forms needs to have iplay 3 installed on the playback machine, and therefore should also have the latest DirectX. If a viewer’s machine requires it, the iplay 3 installer directs the viewer to Scala’s third-party components Web page, which has a link to the location from which DirectX can be downloaded. 190 7: Additional InfoChannel Designer 3 EXes The Scala EX system provides a modular interface that makes it easy to add new features to ICDesigner. Such features include support for special hardware interfaces to external devices, support for additional file formats, and special functions that extend ICDesigner’s flexibility. Use the Options dialog to select which of the currently available EXes to turn on or off. You can turn an EX off if you want to eliminate its column from the Main menu, or if you think it might be causing a problem with the system. EXes provided with this release of ICDesigner include: • Launch EX (page 193) • Log EX (page 194) • TextFile EX (page 197) • Serial EX (page 202) • Billing EX (page 212) • MCI MPEG EX (page 215) • Optibase EX (page 222) • Queue EX (page 228) • Windows Scripting EX (page 236) • File I/O EX (page 240) Other EXes may become available for custom applications through VARs or directly to qualified customers. The Scala Web site, http://www.scala.com, may have information on additional EXes as they become available. Note that outside the ICDesigner authoring environment, the Log, TextFile, Serial, Billing, MCI MPEG, Optibase, Queue, and Windows Scripting EXes are available only in scripts published to InfoChannel Network. The iplay 3 software used for other InfoChannel publish media does not support these EXes. 192 7: Additional InfoChannel Designer 3 EXes Launch EX Launch EX The Launch EX lets you run or “launch” another program from within an ICDesigner script. Clicking a button in the Launch column opens the Launch menu. You provide the path to an application or a Windows-registered document type in the Command Line: text box. You can use the File... button to do this through the File dialog. When the Launch page is encountered in the script, ICDesigner opens the specified application or the registered application for the specified document. If the command line contains a URL, ICDesigner opens the default Web browser and links to the document at the URL destination. Examples of how the Launch menu can be useful include creating a launcher script for a CD-ROM sampler that allows a ICDesigner Note user to click interactive buttons to choose applicaFor security reasons, Launch EX tions from the CD to start, or starting the Adobe® events are disabled in scripts Acrobat® reader to display a document that is in PDF published to Web Component. format. Wait? The Wait? option, which is on (✓) by default, suspends the execution of the script until you exit the launched application or document. Turn this off to have script execution continue after the document or application has been launched. Minimized? The launched application can open either normally or minimized. When opened normally, the viewer sees the Windows desktop, where the application window opens. The viewer must then exit the application when finished with it, and return to ICDesigner to resume the script. When the Minimized? option is on (✓), the launched application executes invisibly and non-interactively. 193 7: Additional InfoChannel Designer 3 EXes Log EX You might use a minimized launch if you needed to run a batch file or other program that could do its work—such as printing a simple text file—without displaying a user interface. Log EX The Log EX provides a mechanism to automatically monitor the activities of ICDesigner Player Stations. This is an useful tool to use in maintaining remote Players and providing a record of their activities. Logging capability is essential in a cable television installation, for example, where you need to know when and how many times advertisements were actually broadcast. Log files can also be a key tool in discovering the cause of any problems that might arise with a Player. Log files The Log EX keeps records by generating plain ASCII text files. It records entries for many actions by default, and you can specify additional information to be recorded in log files for individual script events. You generally don’t need to worry about log files getting too large because they each contain only a single day’s information. Every five minutes that the Player is running, the IC.LOG file’s time stamp is updated. This enables you to determine how long a Player has been operational in a 24-hour period. Backup log files The Ic.log file for the ICDesigner machine is located in: <systemroot>:\Documents and Settings\<currentuser>\Local Settings\Application Data\Scala\Scala InfoChannel Designer\Logs where <systemroot> is the drive letter where Windows is installed and <currentuser> is the username of the user logged in to the computer. This file is moved to a backup log in the Logs folder at midnight every day. To allow you to identify them, the backup logs are renamed using 194 7: Additional InfoChannel Designer 3 EXes Log EX the format yyyymmdd.LOG, in which yyyy is replaced with the year, mm with the month, and dd with the day of the log file. By default, ICDesigner retains five day’s worth of backup files in Logs. At the beginning of each day, it deletes the oldest log. You can adjust the number of days of backup logs retained using the configuration variable LOG.Days in the <systemroot>:\Documents and Settings\<currentuser>\Local Settings\Application Data\Scala\Scala InfoChannel Designer\Config\Log.sca file. To retain a full week of log files, for example, use a text editor to open LOG.SCA, find the line that reads LOG.Days = 5; and change 5 to 7. Then save the file. Changing the log file extension The Log EX features a configuration variable called LOG.PlayerTag. This variable, if set, allows you to specify a 3-character file-type extension. By default ICDesigner applies a .LOG extension, but you can choose any three characters to help identify the source player of the log file. For example, you might choose “PL3” to represent “Player number 3” in a multiple-Player configuration. You can set this variable by editing your Config\Log.sca file. Look for the line that reads: LOG.PlayerTag = "LOG"; Substitute the file extension you prefer in place of LOG at the end of the line. Reviewing log files To review the log of a Player, you create a Network Manager job to retrieve the file IC.LOG from that Player. You can use any text editor (such as the Windows Notepad) to review the log data. If you can’t communicate with a Player for some reason, or it isn’t executing a script properly, review the log for that Player. The log will usually contain information that can help you diagnose the problem. If you are responsible for remote Players, you should review logs from 195 7: Additional InfoChannel Designer 3 EXes Log EX those Players on a daily basis to be sure that they are doing what they are supposed to be doing. The Log menu To have the Log EX record an entry when the Player runs a particular event (a page or an event on a page), edit the script in ICDesigner. From the Main or List menus, click the button for the event in the Log column. You see the Log menu. Enter the text to be recorded to the log, then click Close. The text can be up to 1000 characters, but normally need be only a a few words. As with other ICDesigner menus, you can select and work with any number of events without leaving the Log menu. The text you enter also appears in the event’s button in the Log column. When you next send the script to the Player and it runs, the Player’s log will include an entry with the text each time that event is run. If you no longer need to keep track of an event, simply delete all the text from its Log Text: text box. Typically, you might use log files to keep a record of how many times a page is run and to be able to verify that scheduled pages are running when they should. One very powerful feature of log files is that you can include one or more embedded variables in the log text. When the text is written to the log file, the variable’s current value at that time becomes part of the logged text. This allows you to gather and record new information with the log files. For example, you might use the TIME and DATE system variables to collect statistics on the number of times per day that a given interactive button was selected by users. 196 7: Additional InfoChannel Designer 3 EXes TextFile EX TextFile EX Typing text onto a page from the Design Text menu is easy and is sufficient for many productions. Sometimes, however, you need to work with large amounts of text, or text which comes from a remote source. Such situations make a different interface desirable. The TextFile EX gives you the capability to create a template page and have ICDesigner automatically fill in the template with text from an external ASCII text file. It also provides for certain unique special effects. The basic steps to use the TextFile EX are: 1. Create a text file. 2. Create a script with one or more template pages. 3. Assign the text file to the template pages in the TextFile EX menu. 4. Run the script. As the script runs, the text file is displayed a certain number of lines at a time (you specify the number) against the background of the template page, until the end of the text file. Text files The first step in setting up pages using the TextFile EX is to create the text files you will use. These must be plain ASCII files, created outside of ICDesigner with a tool such as the Windows Notepad or some other text editor. Each line that you want to appear on the page must be a separate line ending in a carriage return or line feed in the text file. Lines can be up to 1000 characters in length, but the practical maximum for general use is much shorter—approximately 100 characters, using the smallest possible font. You must ensure that the maximum line length in the file is not too long to be displayed on the page. Lines can be blank (just a carriage return or linefeed, or containing only spaces or tabs). The text file can contain any number of lines. 197 7: Additional InfoChannel Designer 3 EXes TextFile EX Templates A single template page specifies the page background and all other properties for the display of a text file of any length. The template page is a normal page, and you create it just as you create any other page in a script. Using the Design menus, you set the background, and any static text, clips and wipes to be used with the page. You specify where each line of the text from the file will be placed by placing special embedded variables as text elements on the page. For the TextFile EX, the variable text elements must be of the form !LINE1, !LINE2, !LINE3... !LINE99, as shown here: Most templates will use much fewer than 99 lines on a page, but 99 is the maximum. (For more on embedded variables, see the section “Displaying variables” on page 192 of chapter 6 in the “Basic Authoring” guide.) 198 7: Additional InfoChannel Designer 3 EXes TextFile EX You have considerable freedom in placing the lines and using the variables: • The variables can be placed anywhere on the page, and do not have to be in sequence. For example, the lines could be arranged on the page like this: !LINE2 !LINE1 !LINE3 The numbering controls which line, from the batch of lines read from the text file for the current page, is displayed by that variable. Therefore the first line read from the text file would appear on the page between the second and the third lines read. • You can skip variable numbers within a range, causing the corresponding lines to be discarded. So in the above example, if you replaced “!LINE3” with “!LINE4”, the fourth line read from the text file would appear on the bottom, and the third line read would not appear on the page at all. • The variables can be embedded in a text element like any variable, as in “The top story in New York is !LINE1” You can give the variable text elements any styles and attributes that normally belong to a text element—font, color, outline, shadow, wipe, etc. When the TextFile EX substitutes the lines from the text file for the variables, they take on those styles. Text File menu From the ICDesigner Main menu, click the TextFile button for the template page you have created. You see the Text File menu. 199 7: Additional InfoChannel Designer 3 EXes TextFile EX Specifying the text file In this menu, you specify the file name for the text file to associate with this template page, and the number of lines of text to display on each page. When you click on the File... button, you see the File dialog, which defaults to the Windows My Documents folder. If the text file does not yet exist at the time you are creating the script, enter the name of the intended file in the File dialog. When you enter a name that does not exist, you see a dialog stating that an empty file must be created and asking if you want to proceed. If you click Yes, a zero-length file by that name is created for you as a placeholder. Sending this empty file to the Player can sometimes be useful; see the next section, “Running the script”. Use the Maximum Lines on Page value control to indicate the number of lines of text to read from the text file per template page. Normally this value should equal the number of !LINE elements. If this value is lower than the number of !LINEs on the template page, only the number of lines specified by this value is displayed on any page; some lines always remain empty. If the Maximum Lines value is greater than the number of !LINEs on the template page, some lines that are read from the text file are never seen. When you have finished, click Close to return to the Main menu and accept the changes you have made, or click Cancel to return to the Main menu without keeping any changes. If you later decide to make the template page a regular page and no longer wish it to be associated with a text file, click the Clear button in the page’s Text File menu. Running the script When you run the script, your template page is displayed, and the EX retrieves the number of lines specified in Maximum Lines on Page from the text file and substitutes them for the corresponding !LINE elements. (If a line is too long, it runs off the edge of the screen; the line does not wrap.) When all the lines have been displayed and the page Pause has completed, the template page is re-displayed and the next set of lines is retrieved from the text file to fill in the !LINE elements. 200 7: Additional InfoChannel Designer 3 EXes TextFile EX ICDesigner repeats the page like this until it reaches the end of the text file. Empty text files and how to use them If the text file you specified in the Text File menu is missing, empty, or contains nothing but blank lines at script run time, the page is not displayed. This allows you to effectively turn a page on or off based on whether there is any content in the text file. This could be useful as an emergency message page, for example. Normally, the file is empty, so the page does not run. When there is an emergency message to display, you update the text file on the Player, which is referenced as linked content, with the emergency text. Now the page plays, showing that text. When the emergency is over, send an empty file again to stop the page from playing. The TextFile EX never displays a page with no text. If there are enough successive blank lines in the text file that none of the !LINE elements on a given page would contain any text, the EX retrieves another set of lines from the file. It continues looking for lines with text until it reaches the end of the file. At the end of the text file, ICDesigner proceeds from the TextFile page to the following page. Special TextFile EX effects You aren’t limited to using a single template page for displaying a single text file. Having text appear over changing backgrounds is possible using grouping. For example, you might create five different template pages, each with a different background picture, but all with identical positioning of the text elements !LINE1, !LINE2, etc. (Identical positioning isn’t a requirement of the TextFile EX, but it makes the effect look better.) You then group these template pages on the Main menu, and in the TextFile EX menu for the group, select the text file. When the script runs, each set of text lines (the Maximum Lines on Page setting) appears over all five backgrounds before the next set appears. 201 7: Additional InfoChannel Designer 3 EXes Serial EX Serial EX The Serial EX from Scala gives you the capability of sending and receiving arbitrary data strings via standard RS-232 serial communication, under script control. This opens up the possibility of controlling a wide variety of devices that respond to serial commands, and responding to serial communication from those devices. Two-way serial communication capability can greatly enhance the versatility of your Scala ICDesigner scripts, as you can then coordinate the operation of diverse sorts of hardware with script activity to construct advanced custom solutions. Configuration There are no configuration tasks specific to the Serial EX itself. However, you must of course be sure that the serial port(s) that you intend to use on the machine(s) doing the communicating are functioning properly on their own before you attempt to use them with the Serial EX. You need to know which COM ports your external hardware is using for serial communication, and their correct settings for baud rate, handshaking, etc. in order to send and receive with the Serial EX. Using the Serial EX The Serial EX needs to be activated before it can be used. If necessary, you can turn it on yourself in the Options dialog. Choose Options from the Tools icon drop-down and select the EXes tab. Click the Serial (RS-232) EX? button in the Optional EXes list to turn on (✓) the EX. When the Serial EX is activated, it displays the Serial column in the Main menu. Clicking in this column opens the Serial menu, which 202 7: Additional InfoChannel Designer 3 EXes Serial EX lets you insert events to control the serial ports, send data, and receive data. Serial column Command: pop-up A Serial EX event—either a special event, or an event that is part of a page or element—can be one of four commands. The Command: popup, in the upper left of the Serial EX menu, lets you specify which one to use: • • • • Open Port Close Port Send Data Receive Data Each of these commands has its own options, which you see in the menu when you choose the command. A fifth Command: option, None, is used to clear any Serial command previously set for this event, and has no options. You can apply only one Serial EX command to a given event. Therefore, to complete a single isolated serial communication, you would 203 7: Additional InfoChannel Designer 3 EXes Serial EX need at least three commands: Open Port, Send (or Receive) Data, and Close Port. The port number and the nature of the command you specify is reflected in the Serial column button for that event, for example, “Close com1:”. Opening a serial port Before a serial port can send or receive data, it must be opened. You do so from the Serial EX using Command: Open Port. This is the default command. Port Number Opening a serial port requires specifying which COM port you want, by number. Use the Port Number: pop-up to choose from COM1, COM2, COM3, or COM4. You can have more than one COM port open at once, assuming your hardware supports it. Any Send or Receive command that you issue from the Serial EX specifies the particular COM port for that command. COM ports remain open for communication until closed with the Close Port command, or until ICDesigner playback ends. Baud Rate There are ten standard serial communication speeds available on the Baud Rate: pop-up, from 110 to 115200. Pick the one that is appropriate for the equipment you are communicating with. Handshake Choose a method of serial handshaking using the Handshake: pop-up. The options are None, Software, and Hardware. Data Bits Choose either 7 or 8 data bits for serial communication using the Data Bits: pop-up. 204 7: Additional InfoChannel Designer 3 EXes Serial EX Parity Serial parity can be set to Mark, Space, Even, Odd, or None using the Parity: pop-up. Stop Bits Choose either 1 or 2 stop bits for serial communication using the Stop Bits: pop-up. Default parameter settings All of these standard serial parameters can be set explicitly in the Open Port command, but have a Default setting as well. If the Default setting is selected, the Serial EX uses the parameter setting that is the default in Windows for the chosen port, or the last value set by an Open Port command. The default values are: Baud Rate: 9600 Handshake: hardware Data Bits: 8 Parity: none Stop Bits: 1 To override Windows defaults and previous settings, and ensure that a particular setting is used, set the parameter explicitly. Serial button indicators The buttons in the Serial column indicate the Serial EX commands that you choose, so that it is easy to see what your script is doing from the Main menu. The Send, Receive, and Close command indicators are self-explanatory, but the Open Port indicator encapsulates several settings in a manner that requires some explanation, as shown in this illustration: Port Number Parity open the port Data Bits (‘-’ for Don’t Open Port) Baud Rate Stop Bits Handshaking 205 7: Additional InfoChannel Designer 3 EXes Serial EX Numerical parameters (Baud Rate, Data Bits, Stop Bits) show as 0 when set to Default. Non-numerical parameters (Parity, Handshaking) show a minus (-) when set to Default. Setting parameters without opening In some circumstances it might be valuable to set the serial parameters without actually opening the port. You can do this by turning on (✓) the Don’t Open Port? option in this command. Doing so causes the parameter settings of the specified port to change without actually trying to open the port. Sending data To send data to an external device from a serial port, you use Command: Send Data. The control panel for this command in the Serial menu has numerous options. First, be sure that Port Number: is set to the COM port to which the device that you want to contact is connected. For the command to succeed, this COM port must have already been opened. Entering the data to send You put the data that you wish to send over the serial line in the Send String: text box, in the form of a string. No quotation marks are required. You can enter any number of characters in this text box. Either type the characters, or paste them from the clipboard. Note that the data is sent as the string you give, meaning as a succession of the ASCII values of each character. Entering “2,3” in the box, 206 7: Additional InfoChannel Designer 3 EXes Serial EX for example, actually sends the values 50, 44, and 51 (hexadecimal 32, 2c, and 33). To send particular numerical values, you can either convert them to their ASCII equivalents and enter the corresponding characters, or enter them as raw hexadecimal values. You can enter numerical values (in hex) and type control codes and other special characters into the Send String: box: ^x## ^n ^r ^t ^" ^^ a hexadecimal value (# can be 0-9 and/or a-f) a line feed a carriage return a tab a double quote mark a single caret These strings are NOT Ctrl key combinations. The first character is a literal caret character (^) and must be followed immediately by at least one other character to indicate the intended function. Note for those who hand-edit their scripts: you must escape the caret in the character strings by entering it twice to get it to work. That is, in ScalaScript, this is necessary: "to send hex f3 to the serial port: ^^xf3" When the Serial EX menu generates the Send string in ScalaScript, the escaping of the characters is taken care of automatically, so that for the same result, you would type in the Send String: box: to send hex f3 to the serial port: ^xf3 Sending on a trigger input A special feature of the Send Data command is that it can be set to delay sending until a trigger signal is received. It can monitor a COM port for the appearance of an arbitrary string, and send only when that string has been received. 207 7: Additional InfoChannel Designer 3 EXes Serial EX 왘 Here is how the Triggered Start?, Trigger Port: and Trigger String: controls are used for this: 1. Enable this feature by turning on (✓) the Triggered Start? option. 2. Specify the COM port that should be monitored using the Trigger Port: pop-up. This does not need to be the same port that the command will be sending data on. However, the monitored port must have been previously opened with an Open Port command. 3. Enter the string that should trigger the sending of data in the Trigger String: text box. This can be any string of any length, just as for Send String:. When the Trigger String appears on the Trigger Port, the Send Data string is sent. Note that if you turn on Triggered Start? without also turning on Wait? (see the next section), the script continues while the Send Data command waits for its trigger string to arrive. If the trigger string never arrives, or arrives later than expected, events in the script that depend on the Send might not work right. Using Wait? to pause the script You can pause the execution of the script until the Send Data command has completed by turning on (✓) the Wait? option. Turning on Wait? lets you make sure that the Serial EX has finished sending data before continuing with the script. This can be important if subsequent script events depend on the serial data having been sent before the events execute. Duration limit on Serial EX commands When Wait? is off, the script continues as the command executes. However, Serial EX commands never extend over page boundaries. If a non-Waiting serial command is still executing when a page ends, the command is terminated. 208 7: Additional InfoChannel Designer 3 EXes Serial EX Receiving data To receive and store data from an external device connected to a serial port, you use Command: Receive Data. (Any data that comes over an open port while no Receive Data command is active is simply discarded.) The control panel for this command in the Serial menu is similar to the one for Send Data, with some additional options. Here too you must be sure that Port Number: is set to the correct COM port. For the command to succeed, this COM port must already have been opened. Received data is placed in an environment variable that you can access from the script using the Branch menu. There are four environment variables: COM1.INPUT COM2.INPUT COM3.INPUT COM4.INPUT Each variable is associated with a COM port, and can hold any amount of input. Your script must take care of reading the input from a given Receive Data command before initiating another; each new Receive Data command overwrites the previous contents of its COM port’s variable. Receiving on a trigger input Receive Data shares with Send Data the capability to be set to delay its action until a trigger signal is received. The Triggered Start?, Trigger 209 7: Additional InfoChannel Designer 3 EXes Serial EX Port: and Trigger String: controls function identically for Receive Data as for Send Data. When Triggered Start? is turned on, the EX does not begin to actually receive data until the Trigger String comes in over the Trigger Port. Data that comes in over the receive port before the Trigger String has been detected is lost. No data that comes in over the Trigger Port is retained. Ending reception The received data is not available for reading from the “.INPUT” environment variables until the Receive command has ended. Once data reception has begun, there must be a way of telling the command to end reception. The Receive Data command provides three ways of recognizing that reception for this command is complete: • Reception of a particular string • Reception of an EOL character • Reception of a maximum number of characters End on String? – Turn on (✓) this option to enable the completion of reception when a certain string of characters is received on the port in Port Number:. Enter the trigger characters in the End String: text box. End on EOL? – Turn on (✓) this option to enable the completion of reception when the EOL character is received on the port in Port Number:. Max Characters: – Enter a number in this value control to enable the completion of reception when a certain number of characters has been received by this command on the port in Port Number:. Any one or all of these options may be used at the same time. Whichever condition arises first triggers the end of reception. If none of these options is chosen, reception terminates immediately, without receiving any data. 210 7: Additional InfoChannel Designer 3 EXes Serial EX LastChar variables There are four additional environment variables created for Serial EX use: COM1.LASTCHAR COM2.LASTCHAR COM3.LASTCHAR COM4.LASTCHAR These variables contain the last character that came into their respective ports while the port was open. You do not have to use the Receive Data command for this to work—the port just has to be open. The variables are updated dynamically, so if you open COM port 1 on a page that contains the text element Last Character from Com1 is ‘!(Com1.LastChar)’ the page updates in real time as characters come in to that port. When the COM1 is closed, the variable stops updating. Special note: This variable may not show every character that comes in at the serial port when the data comes in too fast. This happens because the port “groups” incoming data when the data rate is high. Only the last character of each group is put into the variable. When the data arrives more slowly, each group contains only one character, so all the characters can appear. The LastChar variables are useful for watching simple input from a device. They could be used, for example, in installations that have a device that responds to commands by returning a single character. A command could be sent over the serial port, and after a brief delay the LastChar variable could be checked for the status. Using Wait? to pause the script You can pause the script until the Receive Data command has completed by turning on (✓) the Wait? option. Wait? lets you make sure that the Serial EX has finished receiving data before continuing with the script. This can be important if subsequent 211 7: Additional InfoChannel Designer 3 EXes Billing EX script events depend on the serial data having been received before they execute. Duration limit on Serial EX commands When Wait? is off, the script continues as the command executes. However, Serial EX commands never extend over page boundaries. If a non-Waiting serial command is still executing when a page ends, the command is terminated. Closing a serial port You should close a serial port when you are done with it, so that other applications are not blocked from using it. Do this with Command: Close Port. The only option with this command is to specify the port. Use the Port Number: pop-up to choose which COM port to close. Any serial ports opened by the Serial EX are automatically closed when script playback ends. Clearing a Serial EX command To clear a Serial EX command from an event, or to leave the Serial menu without specifying a command, choose Command: None. Billing EX The Billing EX from Scala gives you the capability of automatically recording which pages in an InfoChannel Designer 3 script have executed, and exactly when. This makes billing for advertising simple, as the date and time that each item was actually shown is verified rather than assumed. 212 7: Additional InfoChannel Designer 3 EXes Billing EX The ordinary text log files generated by the Billing EX let you easily recall, display, and print the information for ad clients who need to review their ad exposure, and use the logged playback data to bill clients accurately. Configuration There are no configuration options for the Billing EX. The Billing EX must be activated before it can be used. If the Billing EX is not already activated, you can turn it on yourself in the Options dialog. Choose Options from the Tools icon drop-down and select the EXes tab. Click the Billing EX? button in the Optional EXes list to turn on (✓) the EX. Using the Billing EX Use of the Billing EX is very simple. When it is activated, the EX displays the Billing column in the Main menu. Clicking in this column opens the Billing menu, which lets you turn on or off the information logging capability of the EX on a per-page basis. Billing column 213 7: Additional InfoChannel Designer 3 EXes Billing EX The Billing menu contains the Track Billing? button. Its on/off status is always reflected in the Billing column for every page. When Track Billing? is on (✓), Yes appears in the column. When it is off—as it is for any page on which you have not specified a billing status—No appears in the column. For all pages that run when Track Billing? is on, an entry is added to the billing log file, a text file created by the Billing EX for this purpose. The entry for a tracked page is one line showing: • the Player name (derived from the COMPUTERNAME environment variable) • the page name • the script name • timestamps showing exactly when playback for the page began and ended For pages that are set to No, a log entry is not recorded. Select all the pages that you want to log, then click in the Billing column to open the Billing menu. Turn on Track Billing?, and notice all the selected pages’ Billing column labels change to Yes. Make sure that only the pages you want logged have Yes in the Billing column. Then click Close to exit the Billing menu, and save the script. The Billing EX log file Here is how a segment of a typical log file looks: 214 7: Additional InfoChannel Designer 3 EXes MCI MPEG EX The log file is cumulative, with entries for successive events being appended to the end of it as the script loops. Log file creation The name of the log file has the format “billMMDD.log”, where MM and DD are replaced with the file creation date in four-digit month/day format. The file is saved in the Logs folder, the same as the normal Ic.log file. On a machine that is continuously running an ICDesigner script with the Billing EX enabled, a new log file is created at midnight for each day. This keeps individual log files from getting too long, but does allow the files to accumulate if they are not cleared out on a regular basis. The log file is re-saved at the conclusion of each individual tracked event, so there is little chance that events have run but have not yet been logged. Only if, for example, there were a system crash while the script was on a page with Billing events might an event that has executed not be logged. To be sure that your billing log contains all tracked events that have run, exit the script by pressing Esc on the individual machine, or send a restart command to a Player. This ensures that all events that have executed are written to the log file before it is closed. MCI MPEG EX In an ICDesigner production, you can use a video that has been digitized—that is, converted into a digital format that the PC and ICDesigner recognize—and is available as a file on the hard disk or a CD-ROM. The conversion process requires special hardware and software, but the resulting digital video can be displayed on any PC with an application such as ICDesigner that supports the particular digital format. The most common formats are AVI, QuickTime®, and MPEG. 215 7: Additional InfoChannel Designer 3 EXes MCI MPEG EX Animation compression In order to save space and computer resources, the conversion process not only digitizes the video images but also compresses them. In the FLC animation format, for example, an animation is compressed by saving the entire contents of the first frame and then only the difference between the first and second frames, the second and third, and so on. When the animation is displayed in an ICDesigner script, each frame is reconstructed and the viewer sees the original animation. The MPEG compression method (named after its developers, the Motion Picture Experts Group) is more sophisticated and is fast becoming an international standard because it is capable of compressing synchronized audio together with video. This means, for example, that you can display a full-screen digital video with stereo sound on your PC monitor. MPEG animation files are identified by the filetype extension .MPG. Using MPEG animations in ICDesigner Although digitized animations in the MPEG format can be decoded in software and displayed from any PC that has the Windows Media Player installed, in professional installations a special MPEG card is generally used, to ensure that animations of any screen size are always decompressed and displayed with the best possible quality. Such a card is required, not optional, if you want to display full-screen, fullmotion MPEG video in ICDesigner at the highest possible quality. To work best with ICDesigner, an MPEG video card should overlay the MPEG video on the VGA output completely in hardware, without interfering with DirectX graphics. This requires a 32-bit MCI driver that supports full-screen DirectX windows. 16-bit MCI drivers can also be used, but MPEG performance is considerably reduced. ICDesigner can also work with MPEG cards that are not hardware overlay cards, but which simply use hardware to assist in rendering the MPEG video more smoothly than a purely software approach. See the section on the MPEG Options dialog on page 219 for information on settings related to the type of card. Also, consult the ICDesigner 216 7: Additional InfoChannel Designer 3 EXes MCI MPEG EX MPEG Readme file, which may have additional information on compatibility with various types of MPEG cards. The MCI MPEG EX needs to be activated before it can be used. First install your MPEG card and its software according to the manufacturer’s instructions. ICDesigner Note If you do not have MPEG hardware, you should not turn on the MPEG EX. Then turn the MCI MPEG EX on in the Options dialog. Choose Options from the Tools icon dropdown and select the EXes tab. Click the MCI MPEG EX? button in the Optional EXes list to turn on (✓) the EX. The MCI MPEG menu You see the MCI MPEG menu when you click a button in the MCI MPEG column for an event in the Main or List menus that represents an animation in the MPG format. Otherwise, you see the standard ICDesigner Background menu (discussed in the section “Animations in the Background menu” in chapter 14 of the “Basic Authoring” guide). The MPEG menu opens with the MPEG:Play event specified by default, and looks like this: To load an MPEG video file, click the File: button. You see the File dialog, open to the Windows My Pictures folder. Double-click on the name of a file with an .MPG file-type extension. You see the MPEG menu again, with the name of the file in the File: button. The file name is also reflected on the MPEG button on the Main or List menu. By default, the MPEG video will play with its upper left corner in the upper left corner of ICDesigner’s screen page, and its picture size adapts to the size of the current page. Some MPEG cards allow you to alter the position and size of the video playback window, or require you to specify these settings. ICDesigner provides the Pos? and Size? options for use with such cards. 217 7: Additional InfoChannel Designer 3 EXes MCI MPEG EX To move the position of the MPEG video window on the screen page, click the Pos? button to turn it on (✓), enabling repositioning. You see a value control with horizontal and vertical offsets in pixels. The default values, 0,0, represent the upper left corner of the page. Select a value and change it to reposition the window. To change the overall size of the video window, click the Size? button to turn it on (✓), enabling resizing. You see a value control with horizontal and vertical dimensions in pixels. Change the default values as necessary. You can use the Preview button to see the effects of the position and size settings you have made. The Wait? button lets you control the progress of the script. By default it is on (✓), meaning that the rest of the script waits—does not continue—until the MPEG event has completed. Turning this button off allows other script events after the MPEG event to continue as soon as the MPEG video has started. The MPEG: pop-up provides various related options, which work similarly to the same options available for sound events in the Sound menu. MPEG: Play event Use this event, described above, to choose an MPEG file, set its Size?, Pos?, and Wait? options, and to begin play. MPEG: Playlist event Use this event to choose an MPEG playlist script, set its Size?, Pos?, Loops, and Wait? options, and to begin play. An MPEG: Playlist event is a special case of MPEG: Play. Instead of loading an MPEG file with this event, you load a script that specifies several MPEG files. This makes it much easier to update and edit a series of MPEGs—you can change the number, order and identity of the MPEGs played by a script by updating just the playlist file, without having to edit the script itself. To create a playlist file, create an empty script. For each MPEG file that you want in the playlist, add a special event, then open the MCI 218 7: Additional InfoChannel Designer 3 EXes MCI MPEG EX MPEG EX menu for that event and create an MPEG: Play event. Specify the desired MPEG file within this event. There is no need to add any screen pages to this script; anything in the script other than the MPEG file names within MPEG EX special events is ignored. Save this script like any script, as a .SCA file. This is all there is to an MPEG playlist file: a script consisting of MPEG: Play events. With the MPEG: Playlist event, there is the additional option in the menu of Loops. Use this value control to set how many times you want the MPEG playlist to play through. MPEG: Stop event Use this event to stop play of an MPEG file. MPEG: Wait event Use this event to cause script execution to pause until a continuing video started by an earlier MPEG:Play event finishes. MPEG: None event Assigning this event essentially removes an MPEG:Play, Playlist, Stop, or Wait event you may have previously assigned. MPEG Options The MCI MPEG EX has configuration settings accessible from the EXes panel of the Options dialog. Click the MCI MPEG EX... button under the EX Settings heading in the Options dialog to open the MCI MPEG Options dialog: Maximize On Playback? When on, this option ensures that the MPEG playback window has been maximized to fill the entire screen. We recommend leaving this option on, but certain MPEG cards may require that it be off. 219 7: Additional InfoChannel Designer 3 EXes Optibase EX Close MCI After Playback? Turning this option on forces the MPEG device to close after playback has completed, freeing up system resources. In most cases, having this option on is unnecessary, and can increase loading times for the MPEG clip. Device Type The Device Type: text box displays the name of the MPEG device type. This is mpegvideo by default and for most hardware does not need to be changed. If your MPEG hardware uses a special device type, the manufacturer’s documentation should provide its name, and you enter it here. Changing the device type might allow you to use digital video hardware that is not an MPEG device, such as a Motion-JPEG card. Inactivity Timeout The Inactivity Timeout value control can be used to work around incompatibilities in the MPEG device drivers provided by some vendors. The symptom of this incompatibility is stalled script playback after several days of sustained playback of scripts containing MPEG segments. To avoid the problem, set Inactivity Timeout to slightly longer than the number of minutes in the longest MPEG segment used by the script. For example, in a script that plays three different MPEG segments, of 3, 8, and 10 minutes in length, setting Inactivity Timeout to 11 or 12 minutes would work. Click OK to make the settings you have chosen the defaults for future sessions. Click Cancel to discard your changes and exit the dialog. Optibase EX It is possible to use the Optibase Videoplex MPEG card with the standard Scala MCI MPEG EX, according to the instructions in the Mpeg.txt readme file. However, this is not recommended. For best performance, ease of setup, and to allow you to take advantage of all the Videoplex card’s features, Scala provides an EX especially for this hardware. 220 7: Additional InfoChannel Designer 3 EXes Optibase EX To use the Videoplex card with the Optibase EX, any system with the card must be configured with several items present: • the Optibase EX • the Videoplex driver • the link libraries rtdsdk.dll and rtdbin.dll ICDesigner Note The Optibase EX supports only the Videoplex PLUS and Videoplex PRO cards. The Videoplex Xpress is not supported. These items are included with this release of ICDesigner and are automatically installed in the correct places by the Scala installer program. You do not need the MCI MPEG EX to use the Optibase card. The Optibase EX must be activated before it can be used. If the Optibase EX is not already activated, you can turn it on yourself in the Options dialog. Choose Options from the Tools icon drop-down and select the EXes tab. Click the Optibase EX? button in the Optional EXes list to turn on (✓) the EX. Configuring the Optibase EX In the EX Settings list on the left of the Options dialog, find the Optibase EX... button. Click it to open the Optibase Options dialog. Display Mode The Display Mode: pop-up controls the video standard produced by the Videoplex card’s video output. This must be set correctly to match 221 7: Additional InfoChannel Designer 3 EXes Optibase EX the other video equipment in your system. There are four possible choices: • NTSC_M • NTSC_443 • PAL_M • PAL_B_G443 NTSC_M is the default, producing NTSC type M as used in North America and Japan. NTSC_443 is the NTSC variant that uses the 4.43 MHz color burst signal, which may be called for in some locales. For PAL output, PAL_B_G443 represents the PAL type used in Britain, Germany, and most other places where PAL is the standard. PAL_M is for use in Brazil and some other countries where the type M variant is used. Stream Type The Stream Type: pop-up controls the mix of information packets that make up the MPEG stream that is output by the card. The pop-up must be set to the type of MPEG files that you will be playing on your system. The four possibilities are: • System • Transport • Audio • Video System streams The default stream type is a System stream. A System stream is a standard MPEG stream, consisting of a video and an audio track. Transport streams A Transport stream is a customizable stream type that allows for special video and audio features. For example, instead of a System stream’s single audio track, a Transport stream might include several 222 7: Additional InfoChannel Designer 3 EXes Optibase EX alternate audio tracks, in various languages. The developer encoding the MPEG file can define custom stream configurations, consisting of whatever audio and video features supported by the MPEG standard are needed. If you do use a Transport stream, it is likely you will also have to adjust the Video PID and Audio PID settings from their defaults (see the “Packet identification” section, which follows). Audio streams An Audio stream is an MPEG stream that contains only audio, and no video. Video streams A Video stream is an MPEG stream that contains only video, and no audio. Packet identification MPEG streams are made up of data packets of different types. There are video packets and audio packets. Each type must have its own unique ID number to identify itself to the MPEG decoder. There are default values for these ID numbers, and in most cases these values, initially shown in the Video PID and Audio PID value controls, can remain unchanged. However, customers with special needs, such as those specifying custom Transport streams, might need to adjust these values for their particular setup. If your setup uses different PID values for video or audio packets, use the appropriate value control to specify a hexadecimal value of up to three digits for the ID. Genlocking the Videoplex signal The Videoplex card can accept an external video sync signal so that it can genlock to other devices. Whenever there are other video devices being used in conjunction with the Videoplex, they should ideally all be genlocked to the same sync signal, to enable seamless overlays and prevent tearing during transitions between different sources. The Genlock Enabled? button controls whether the card accepts an external video signal that may be present at its sync input port. When the button is on (✓), external sync is accepted and the Videoplex uses this to synchronize its own output. When the button is off, any external sync signal, if present, is ignored. 223 7: Additional InfoChannel Designer 3 EXes Optibase EX You should not turn this option on if no external sync signal is present. If Genlock Enabled? is on but no external sync is available, the Videoplex card will not produce output. Synchronization-related display problems The MPEG encoding process embeds presentation time stamp (PTS) information in the MPEG file that an MPEG decoder uses to regulate playback such that the audio and video portions remain synchronized. If these time stamps are not present or are improperly specified in the encoding process, playback can become unstable, with jittering or jerky motion in the video. A way to eliminate playback instability that results from bad or missing PTS information is to tell the decoder to ignore the time stamps. Scala’s Optibase driver provides this capability, should you need to make use of MPEG files that have not been encoded with good time stamp information. Turn on (✓) the Disable PTS Synchronization? button to solve playback problems that are the result of bad time stamps. The drawback to turning this option on is that without the synchronization information, the video and audio portions of longer MPEG segments can drift out of sync with each other. There are various possible reasons for MPEG image instability, and there is no simple way to know whether a given file that is not playing back correctly has PTS problems, other than to try this option. This option should be otherwise left off. Using and saving settings Once you have made all the settings in the Optibase dialog that are needed, you can click OK to close the dialog and store the settings for use in this and future sessions. Click Cancel to close the dialog, discarding any changes you made. Using the Optibase menu When the Optibase EX has been enabled, a new column appears in the ICDesigner Main and Design List menus. The Optibase column 224 7: Additional InfoChannel Designer 3 EXes Optibase EX lets you create script events that control the Videoplex card. Click in this column for a page or a special event to open the Optibase Digital Video menu. Optibase commands The Optibase: pop-up lets you choose the command that this event sends to the Videoplex card. There are five possible commands: • Play • Stop • Wait • Video • None Play The Play command lets you choose an MPEG file to play through the Videoplex card MPEG decoder. Click the File: button to open the File dialog, where you can choose a .MPG file to play. After you click OK on the File dialog, you see the Optibase menu again, with the file name on the File: button. When the event with this command is encountered in the script, the MPEG file begins to play. The Wait? option is available for the Play command. When Wait? is on (✓), as it is by default, execution of the script pauses until playback of the specified MPEG file completes. Then the events following the Play event can proceed. If Wait? is off, script execution proceeds with the events following the Play command as soon as the MPEG file begins playing. The Loops option is also available for the Play command. It allows you to have the MPEG file automatically start playing again immediately after it finishes, creating a video “loop”. The default is for the file to 225 7: Additional InfoChannel Designer 3 EXes Optibase EX play only once (Loops = 1). You can set this value control to a number (infinite) setting, which loops continuously from 1 to 99, or the until the script stops or an Optibase: Stop command is received. ∞ Stop Use the Stop command to stop play of an MPEG event started with a preceding Play command. Wait The Wait command pauses script execution until an MPEG file currently playing finishes. Execution then continues normally with the events following the Wait event after the MPEG playback finishes. Use this event when you need certain events not to start until the end of the MPEG, but the MPEG was started by a Play command with its Wait? option turned off, so that intervening events could execute during MPEG play. Video The Video command exists to let you set its Passthrough? option. The Videoplex card’s video input is normally routed directly to its output (“passed through”) so that the card may be used easily in a chain of video equipment. When the Videoplex card is not playing MPEG digital video, any video signal appearing at the input is passed through to the output. When MPEG playback begins, the card automatically switches its output to the MPEG video instead, then switches back to passthrough mode when the MPEG finishes. In this way, manual switching between MPEG and external video passthrough modes when working with both sources is avoided. At times, however, you might want to block the external video input from appearing at the Videoplex output. For example, it could be useful when you need to ensure that there is black (no signal) before the beginning and after the end of an MPEG segment. To control the passthrough status, use the Video command. The Passthrough? option is on (✓) by default. To defeat the passthrough, so that the only output of the card is its MPEG playback, insert a Video command event with Passthrough? turned off. 226 7: Additional InfoChannel Designer 3 EXes Queue EX None Use the None command to remove a Play, Stop, Wait, or Video command. Queue EX Scala InfoChannel 3 software products support use of the Q-Matic Corporation Q-Win queuing system through the Scala Queue EX. The Scala Queue EX allows the display of queue information from a connected queueing system within a Scala InfoChannel Designer 3 script. The Queue EX provides device control for the queuing system. The EX is installed on an InfoChannel system that is connected via a serial port to the queuing system hardware. The output of that system is displayed on monitors situated where those in the queues can see them while waiting for the next available counter. The Queue EX works by reading data transmitted by the queuing system hardware, and placing the data into special InfoChannel variables that can be displayed and manipulated in a script in real time, responding to the queuing system hardware. Configuring the Queue EX The Queue EX must be turned on in the ICDesigner Options dialog. Queue EX? appears in the Optional EXes list on the right of the EXes panel. Click this button to turn the EX on (✓). Using the Queue EX requires you to configure the PC serial port for use with your queueing system. In the ICDesigner Options dialog, the 227 7: Additional InfoChannel Designer 3 EXes Queue EX Queue EX... button appears in the EX Settings list when the EX is on. Click this button to open the Queue Options dialog: Before you modify the Queue EX settings, you should know the protocol used by your queuing system, either serial or TCP/IP, and the associated settings for that protocol, such as baud rate or address port. Setting Serial communication parameters The buttons in the Serial panel of the dialog are for setting the serial communications parameters used for communication between the PC and the queuing system hardware. Enabled? Turn on (✓) this option if your queuing system is serial controlled. Serial Mode The Serial Mode: pop-up lets you choose between system-defined and user-defined port settings for the serial port connected to the queuing system. When System Defined is chosen, the Communication Port: button is enabled and the Port Address and Port IRQ buttons are disabled. The address and IRQ settings set in Windows for the port number you choose (1, 2, 3, or 4) are used. When User Defined is chosen, the Communication Port: button is disabled, and Port Address and Port IRQ are enabled. This lets you choose a particular address and interrupt setting that is independent of the COM port. 228 7: Additional InfoChannel Designer 3 EXes Queue EX Communication Port When Serial Mode: is set to System Defined, the Communication Port: pop-up lets you choose which of the four standard COM ports you are using. The pop-up is disabled when Serial Mode: is set to User Defined. Port Address When Serial Mode: is set to User Defined, the Port Address pop-up lets you specify a port IO address. The pop-up is disabled when Serial Mode: is set to System Defined. Port IRQ When Serial Mode: is set to User Defined, the Port IRQ pop-up lets you specify a port IRQ number. The pop-up is disabled when Serial Mode: is set to System Defined. Baud Use the Baud pop-up to set the serial baud rate recommended by your queuing system documentation. Data Bits Use the Data Bits pop-up to set the number of data bits recommended by your queuing system documentation. Parity Use the Parity: pop-up to set the serial parity recommended by your queuing system documentation. Stop Bits Use the Stop Bits pop-up to set the number of stop bits recommended by your queuing system documentation. 229 7: Additional InfoChannel Designer 3 EXes Queue EX Setting TCP/IP communication parameters The buttons in the TCP/IP panel of the dialog are for setting TCP/IP communications parameters used for communication between the PC and the queuing system hardware. Enabled? Turn on (✓) this option if your queuing system is TCP/IP controlled. TCP/IP Address The TCP/IP Address: text box lets you enter the TCP/IP address of the server that this Queue EX will listen to if the TCP/IP connection type is enabled. The address is used to authenticate messages received from the server. If you do not know the address of the Q-Matic server or do not need authentication, leave this field empty. TCP/IP Port The TCP/IP Port: control specifies the TCP/IP port that this Queue EX will listen to if the TCPIP connection type is enabled. The default value is 501 and should not need to be changed in most installations. Unit Filter The Q-Matic queuing system has the capability of filtering queuing commands so that only certain display units are affected. The Unit Filter: text box lets you specify a list of main display units, by number, 230 7: Additional InfoChannel Designer 3 EXes Queue EX that this Queue EX will listen to if the TCP/IP connection type is enabled. Main display unit numbers are assigned by a Q-Matic installer. If this field is left blank this EX will listen for new events for all main display units, numbered 1 through 99 inclusive. To filter events based on unit number, enter the unit numbers you want to listen for using a commaor a space-separated list like so: • 1,2,5,11 - Capture letter, ticket, and counter events for unit numbers 1, 2, 5, and 11. • 8 - Capture letter, ticket, and counter events for unit number 8 only. • 3 7 5 11 - Capture letter, ticket, and counter events for unit numbers 3, 7, 5, and 11. Saving your settings Click the OK button to save your settings and exit the Queue Options dialog. 231 7: Additional InfoChannel Designer 3 EXes Queue EX Creating a queuing script At its simplest, a script for use with a queuing system could be a plain page with little more than the current counter and ticket number shown on it. For example: However, the real advantage of using ICDesigner with a queuing system is that it allows you to present information in addition to just the counter and ticket numbers. It gives you the opportunity to present queue information with all the design possibilities of an ICDesigner production, far outstripping the visual appeal of a simple text-based display. This lets you both inform and entertain your customers while they are in line, making the wait more enjoyable and enhancing your level of service. At the same time it prominently displays the counter and ticket information, the script can also promote other goods and services available in the same facility, advise customers on any preparations they might need to make before their tickets are called, and display messages or images that could be helpful. With the availability of color back232 7: Additional InfoChannel Designer 3 EXes Queue EX grounds, animations, wipes, and a myriad of text styles, the display is sure to catch and hold the attention of impatient customers. A script for a queuing system is created just like any other ICDesigner script. The only difference is that on each script page, the queue ticket and counter variables are embedded in text elements (as shown in the preceding illustration), so that the next available counter is always indicated. Queue variables Once the Queue EX is active, twenty new variables in pairs are available for inclusion in scripts: Q.Ticket Q.Counter Q.Ticket1 Q.Counter1 Q.Ticket2 Q.Counter2 Q.Ticket3 Q.Counter3 . . . Q.Ticket9 Q.Counter9 A simple installation might use only the first Ticket/Counter pair, which can handle any number of counters or tickets. In a large facility that has many counters, divided into groups, you can use as many of the numbered pairs as necessary to handle the different groups of counters. For example, an airport with multiple counters for each of several airlines could use a pair for each airline. Each airline could then have its counters numbered beginning with 1. Pairs 1-9 are automatically filled in based on the group/series number transmitted by the queuing system. 233 7: Additional InfoChannel Designer 3 EXes Queue EX Using the queue variables Q.Ticket variables – This variable contains the most recent queue system ticket number to be transmitted for the group. Q.Counter variables – This variable contains the number of the next available counter or teller that the queuing system has transmitted to the group. The ticket and counter numbers should always be in a large font, the largest text on the page. Use an easy to read font, and use color, outlining and/or shadowing to make the numbers stand out from whatever might be underneath. For displaying a single counter, Helvetica Bold 100 pt. in white with a black outline would be a safe choice with virtually any production. Make sure you leave enough room for large ticket and counter numbers to fit on the line. The variables automatically update in real time as the information is sent by the queuing system. See the “Displaying variables” section in chapter 6 of the ICDesigner Basic Authoring User’s Guide for details on displaying variables within a script. NOTE: If you already own a Q-Matic system, you may need to upgrade your system before using it with Scala InfoChannel. Company information Q-Win Systems: Q-MATIC Corporation 95 Underwood Road Fletcher, NC 28732 Phone: +1 (800) 852-6768 Fax: +1 (828) 209-1100 Q-MATIC Sweden AB Neongatan 8 S-431 53 Mölndal Sweden Phone: +46 31 87 92 50 Fax: +46 31 87 92 54 234 7: Additional InfoChannel Designer 3 EXes Windows Scripting EX Windows Scripting EX The Windows Scripting EX allows you to take advantage of the power and versatility of other scripting languages supported by Windows to extend the capabilities of your ICDesigner scripts. It works by allowing you to launch external scripts written in languages such as VBScript, JScript®, and XML and providing a means of communication between these scripts and your ICDesigner scripts. The Windows Scripting EX works with any Windows Scripting Host (WSH)-supported language that is installed on the playback system. The EX lets you make ICDesigner ICDesigner Note user variables available to the Windows script for The Windows Scripting EX is a Windows Script Host, but is reading and writing. This enables data transfer not the Windows Script Host. between the ICDesigner script and the Windows Specifically, it does not make script. the WScript object available. If the Windows script communicates with an external program or document such as a database, its data is therefore accessible in turn to the ICDesigner script. This opens limitless possibilities for import and export of data between ICDesigner scripts and external applications. Using the Windows Scripting EX You first need to create a script in a WSH-supported language that accomplishes some useful function. (The documentation that follows assumes familiarity with Windows scripting and sufficient competence to produce a functional script in a WSH-supported language.) The script should be saved in an appropriate location accessible to the ICDesigner script, such as the My Scripts folder. If you intend to use the Windows Scripting EX, a Windows Scripting EX event must appear as an event in your script. When the ICDesigner script executes this event, the Windows script is run. 235 7: Additional InfoChannel Designer 3 EXes Windows Scripting EX Click the WinScript column for an event in your script to open the Windows Scripting menu. Click Select Windows Script: to open the File dialog, and navigate to the Windows script. After you select the script and click OK, you see the full path to the Windows script in the button. The Engine: pop-up automatically switches to the script type if its filename extension was one of the standard ones for that type of script. If it does not, you should manually choose the appropriate engine. The pop-up lists all the Windows scripting engines currently installed on the system. Its list may include, but is not limited to, the following: • • • • • 236 XML VBScript VBScript.Encode (encrypted VBScript) JScript JScript.Encode (encrypted JScript) 7: Additional InfoChannel Designer 3 EXes Windows Scripting EX Sharing variables with the Windows script The scrolling list on the left-hand side of the Windows Scripting menu shows the names and types of all the user variables that have been defined in the current ICDesigner script. Any of these variables can be shared with the Windows script by moving them into the righthand list. Move a variable to the Variables shared with Windows script list by double-clicking it, or by selecting it and clicking the >> button. The variables in this list are available for reading and writing by the Windows script. To stop sharing an ICDesigner variable, double-click it in the righthand list to move it back to the left. Using shared variables Variables that have been shared with a Windows script can be manipulated and displayed just like other variables in ICDesigner within the ICDesigner script. Within the Windows script, use of the ICDesigner variables is essentially the same as using variables defined natively within the scripting language. The changes made by the Windows script to variable values are immediately available to the ICDesigner script, and vice versa. In VBScript, you read and write the value stored in an ICDesigner variable by reading and writing the Value attribute: iSomeVBVariable = ScalaInteger.Value ScalaInteger.Value = 42 In VBScript, you don’t normally have to specify the “.Value” part because VBScript supports the concept of a “default method”. When a VBScript references an object without specifying the method/property, VBScript assumes you want to use the default method for that 237 7: Additional InfoChannel Designer 3 EXes Windows Scripting EX object. In the case of ICDesigner variable objects, the default method is the value property, so when the script shows this: ScalaInteger = 42 It's actually a short form for this: ScalaInteger.Value = 42 This distinction is important when you are using JScript because JScript doesn’t have default methods. In JScript, you always have to use “.Value”: ScalaReal.Value = 7.77; ScalaInteger.Value = 777; ICDesigner from the Windows script side Apart from the variables that ICDesigner exports to a Windows script's environment, ICDesigner also makes available the ScalaPlayer object. The ScalaPlayer object is a special object that ICDesigner makes available in the Windows Scripting environment. In VBScript you can create it using: CreateObject("ScalaPlayer.ScalaPlayer.1") The ScalaPlayer object supports these methods: Sleep(<time interval in ms>) Puts the Windows Script to sleep for <time interval in ms> milliseconds. The function does not return until at least that amount of time has passed, or ICDesigner playback is aborted (by hitting escape). Log(<text string>) Writes a string to the ICDesigner log. DPrint(<text string>) Similar to log, but writes to the Scala debug output monitor. This is not generally useful to the end user and is mostly for internal testing purposes. 238 7: Additional InfoChannel Designer 3 EXes File I/O EX Also available to Windows scripts launched through ICDesigner is the ScalaFileLock object. It allows a Windows script to find media files that belong to the ICDesigner script that launched the Windows script. Any files that you can reference from ScalaScript, you can also reference using the ScalaFileLock. In VBScript you can create one of these objects using: CreateObject("ScalaFileLock.ScalaFileLock.1") This object has two methods: LockScalaFile(<ScalaScript-style file name>) This locks the file and also returns the Windows equivalent file name (the file name in the format a Windows Script requires). UnlockScalaFile This unlocks the file. File I/O EX The File I/O EX provides numerous functions that make possible input/output operations involved with loading and saving files under script control. Because these functions are generally useful only to advanced users with special requirements, they are not documented here. A brief description of each function is available in its help text (in the Branch menu, scroll to the desired function in the Functions list, press F1, and click on the function.) The File I/O EX does not create a column in the Main or Design List menus, and thus has no menu of its own. You can find more complete descriptions of File I/O EX functions in the “ScalaEX.txt” file, which you can read by choosing the shortcut provided for it in the Windows Start menu. The file is also freely available in the Software Updates section of the Scala Web site, http://www.scala.com. 239 8: Using the Multi-tile Editor The button backdrops provided with InfoChannel Designer 3 give you a wide variety of images that are particularly good for use as buttons. This is because they are special “multi-tile” files, which are designed to be resized without becoming distorted. Unlike ordinary clips, the pixels of which become elongated when the clip is enlarged, multi-tile images use a unique multi-segment automatic tiling technique to allow them to expand and contract without changing the size of the pixels in the image. However, you are not limited to the button backdrops that ICDesigner provides. ICDesigner includes a tool that lets you create your own button backdrops from any suitable image you have, and finetune the resulting multi-tile for best appearance. And multi-tiles are not just for use with buttons. They can also be useful as text backdrops that can be easily resized as the amount of text changes, and as economical page backgrounds. How multi-tiles work A multi-tile is a bitmap image file that begins life as an ordinary clip. The file format used for multi-tiles, however, is extensible in such a way that the image can behave differently when resized than a regular clip does. The object of multi-tiles is to make it possible to resize clip-art imagery without the distortions seen when stretching an ordinary bitmap. When you resize a bitmap, such as a clip, all the pixels in the image are elongated equally, resulting in an overall stretched appearance to the clip image. For example, if you start with a clip of a painting in a picture frame, after resizing it to twice its original width, the left and right sides of the frame appear to be twice the thickness of the top and bottom of the frame. If the clip were made into a multi-tile, the frame could retain its original proportions on all sides. The “framing” portions of an 242 8: Using the Multi-tile Editor How multi-tiles work image—the top, bottom, left and right sides—retain their original proportions no matter how you resize the multi-tile as a whole. as stretched clip multi-tile source image as expanded multi-tile Making a multi-tile from an ordinary image is accomplished by using the ICDesigner Multi-tile Editor to slice the source image into nine tiling regions. The regions define how the various areas of the source image are duplicated to fill the additional space when you make the finished multi-tile wider or taller. There are three slices in each direction. The four corner regions never change size and are not duplicated when the multi-tile is sized. Center slice Left slice Right slice nine multi-tile regions Top slice center-middle region Middle slice Bottom slice corner regions The middle regions of the four outer slices are duplicated in the appropriate direction when the multi-tile is sized: the Top and Bottom middle regions are duplicated horizontally, and the Left and Right middle regions are duplicated vertically. This ensures that the sides of the image, where you would typically have features such as beveled edges, 243 8: Using the Multi-tile Editor The Multi-tile Editor shadows, etc., continue to fit with the corner regions and do not change their proportions. The “center-middle” region is tiled, or duplicated both horizontally and vertically as necessary to fill the internal area of the multi-tile at the desired size. The process of creating a useful multi-tile is primarily a matter of defining the slices so that the multi-tile looks good at any size. This involves determining where the edges of each slice must be so that the internal pattern, if any, is tiled without any ugly discontinuities. Properly adjusted, the edges line up with the image’s internal areas and look smooth and consistent no matter how you resize it. Getting it right can require some experimentation. The Multi-tile Editor You access the ICDesigner Multi-tile Editor through the Tools dropdown. On the Main menu, click Tools and choose Multi-tile Editor. You see the Multi-tile Editor screen: 244 8: Using the Multi-tile Editor The Multi-tile Editor You create a multi-tile in the Multi-tile Editor by modifying a source image. The source image can be any graphics file that ICDesigner recognizes, although for the purpose of creating a multi-tile, the image ideally should be fairly small and contain some type of pattern that is suited for tiling. Here is how the editor looks with a typical multi-tile open: Defining the multi-tile involves specifying the dimensions of the six slices of the image file, plus a sizing increment called granularity. Image areas The Multi-tile Editor screen has two display areas. The large area to the left is the Graphic Editor, showing an enlarged version of the source image, and is where you actually define the slices. The name of the currently open file is shown in the bar above this area. In the lower right of the editor is a tabbed display section. It contains the Preview panel, which shows a stretched version of the source image, using the settings you have defined for it, and the Original panel, which shows the image at its natural, unexpanded dimensions. 245 8: Using the Multi-tile Editor The Multi-tile Editor Slice controls Above the Preview/Original panels are the buttons of the Numeric Editor, which control the vertical and horizontal slices and the way they are tiled. Each of the six slice buttons displays two pixel values: the first is an offset (the number of pixels from the top edge or left edge of the source image) and the second is a width. When you select one of the buttons, the corresponding slice is highlighted on the Graphic Editor’s enlarged image. Changing the Numeric Editor values visibly changes the dimensions of the slice in the editor. Similarly, clicking in the enlarged image selects a slice, and dragging the graphic handles on the sides of the slice causes the pixel values on the corresponding button to update. You can use either or both methods to define your slices, whichever is most convenient. Granularity In ICDesigner, you can resize a clip arbitrarily to any pixel size. Multitiles, however, because of the unique way they work, are resized in discrete increments that may be larger than a single pixel. The Granularity value control specifies the increments by which the size of the multi-tile can be changed. A large granularity limits the number of possible sizes you can make the multi-tile; a small granularity lets you resize more freely. The control lets you adjust the horizontal and vertical granularity independently, in pixels. Click the Granularity control to activate it. This also highlights the granularity setting graphically on the enlarged image, and you can adjust the setting using the handles just as with slices. Generally, you want the granularity to be small, such as 3 × 3. This allows greater precision in sizing the multi-tile. The limiting factor in specifying the granularity is the source image, and how you want it to look when adjusted to its final size. You need a value that produces results that look good when the multi-tile is sized. 246 8: Using the Multi-tile Editor The Multi-tile Editor With some source images, the exact granularity setting is not critical. But others call for a particular granularity value. The two main reasons for needing to specify a particular granularity value are: • to prevent discontinuities between the center-middle slices and the Bottom and Right slices. If the granularity is smaller than the size of the center-middle slice, segments of the Center and Middle slices (in granularity-sized increments) are used to complete any odd-sized area on the right and bottom of the fill area. These segments might not match up with portions of the central pattern that could be present in the Bottom/Right slices. • to ensure that the pattern contained in the center-middle region is always reproduced in its entirety, and is not cut off on the bottom and right sides. When the granularity is made equal to the size of the tile defined by the Center and Middle slices, only whole center-middle tiles can be displayed, and the pattern cannot be cut off. If the source image contains a repeating pattern, the granularity should generally match the size of the smallest unique portion of the pattern, so that when duplicated, the slices fit together seamlessly and you get the best sizing flexibility. You might also want to do this to prevent the repeated part from appearing cut off on the bottom and right side of the multi-tile, as it would when the multi-tile had a size that was not a multiple of the size of the center-middle region. The granularity values can range from 1 × 1 to a maximum equal to the size of the center-middle region of the image. Relationship between granularity and the center-middle region The granularity of a multi-tile is not necessarily the same as the size of the center-middle region. Aside from the fact that the granularity cannot be larger than the size of the center-middle region, the settings of Granularity, Center, and Middle are independent. 247 8: Using the Multi-tile Editor The Multi-tile Editor The advantage of this independence is that it allows you to optimize both the precision with which you can resize the multi-tile and the quality of the resulting image in the multi-tile when it has been sized. The center-middle region is used as the basic tile unit to fill the multitile; ICDesigner always reproduces the full tile or as much of a full tile as possible in the space available. When the final size of the multi-tile can’t be filled by complete tiles, partial tiles are used. The size of the partial tiles can vary in granularity-sized increments. (The illustrations on page 250 make this easier to see.) Some multi-tile images have a large-scale pattern or shape in them and thus look best with a large center-middle tile. However, the nature of some large-scale patterns can allow a small granularity. Some examples help to illustrate these different possibilities. If the pattern filling the source image is a checkerboard, alternating pixels of two different colors, the ideal dimensions of the center-middle region would be 2 pixels wide and 2 pixels high. Any other even numbers would also work well. A setting that included an odd number, however, would disrupt the even checkerboard pattern, producing an unattractive discontinuity at the boundaries of each slice. Any granularity setting would work equally well. The “Ball-b”, “Balls-b”, and “Cheese-n” multi-tiles supplied with ICDesigner in the ScalaArt:\ClipArt\GuideExamples folder illustrate the very different effects possible when for the same source image, the granularity and center-middle region settings are varied. The first two use the same blue sphere as a source image. Create a blank page and use Add from the Design menu to open Ball-b.png into the page. Initially you see the source image, the plain sphere. Grab a corner handle and make the multi-tile larger. Notice how it appears to become a solid blue flat surface with rounded edges and corners. This is because of two factors: 1) the granularity is as fine as possible (1 × 1); and 2) the center and middle slices are just a pixel wide, matching the granularity. (These settings were saved with the multi-tile when it was created.) 248 8: Using the Multi-tile Editor The Multi-tile Editor The center and middle slices are what is duplicated to make the multitile larger, and because they are from the center of the sphere where the colors are solid, the resulting multi-tile surface is solid and the edges are smooth. source image enlarged multi-tile Center slices are duplicated to fill horizontal space Granularity = 1 x 1 Center-Middle slice size = 1 x 1 Middle slices are duplicated to fill vertical space If you now import Balls-b.png, at first you see the same sphere. When you make it larger, however, the results are very different. In this multi-tile, the saved granularity and Center/Middle slice dimensions also match, but now they are large. The entire square central area of the sphere is duplicated, giving the multi-tile surface an upholstered appearance. You can size it only in multiples of the granularity. If the granularity were reduced, you would see breaks around the edges of 249 8: Using the Multi-tile Editor The Multi-tile Editor the multi-tile, because the edge slices of the sphere would not match up with the Center/Middle slices. source image Granularity = 44 x 44 Center-Middle slice size = 44 x 44 enlarged multi-tile three Center slices and two Middle slices contain six center-middle region “tiles”, which match up with the edge slices Finally, import Cheese-n.png. It has a large-scale pattern, but one that is designed to blend seamlessly with itself along the edges, so that when tiled, the repetition of the pattern is not so obvious. With this kind of pattern, you can generally use any convenient value for the granularity. In this case, as in “Ball-b”, the granularity was saved as 1 × 1, so that you can size the multi-tile with complete freedom. However, the center-middle region is the entire face of the image. This allows all of the Swiss-cheese pattern to show on the face of the multitile. source image enlarged multi-tile, showing repeating pattern two center-middle tiles Granularity = 1 x 1 Center-Middle slice size = 40 x 40 250 partial tiles expand in increments of Granularity setting 8: Using the Multi-tile Editor Working in the Multi-tile Editor Open Click the Open icon in the Multi-tile Editor toolbar to open the File dialog, where you can choose a source image in any format, or an existing multi-tile (.PNG format). ICDesigner Note When you have chosen an image and clicked OK, you The PNG format is not exclusive to ICDesigner multi-tile see the Multi-tile Editor with the image you chose files. It is a general-purpose showing in the display areas, ready for editing. The image file format like BMP name of the image you opened appears in the bar and TIFF. You might find clipart in the PNG format, which below the toolbar. you could use in ICDesigner as clips, or source images for multi-tiles. You can also open a multi-tile PNG file into another application that recognizes PNG files. In that case, the application would see the file as containing just the source image. Save Click the Save icon in the Multi-tile Editor toolbar to open the File dialog, where you can save a multi-tile you have created or edited. You can save the multitile to any location, but using the folders provided is recommended for the sake of organization. Regardless of the format of the source image, multi-tiles are saved as .PNG files. Exit Click Exit (or the close button) to exit the Multi-tile Editor and return to the Main menu. You will be prompted to save any unsaved changes. Working in the Multi-tile Editor The basic strategy to make a multi-tile is to make the framing slices (Left, Right, Top, and Bottom) just wide enough to contain the parts of the source image that form the borders of the image. The Center and Middle slices then contain the areas of the image that can be duplicated. The trick is adjusting the slice edges so that they precisely match the edges of the pattern that is to be repeated. The Center slice should be exactly as wide as the pattern, and the Middle slice exactly as tall. These slices can also be multiples of the width/height of the pattern. If 251 8: Using the Multi-tile Editor Working in the Multi-tile Editor the framing slices contain any of the central pattern, their edges should be at the edges of the pattern. How this works becomes more obvious when you try it for yourself. Although you can use any image to make a multi-tile, for best results you should use a source image created especially for this use. Typically this is a rectangular graphic that has shading or other special treatment of the edges and corners, with a central pattern that is designed to fit together with itself seamlessly when tiled. This way, the tiling isn’t apparent: the multi-tile interior looks like a single, unbroken surface and the edges are continuous. Clip-art libraries, particularly those intended for Web authoring, often contain graphics that have been designed with this basic purpose in mind. You can also use an external paint program or something similar to create such images. Working with the source image When you first open a plain image (one that is not already a multi-tile) into the Multi-tile Editor, the Center and Middle slices are set to occupy the entire image. If your image ICDesigner Note is nothing but a uniform pattern, the other slices If you open a new image that is the same size as the current would be superfluous and you could simply adjust image, the slice definitions for the granularity and save this immediately to create a the current image are retained. multi-tile. But assuming that your source image has some edge features that should be preserved, you need to reduce the dimensions of the Center and Middle slices, thereby increasing the dimensions of the Left, Right, Top, and Bottom slices so that they enclose the borders of the image. Selecting slices A given area of the image is usually a part of two slices, a horizontal slice and a vertical slice. The bottom left corner of the image is part of both the Bottom and Left slices, for example. You can always select exactly the slice you want by clicking the corresponding button in the Numeric Editor. As a shortcut to using the buttons, you can click on the image itself in the Graphic Editor. You switch between selection of a given area’s ver252 8: Using the Multi-tile Editor Working in the Multi-tile Editor tical slice and selection of its horizontal slice by clicking within the selected slice. Whenever you click within a slice that is already selected, the enlarged image changes from displaying horizontal to vertical slices, or vice versa. The place in the selected slice where you click to change modes determines which of the three possible slices in the other direction will be selected. For example, if the Left slice is selected and you click in the lower part of it, the Bottom slice becomes selected. If the Center slice is selected and you click in the middle of it, the Middle slice becomes selected. Use the dashed lines that indicate the boundaries of the other slices as your guide. Clicking in an unhighlighted area of the image, or in an area outside the image, selects another slice without changing the horizontal/vertical display mode. If you click somewhere within some other slice, that slice is selected. If you click somewhere that is not part of any slice, the nearest slice is selected. For example, when the Bottom slice is highlighted, clicking anywhere in the Top slice or above the image selects the Top slice. Slice selection in the Graphic Editor becomes more clear once you have worked with it a bit. Adjusting slices First, click on the enlarged image. For a newly-opened image, it highlights, and the entire image is enclosed in a box with graphic handles on the left and right. The Center button also highlights, indicating that you have selected the Center slice. When a slice is highlighted, dashed lines indicate the boundaries of other slices, for reference. Right now, you see what appears to be a dashed box around the entire image, because the Top, Bottom, Left, and Right slices are all minimized around the outside of the image. Drag both of the graphic handles toward the center of the image. The offset and width values in the Center button change accordingly. The boundaries of the adjacent slices also adjust so that their edges coincide. Think of the edges of all the adjacent slices as being attached, so that as you adjust the slices, gaps and overlaps are prevented. Note that 253 8: Using the Multi-tile Editor Working in the Multi-tile Editor only the area of the current slice, within the solid box, remains highlighted. If you now click again within the highlighted area, you select the Middle slice. The Middle slice is still the full height of the image, so it is highlighted accordingly, and the handles now appear on the top and the bottom of its bounding box. Drag these handles toward the middle of the image as well. Separating the edges of the slices By default, the edges of neighboring slices are “stuck together”: when you move the right edge of the Middle slice, for example, the left edge of the Right slice moves with it. Usually this is what you want, because it helps ensure that the source image’s pattern continues to match from slice to slice. However you can adjust the edges of all slices independently if you want. To have independent control of the edge of a slice, hold down Ctrl while dragging its handle. The edge of the neighboring slice remains where it is while you position the selected slice edge as usual. Once separated like this, the two edges remain independent until you move one on top of the other again. The capability to separate the slices can occasionally be useful, for example if there is only one part of the source image that you wish to constitute the repeated multi-tile pattern. 254 8: Using the Multi-tile Editor Working in the Multi-tile Editor The bevgrd-h.png multi-tile illustrates these ideas: 4-pixel-square center-middle tile contains the repeating pattern unit, matching the Granularity setting guide lines show how slice edges are separated Using the preview image As you drag the handles, you notice the Preview image changing in real time to reflect the settings you make. The example expands to fill the preview box as best it can given the current settings. (If the source image is large, it may not be possible to fit a stretched image completely in the Preview panel, and you see a portion of the image. With a very large source image, the sample may even extend beyond the edges of the box. In this case, you can drag the sample around in the Preview panel to see the outer areas of the sample.) Because the size of the box is limited, sometimes changing settings causes the size of the sample to jump. But it always reflects how the current slice and granularity settings you have made work together to produce a stretched version of the source image. 255 8: Using the Multi-tile Editor Working in the Multi-tile Editor Observe the sample multi-tile carefully to see how your slice adjustments affect the stretched image. Because the feedback to all your changes is immediate, it is easy to see where any problems are. 256 Appendix A: Function and variable reference Standard ICDesigner functions InfoChannel Designer 3 provides many standard functions and variables for general use. Their operation and basic syntax is similar to corresponding functions and variables in other programming languages. When a variable or function is evaluated, it always produces a result or return value. The return value can be a number, a string, or a logical value. It can be placed into a variable or used as the basis for a comparison. The difference between functions and system variables is that functions require one or more initial pieces of information (in parentheses) in order to get the return value. A system variable always has a value, maintained by ICDesigner, which you can use at any time. Numeric functions work on or with numeric values (including expressions). “String” functions work on or with string. Expressions are also accepted. ICDesigner Note To make the text more easy to follow, we show variable names in SMALL CAPS, and functions and logical operators in ALL CAPS. However, you do not have to use any capitalization when you use variables, functions, or operators. You can use all lowercase, or any mixture of upper and lowercase. Numeric values expected by or returned by a function or variable in ICDesigner are in most cases whole numbers (“INT”: integers, including negative numbers), but in some cases can be floating point numbers (“REAL”: real numbers, which can have a fractional portion). You can assign integer values to real variables freely. If you supply a real value to an integer variable, the integer portion is used and the decimal portion is discarded. For functions, the value supplied must match the type expected by the function, or an error is generated when the script runs. Logical values in ICDesigner can be specified as TRUE or FALSE, but they are also accepted, and are always displayed by ICDesigner, as ON or OFF, which are synonymous with TRUE and FALSE. Note that spaces in expressions are unnecessary and are ignored, but are used in our examples for clarity. 258 Appendix A: Function and variable reference Standard ICDesigner functions Numeric functions MIN (INT1, INT2) If INT1 is less than INT2, this function returns INT1. Otherwise, it returns INT2. MAX (INT1, INT2) If INT1 is greater than INT2, this function returns INT1. Otherwise, it returns INT2. ABS (INT) If INT is a negative number, this function returns -INT. Otherwise, it returns INT. SIGN (INT) This function returns -1, 0, or 1, depending on whether INT is a negative number, zero, or a positive number. RANDOM (INTMIN, INTMAX) This function returns a random integer in the range INTMIN... INTMAX. SEED (INT) This function provides a seed (starting point) for the random number generator. You should always do this before using RANDOM(), to avoid duplicate sequences of random numbers. INT can be any number; using the system variable CLOCK is good for this. This function always returns ON (true). String functions LENGTH (STR) This function returns the number of characters in the string STR. LEFT (STR, INT) This function returns the INT first characters of the string STR. If the length of STR is less than or equal to INT, it returns the entire string. RIGHT (STR, INT) This function returns the INT last characters of string STR. If the length of STR is less than or equal to INT, it returns the entire string. 259 Appendix A: Function and variable reference Standard ICDesigner functions SUBSTRING (STR, INTPOS, INTCHARS) This function returns a portion of string STR starting at position INTPOS and containing INTCHARS characters. INTPOS should be in the range from 1 to LENGTH (STR). If INTCHARS is greater than (LENGTH (STR) + 1) - INTPOS, SUBSTRING() returns as many characters as possible. If INTPOS is greater than LENGTH (STR), it returns an empty string (“”). SEARCH (STR, INT, T) If T is a sub-string of STR starting at a position greater than or equal to INT, this function returns the position of the first occurrence of T within STR. Otherwise, it returns 0. CODE (STR) This function returns the ANSI Latin-1 code of the first character in the string STR. If STR is empty, it returns 0. CHAR (CH) This function returns a one-character string consisting of the ANSI Latin-1 character defined by the code CH. FORMAT (FMT, INT) This function formats integer numeric values for various output conventions. By including a format string FMT that contains certain special characters, you can control the way the number INT is displayed, regarding factors like fixed decimal point, leading and trailing zeros, and sign. 260 # reserves one digit column in the formatted string . includes a fixed decimal point in this position 0 includes leading or trailing zeros out to this column position - places minus sign in its own column + places sign in its own column, and uses + for positive values < left-aligns the columns instead of right-aligning Appendix A: Function and variable reference Standard ICDesigner functions Examples: Text entered in Design menu Script output ABC !(FORMAT (“####”,1234)) XYZ ABC 1234 XYZ ABC !(FORMAT (“####”,-34)) XYZ ABC -34 XYZ ABC !(FORMAT (“0###”,34)) XYZ ABC 0034 XYZ ABC !(FORMAT (“####”,4)) XYZ ABC ABC !(FORMAT (“####<”,4)) XYZ ABC 4 ABC !(FORMAT (“####”,12345)) XYZ ABC 12345 XYZ ABC !(FORMAT (“#0.#0”,120)) XYZ ABC 1.20 XYZ ABC !(FORMAT (“#0.#0”,12)) XYZ ABC 0.12 XYZ ABC !(FORMAT (“#0.#0”,-12)) XYZ ABC -0.12 XYZ ABC !(FORMAT (“-#0.#0”,12)) XYZ ABC - 0.12 XYZ ABC !(FORMAT (“+0#.#0”,12)) XYZ ABC +00.12 XYZ 4 XYZ XYZ The shaded examples show various ways of formatting with a fixed decimal point. You can do decimal currency calculations and display amounts properly by combining one of these formatting approaches with integer amounts in the hundredths unit. For example, to display amounts in dollars, store all amounts in cents ($1.20 = 120 cents), then display the amounts with two decimal places as shown above. You can use the FORMAT() function “implicitly” to display values embedded in a text element by including the formatting characters along with the variable. See “Formatting numbers to display decimal values” on page 96 of chapter 3 for more information. FORMATREAL (FMT, REAL) This function formats real number values for various output conventions. It uses the same format string special characters as FORMAT(), described above, and these operate in the same way to format the final string. 261 Appendix A: Function and variable reference Standard ICDesigner functions Expression evaluation functions EVALSTRING (STR) This function evaluates the string expression contained in the variable STR and returns the result to a text variable. If STR did not contain a valid expression, EVALSTRING() returns an empty string (“”). Example: STR = “LEFT(“HumanTouch”,5)” = EVALSTRING (STR) STR2 (STR2 contains “Human”) EVALINT (STR) This function evaluates the integer expression contained (as a string) in the variable STR and returns the result to an integer variable. If STR did not contain a valid expression, EVALINT() returns 0. Example: = “(6 * 5) - 25” INT = EVALINT (STR) STR (INT contains 5) EVALREAL (STR) This function evaluates the real expression contained (as a string) in the variable STR and returns the result to a real variable. If STR did not contain a valid expression, EVALREAL() returns 0. Example: STR = “10/3” = EVALREAL (STR) REAL (REAL contains 3.3333) EVALBOOL (STR) This function evaluates the boolean (logical) expression contained (as a string) in the variable STR and returns the result to a logical variable. If STR did not contain a valid expression, EVALBOOL() returns OFF (false). Example: = “NOT (5 = 10)” BOOL = EVALBOOL (STR) STR 262 (BOOL contains ON (true)) Appendix A: Function and variable reference Standard ICDesigner functions Conditional function CONDITIONAL (LOG-EXP, TRUE-EXP, FALSE-EXP) This function evaluates the logical expression LOG-EXP, and on the basis of that evaluation returns the value of either TRUE-EXP or FALSE-EXP. If LOG-EXP is true, TRUE-EXP is evaluated and returned; if LOG-EXP is false, FALSE-EXP is evaluated and returned. TRUE-EXP and FALSE-EXP can be text, numeric, or logical expressions. Example: CONDITIONAL (COUNT<20, “Counting...”, “Done!”) This example returns “Counting...” if LOG-EXP is evaluated while COUNT is less than 20, otherwise it returns “Done!”. Type conversion function VALUE (STR) When STR is a string consisting of numeric digits, VALUE() converts STR to the corresponding integer. It returns 0 if STR does not start with a number (leading white space is ignored). VALUE recognizes decimal (base 10) numbers by default, hexadecimal (base 16) when STR is prefixed with a dollar sign ($), and binary (base 2) when STR is prefixed with a percent sign (%). Examples: = VALUE (“015”) = VALUE (“$0F”) INT = VALUE (“%00001111”) INT INT (INT contains 15) (INT contains 15) (INT contains 15) System functions GETENV (STR) This function returns the contents of the DOS environment variable STR. If the variable is not defined, GETENV() returns an empty string (“”). 263 Appendix A: Function and variable reference Standard ICDesigner functions EXISTS (PATH) This function returns ON (true) if, and only if, a file exists as specified by Path. If no drive letter is included, the Path is assumed to be relative to the folder containing the script using this function; if a drive letter is included, then that absolute path is searched. Example: BOOL= EXISTS (c:\config.sys) (BOOL contains ON (true)) SYSTIME (MODE) This function returns a value representing some portion of the current date and time. You specify the units using MODE, which can be any one of the following: MODE you give Range of values year 2002, 2003, 2004... month 1...12 day 1...31 hour 0...23 minute 0...59 second 0...59 weekday 1...7 Example: INT = SYSTIME (month) (INT contains 6, assuming the month is June) VERSION (“ModuleName”) REVISION (“ModuleName”) Returns the version/revision number of a module (for example, “player.book” or “branch.ex”). Use the module names as shown in the Info panel of the ICDesigner Options dialog. 264 Appendix A: Function and variable reference System variables System variables Time variables TIME This variable contains a string with the current time in the current format (defined by the Timing EX settings in the ICDesigner Options dialog). DATE This variable contains a string with the current date in the current format (defined by the Timing EX settings in the ICDesigner Options dialog). WEEKDAY This variable contains a string with the name of the current day of the week in the current format (defined by the Timing EX settings in the ICDesigner Options dialog). CLOCK This variable contains the number of milliseconds since this ICDesigner session began. Other system variables PLATFORM This variable contains the name of the OS platform. For Windows 2000, this returns “Win32”. CPU This variable contains the CPU name, such as “486” or “Pentium”. MEMORY This variable contains the total amount (not the amount free) of RAM in bytes. 265 Appendix A: Function and variable reference Sound function Sound function ICDesigner provides one function related to CD sound. CD.LENGTHTRACK (TRACKNUM) This function returns a string containing the length of the CD track whose number is TRACKNUM. If TRACKNUM was not valid, this function returns an empty string (“”). Example: STR = CD.LENGTHTRACK (4) (STR might contain “3:54”) File I/O functions The File I/O EX provides numerous functions that make possible input/output operations involved with loading and saving files under script control. Because these functions are generally useful only to advanced users with special requirements, they are not documented here. You can find descriptions of each of these functions in the “ScalaEX.txt” file available in the Software Updates section of the Scala Web site at http://www.scala.com. Sound variables ICDesigner makes certain variables related to sound available for use in specialized scripts. These variables can be used for interactive music projects, such as creating a “virtual CD player” as a script. 266 Appendix A: Function and variable reference Sound variables The CD variables are read-only, so you cannot assign values to them. The Mixer variables, however, are read/write, so you can read their current value or set a new value. Name Type Description Example CD.TrackTime text Elapsed time of the current CD track “01:23” CD.TrackLength text Total length of the current CD track “4:56” CD.DiscTime text Time from beginning of CD to current location “23:45” CD.DiscLength text Total playing time for the entire CD “54:32” CD.Track integer Current track number 3 CD.MaxTracks integer Total number of tracks on the current CD 13 CD.NumDrives integer Total number of CD drives 1 CD.FirstDrive text Letter of the first CD drive “D” Name Type Range Description Mixer.MasterVol integer 0...255 Master Volume level Mixer.MasterPan integer -255...255 Master Pan setting Mixer.CDVol integer 0...255 CD Volume level Mixer.CDPan integer -255...255 CD Pan setting Mixer.SampleVol integer 0...255 Sample Volume level Mixer.SamplePan integer -255...255 Sample Pan setting Mixer.MIDIVol integer 0...255 MIDI Volume level Mixer.MIDIPan integer -255...255 MIDI Pan setting Mixer.LineVol integer 0...255 Line Volume level Mixer.LinePan integer -255...255 Line Pan setting Mixer.MicVol integer 0...255 Mic Volume level 267 Appendix A: Function and variable reference Operators Operators Arithmetic operators = Examples: ICDesigner Reminder In ICDesigner, “ON” = “TRUE” and “OFF” = “FALSE”. Assignment of value, equality comparison N L + N S =3+2 = “Jig” + “&Saw” =3-2 = -B (N contains 1) (if B contains -6, N contains 6) N =3*5 (N contains 15) N = 12 / 4 (N contains 3) N N Multiplication Example: / Division Example: mod Modulo (remainder after integer division) Example: ** (N contains 5) (S contains “Jig&Saw”) Subtraction, negation Examples: * (N contains 3) (L contains OFF) Addition, string concatenation Examples: - =3 = (6 = 5) N = 10 mod 3 (N contains 1) Exponentiation Example: N = 3 ** 2 (N contains 9) Relational and logical operators > Greater than Examples: ICDesigner Reminder ICDesigner is not casesensitive, so capitalization is ignored in string comparisons. 268 < = (10 > 10) L = “abc” > “def” (L contains OFF) (L contains OFF) = (10 < 10) = “abc” < “abc” (L contains OFF) (L contains OFF) L Less than Examples: L L Appendix A: Function and variable reference Operators Relational and logical operators (Continued) >= Greater than or equal to Example: L L <= (L contains ON) L = (10 <> 10) (L contains OFF) L = (3 >2) AND (1 > 10) (L contains OFF) = (3 >2) OR (1 > 10) (L contains ON) Logical “OR” Example: NOT = (10 <= 10) Logical “AND” Example: OR L Not equal to Example: AND (L contains ON) (L contains ON) Less than or equal to Example: <> = (10 >= 10) = “ABC” >= “abc” L Logical “NOT” Example: L = NOT (1 > 10) (L contains ON) 269 Appendix B: Licensing issues Because Scala InfoChannel Designer 3 lets you incorporate art, music, sound, and video, it’s possible that some of the content you incorporate will need to be licensed. Your license for the ICDesigner software does not require you to license productions you create with ICDesigner. However, this license does not cover free sub-licensing of any content not supplied by Scala that you might choose to include in a production. It is your responsibility to obtain the required licenses from the content owners of any images, sounds, music, or video clips you have included in your production. In many cases, you obtain a license for content simply by purchasing it in the form of a CD-ROM or other medium. For example, many companies sell font, clip-art, sound-sample, and MIDI file CDROMs, and by purchasing the disc you receive a “blanket” license to distribute any of the contents. However, each vendor of multimedia content has its own licensing arrangements, and you might be required to pay license fees for certain content on a per-use basis, to include credit indicating the source of certain items, or to abide by any of the licensor’s restrictions. You must read all of your license agreements carefully to know for sure. Failure to obtain a license and/or fulfill its obligations could leave you vulnerable to legal action by the licensors. The “End User License Agreement” provides detailed explanation about your rights and obligations when using ICDesigner. The Agreement is printed at the beginning of the ICDesigner “Basic Authoring” User’s Guide, and is also displayed at the beginning of the installation procedure for any Scala software. GIF and TIFF files It is possible that your production might include art or photos in the GIF or TIFF-LZW formats. Algorithms that are needed to view the files are licensed from Unisys Corporation. For licensing terms on GIF 271 Appendix B: Licensing issues ICDesigner fonts, backgrounds and sounds and TIFF(LZW), contact Unisys at LZW_INFO@unisys.com or phone +1 215 986-3090. It is your responsibility to find out if any of your GIF or TIFF images do require licensing, and then follow the necessary steps in order to obtain the licenses. Refer to the License Agreement section “Other licenses needed” for more information about licensing. ICDesigner fonts, backgrounds and sounds The fonts, images, sound files and ICDesigner scripts on the CDROM are licensed by Scala for your use. Purchase and use of this software automatically gives you the right to redistribute any of this material with your own scripts. TrueType fonts provided with ICDesigner Although scripts using the TrueType fonts provided with ICDesigner can be freely redistributed by the end user, the fonts themselves are not licensed for redistribution or commercial use. Distributing a commercial product containing an InfoChannel Designer 3 script that uses any of these fonts might require obtaining a license from the font manufacturer, the same as for any other TrueType font. The supplier of these fonts is Agfa® Monotype Corporation. You can contact Agfa at: Agfa Monotype Corp. 100 Challenger Road Ridgefield Park, NJ 07660 Tel. +1-201-440-2500 Fax. +1-201-440-5733 Agfa’s Web site is http://www.agfa.com. Agfa fonts may be purchased online at http://www.fonts.com. 272 Appendix B: Licensing issues Media not provided by Scala Media not provided by Scala When you use fonts, images, sound files and other media that have not been provided by Scala, but have been acquired in some other way, it is the responsibility of you, the producer, to know and comply with whatever licensing restrictions that the author of the media has established. TrueType font restrictions TrueType fonts contain embedded information that is intended to control how they may be installed on systems receiving the font with documents. There are three levels of control: • The font may have no restrictions, and may be freely installed on another system • The font may be installable for “print and preview”, meaning that it cannot be used except for the document with which it is distributed • The font may be restricted from any installation In saving scripts, ICDesigner abides by this control information, and will not include fonts in a saved or published script if there is no installation permitted. In the Select Font dialog in the Design Text menu, the Not Embeddable button appears whenever you select a TrueType font that contains restrictions on embedding in a document. Clicking this button gives a fuller explanation of the embedding restriction. ICDesigner never includes standard TrueType font files with a document; when fonts do allow some level of installation, ICDesigner embeds and/or encrypts the font data. However, the fact that ICDesigner may include font data with a saved script does not confer distribution rights. As with other media, you are always responsible for confirming the licensing requirements of any fonts you include in a script. 273 Appendix B: Licensing issues Using Scala trademarks Getting information on TrueType fonts At the time of this writing, Microsoft is making available a utility to display information embedded in TrueType font files about its manufacturer and installation restrictions. The Font Properties Extension, when installed on your system, provides several additional tabs in the Properties sheet for the font. This utility should be available for download from the typography area of Microsoft’s Web site, http://www.microsoft.com. Using Scala trademarks When using ICDesigner, you have the right to utilize the following trademarks of Scala: Scala® InfoChannel® Designer 3 There are, however, conditions and obligations attached to using Scala trademarks. Refer to the Scala Web site for information and file links regarding use of Scala trademarks and logos in relation to your ICDesigner productions. Understanding the license agreement It is important that the end user license agreement at the beginning of the “Basic Authoring” manual be read in full before you proceed with distributing your ICDesigner production. A copy of the agreement is included with the ICDesigner software. Questions regarding the License Agreement can be addressed to Scala, Inc., One East Uwchlan Ave. Suite 300, Exton, Pennsylvania 19341 USA, or contact your local Scala subsidiary office. 274 Appendix B: Licensing issues Third party redistributable software Third party redistributable software To make the end user experience as seamless as possible, when publishing a script to CD-ROM you can include certain third-party software that ICDesigner scripts require, in case the intended playback system does not already have it. The AutoPlay setup utility checks for the presence of all required components, and notifies the user if any are missing on that system. The setup utility can install DirectX 8.1 automatically if necessary, providing that its licensed distribution archive has been included on the CDROM. If DirectX is necessary, it needs to be obtained separately. DirectX is freely available from Microsoft and does not require a formal written license agreement to distribute. However, you still need to agree to Microsoft’s terms and conditions before you can redistribute its DirectX archive on your CD-ROM. ICDesigner does not include any third party software with scripts published to Web Component, to File, or to Email. Please see page 189 in chapter 6 of this manual for more information on Microsoft components and where to acquire them. 275 Appendix C: The ScalaScript language Unlike some multimedia authoring systems, Scala InfoChannel Designer 3 allows you to produce scripts in a simple, graphical fashion. ICDesigner’s HumanTouch user interface presents multimedia production options in a direct, visual way that does not require the producer to have computer programming skills. However, whenever you use ICDesigner to produce a script, you are in fact creating a type of program. This program, in the form of statements in the ScalaScript language, is what is stored on disk when you save a script. This appendix is a brief introduction to ScalaScript, to help you decide whether you should—or need not—know more about this side of ICDesigner. Indeed, most ICDesigner users don’t need to know ScalaScript and may not even realize it is there. But for those with very specific goals, it can be useful, even vital. If you would like more detailed information, an Adobe Acrobat file describing the fundamentals of ScalaScript is provided in the Software Downloads section of the Scala Web site at http://www.scala.com. Click on the “ScalaScript Descriptive Document” link to see it. What is ScalaScript? Strictly speaking, an InfoChannel Designer 3 script does not consist of the images, sounds, and so on that appear when the script is run, although we often refer to scripts this way. The script itself is actually a a series of statements that describe the images, sounds, and other elements, along with specifications of how and when they appear, and other aspects of the production. Each statement is a command in the ScalaScript language, and in most cases corresponds directly to an element or option chosen through ICDesigner’s menus. ICDesigner can save a script either in its normal way, which produces a data file that may contain embedded clips or other data that was pasted from another application, or as a text file consisting just of ScalaScript commands by turning on the Save Script as Plain Text? option. Even scripts that are saved with this option off, however, are 277 Appendix C: The ScalaScript language What is ScalaScript? !ScalaScript EVENT Sequence: :"paint002.bmp" EVENT Group: Picture("ScalaArt:\clipart\backgrounds\textures\paint002.bmp", Margin(10, 10, 0, 0), Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff, $999999, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00, $8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd))); Wait(); Sequence: Text(62, 63, "This is some plain text on the first page.", Wrap(Off, Auto(549))); Text(70, 181, "This is some styled text on the first page.", Face(On, Pen(6)), Outline(On), Shadow(On), Font("SGaramond", 32), Italic(On), Wrap(Off, Auto(616))); END EVENT Group: Picture("ScalaArt:clipart\backgrounds\textures\natur002.bmp", Margin(10, 10, 0, 0), Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff, $54c5638, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00, $8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd))); Wait(); Sequence: Clip(336, 21, "ScalaArt:\clipart\clips\people\baby2.bmp", Operation(On, Resize(178, 223))); END EVENT Group: Picture("ScalaArt:\backgrnd\textures\yello001.bmp", Margin(10, 10, 0, 0), Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff, $999999, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00, $8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd))); Wait(); END END 278 Appendix C: The ScalaScript language Why ScalaScript? ultimately based in ScalaScript, and have the benefits of portability and ease of distribution. Any normally-saved script can be viewed as ScalaScript statements by re-saving with the option on. You can see an example of what ScalaScript looks like by opening one of the ICDesigner demo scripts (files with the .SCA extension), saving it with the Save Script as Plain Text? option on, then loading it into a word processor or text editor that can open plain ASCII text files. Preceding is a simple ICDesigner script. See if you can figure out for yourself what it will do! As you see, ScalaScript commands are mostly English words, so that a script file can be understood even by non-technical users. Many commands have additional parameters that specify, for example, the name of a file or the length of a pause. Clicking buttons, loading files, moving objects, and changing values on the ICDesigner menus result in commands with the corresponding parameters being written into the ScalaScript file when you save the script. ICDesigner takes care of formulating the ScalaScript statements properly, so that you don’t have to learn the details of the scripting language syntax. Why ScalaScript? What is the need for a human-readable format for ICDesigner scripts? It might seem like an unnecessary intermediate state between HumanTouch authoring and the binary format of the script file that ICDesigner normally saves. There are several reasons a human-readable form for scripts is valuable: • portability between different revisions and platforms • ease of distribution • editing and debugging • special circumstances 279 Appendix C: The ScalaScript language Why ScalaScript? Portability A common problem with all types of software is ensuring compatibility of documents with future revisions of an application, and between versions of the application on different platforms. Ideally, applications and documents should keep users from having to think about these things. Having a simple, standard, accessible file format like ScalaScript is a good way to minimize such difficulties. Ease of distribution The graphics and sound files used by multimedia productions are typically quite large. A ScalaScript file, however, does not have to contain the graphics and sound files that appear in the script. Instead, it usually contains references to these files, which remain external to the script file. This allows ScalaScript files themselves to be very compact. And because they are plain ASCII text, they do not require any special encoding/decoding steps for electronic transmission through standard e-mail networks. Together, these two facts mean that it can be quick and uncomplicated to transfer ScalaScript files from one place to another electronically, or with low-capacity media such as floppy disks. Editing and debugging Normally, you use ICDesigner’s HumanTouch GUI to create and edit scripts. However, there are occasionally advantages to being able to see and manipulate a script in its ScalaScript text format. There might be situations in which editing is required, but ICDesigner is not available to perform the editing with the HumanTouch GUI. In such a case, someone knowledgeable in ScalaScript and in possession of a text editor can still edit a script saved as plain text. Also, the process of understanding and debugging a more complex script can often be easier when you can examine the underlying ScalaScript statements. People with programming backgrounds may simply prefer this method of working. In addition, there are some kinds of editing changes that can be more conveniently made in a text-based format. Especially when a script is 280 Appendix C: The ScalaScript language Using ScalaScript long, making changes of a repetitive or pattern-based nature can be accomplished much more quickly using a text search and replace function than by using menus. Special circumstances Although virtually all ICDesigner options and capabilities are available through the HumanTouch GUI, there are certain situations in which use of ScalaScript may be necessary. Some combinations of options or effects might not be possible to specify using the ICDesigner menus. Or there may be certain advanced features whose operation has not yet been integrated into the current menu scheme. In such cases, those who need to use these features can use ScalaScript to accomplish the desired result. In fact, for this reason, many of the ICDesigner demo scripts were created directly in ScalaScript. Using ScalaScript For the vast majority of ICDesigner producers and production tasks, a script’s embodiment in the form of the ScalaScript language is completely automatic and transparent. Both producers and users can enjoy the benefits of ICDesigner’s approach to multimedia without having to know about ScalaScript. For those who do make use of ScalaScript directly, in most cases it will be for the purposes of occasional editing and special capabilities as mentioned above. It is of course possible to create a script entirely “manually” in ScalaScript, using it like any other computer programming language. However, this is neither intended nor necessary except in special circumstances. A hybrid approach using both menus and direct ScalaScript access is perhaps ideal. You can use the menus for what they are best at: fast, intuitive WYSIWYG design and layout of graphic and audio elements. Then use ScalaScript for what it is best at: global editing, fine-tuning, and advanced scripting techniques. 281 Appendix C: The ScalaScript language Experimenting with ScalaScript When should you use ScalaScript? ICDesigner was designed with the overriding goal of offering a completely “point and click” approach to multimedia production, and it is optimized for that approach. For this reason it should rarely be necessary for most people to use ScalaScript directly. The time to think of ScalaScript is when there is an effect you need to accomplish that appears to be within ICDesigner’s capabilities, but which there seems to be no way to accomplish using the menus. For example, ICDesigner does not currently provide a way to group events in the List menu the way you can in the Main menu. However, such grouping is possible through ScalaScript, and can be extremely useful. The need to make extensive use of variables and complex branching structures is also a classic case in which working directly in ScalaScript can be the easier approach. Even if you intend to create all your scripts using menus, ScalaScript can prove useful. When a script you are producing using the menus does not seem to be working right, and you do not understand why, looking at the ScalaScript statements might help you discover the reason. You can then either edit the ScalaScript statements directly to fix the problem, or return to the menus and use them to modify the script based on your new understanding. Experimenting with ScalaScript The best way to get to know ScalaScript is to look at examples of it, and to start editing and adding to the scripts. ICDesigner’s own demo scripts are a logical starting point, especially because many of them use ScalaScript-only techniques. Experimenting with them can be easy and instructive. Before you do any experimenting, however, be sure that you are not working on the only copy of a script. Always save a copy of scripts you want to play with under a name like TEST.SCA, and use that as your subject. This will prevent you from inadvertently mangling good scripts as you learn. 282 Appendix C: The ScalaScript language Experimenting with ScalaScript Here are some other guidelines for your exploration: • Don’t alter the existing punctuation Unlike human languages, in computer languages every punctuation character is likely to be significant. Deleting a comma or a semicolon can completely change the effect of a command or even a series of commands. One thing you do not have to worry about is “white space”: spaces, tabs, or carriage returns (produced by the Enter key ↵). ICDesigner ignores white space, and inserts white space in the script files only to make them more readable by humans. • Add punctuation when necessary If you want to add commands or parameters to commands, you will need to use the right punctuation. If you use expressions, use parentheses to make clear the order of operations. Be sure that for a given command or expression, the number of open and closed parentheses matches. In general, adding unnecessary punctuation, especially parentheses, is less likely to cause problems than leaving out necessary punctuation. • Don’t worry about capitalization ScalaScript is not case-sensitive, so you do not have to capitalize command and parameter names the way ICDesigner does, or capitalize anything at all. However, it does make the script more readable to capitalize consistently. ICDesigner will preserve any capitalization you include in text strings, however: “This string WILL stay capitalized just like this.” • Save ScalaScript scripts as plain text files A script file is a simple text file, which you can edit with a text editor or any word processor that can load and save plain text files. A file saved in a word processor’s own document format contains formatting codes along with the text, and would not be recognized by ICDesigner as a script. Don’t forget to save the text file with the file-type extension .SCA, so ICDesigner will see it as a script. 283 Appendix C: The ScalaScript language Experimenting with ScalaScript Errors When ICDesigner finds a command containing a mistake, it tries to execute as much of it as possible, or to skip it and continue if the command is completely unintelligible. However, a particular error might cause ICDesigner to get so confused that it cannot continue the script. ICDesigner displays error information only when loading the script, or after the script plays, never during the script. Terminology There are a few points of terminology about ScalaScript that should be mentioned. • English keywords Unlike ICDesigner’s menus, ScalaScript is strictly English-based, so its commands—as with other programming languages—are not translated for use in non–English-speaking countries. If you are not familiar with English you may need to refer to a translating dictionary to match the translated terms in the menus with the corresponding ScalaScript commands. • Events “Events” are more broadly defined in ScalaScript than in the menus. A ScalaScript event can correspond to an individual menu event, like the appearance of a clip, but it can also refer to much more. In ScalaScript, an event can be defined as any number of other events, which can themselves be composed of other events, in a hierarchical structure similar to a directory tree. The keywords EVENT and END define the boundaries of events that consist of other events. ICDesigner uses indenting of command lines to help show this structure. • Group The “Group” keyword in ScalaScript is not related to the Group option available for pages in the Main menu. 284 Appendix C: The ScalaScript language Switching between menus and ScalaScript Switching between menus and ScalaScript It is perfectly all right to go back and forth, looking at a script in the menus and then as ScalaScript commands. However, if you actually will be editing the script in both modes, you should keep two things in mind: • The menus cannot properly reflect advanced ScalaScript scripts Not all events in scripts that use ScalaScript features inaccessible through the menus will be visible when seen from the menus. Some of the ICDesigner demo scripts, for example, are clearly large and complex, but when seen from the menus, there appears to be little there. This is a sign of a “hand-authored” script. Trying to edit such a script using the menus is not likely to succeed. • Saving a script from within ICDesigner that you have written or edited in ScalaScript form can change its formatting or even its contents ICDesigner always formats a script in a certain way when it saves it, including capitalizing keywords and indenting “nested” sections. If the script was created or edited as ScalaScript using a different formatting style—no indenting, for example—the script will look different after it has been saved from the ICDesigner File dialog than it did before. If the ScalaScript code was correct, the formatting should be the only difference. Incorrect code, however, may not remain after the script has been saved from the File dialog. In either case, the script should work the same. 285 Appendix D: Possible problems and errors With any software as sophisticated as Scala InfoChannel Designer 3, there will be times when the unexpected happens, or when ICDesigner will not do what you want. Following are some likely sources of difficulty for ICDesigner users, both new and experienced, and suggestions on what you can do about them. This appendix primarily covers possible problems in how you use ICDesigner. General considerations and a wide variety of both general and specific problems related to hardware, installation, and configuration are discussed in various areas of the Scala Web site: http://www.scala.com/ Of particular interest to ICDesigner users is the location http://www.scala.com/faq Look there if you do not find answers to your questions here. You should also be sure to read the ICDesigner Readme.txt file. Problem: I have sound events in my script, but I don’t hear anything when the script runs. Reasons and possible solutions: 1. The sound card may not be properly connected to a working audio system. Make sure all audio cables are plugged in, power cables connected, and the amplifier or speakers are on and the volume controls are not at zero. 2. A volume setting of zero (0) may have been set for the sound source. In the initial Play panel for the source, check to see if the volume was set to zero, or a subsequent Sample Volume, MIDI Volume, or CD Volume event set the source volume to zero. 3. The Mixer settings may not be correct. Check the Volume settings in the Mixer panel of the Sound menu. Neither the volume setting for the sound source you are using (Sample, MIDI, CD, Microphone or Line) nor the Master volume setting should be at zero. 287 Appendix D: Possible problems and errors Reasons and possible solutions: 4. ICDesigner may not be able to find a sample file, MIDI file, or CD track that it needs to play a sound. Ensure that all necessary sample or MIDI files are present, in the locations specified in the sound sources’ Play command panels. Insert a CD Read Contents event to make sure that ICDesigner is looking in the right table of contents for any CD tracks. Check that any other external equipment, such CD-ROM drives, MIDI sound modules, microphones, etc. are connected, powered on, and have access to the discs or other storage media required for sound playback. 5. The sound card may not be installed and set up properly, or it may not be compatible with ICDesigner. Check the instructions on sound card configuration and any troubleshooting information in the sound card’s user guide. I can’t paste items I placed in the Windows clipboard into my ICDesigner production. Reason and possible solution: 288 Not all data types that you might be able to place on the Windows clipboard in another application can be pasted into ICDesigner. The only data types that ICDesigner currently accepts are bitmap graphics and text. Attempting to paste data other than bitmap images or text could have no effect, or might be only partially successful. Using the Paste as Clip? option in the Paste Special dialog may work better. (It is possible to paste complete files cut or copied from the Explorer; these are treated just like Added files.) Appendix D: Possible problems and errors Problem: Wipe motion is not smooth. Reasons and possible solutions: You are using wipes that require a large amount processing or graphics power. Rather than using a zoom, push, fly-on or alpha wipe, use a reveal wipe. See chapter 12 of the “Basic Authoring” guide for more on wipe smoothness. In general, faster systems (using Pentium III or equivalent processors) with 128 megabytes or more of memory are much better able to perform multimedia tasks smoothly. Using a high-performance graphics card with 8 megabytes or more of video memory can also dramatically improve speed and smoothness in wipes. Also see the setup and troubleshooting sections of the Scala Web site for information on video drivers and graphics card options. Problem: I type on the keyboard, but I don’t see characters appearing on the screen. Reasons and possible solutions: 1. The focus for input may be a menu control and not the page. Click on the page. 2. There may not be a text cursor. Click on the background, or double-click in an existing text element, then type. 3. The cursor may be outside the screen area. This could happen if you dragged a long text element so that the cursor was offscreen, pressed Home or End while either end of a text element was off screen, or while editing the element pressed Backspace (⇐) enough times that you started deleting characters that were off-screen. Select the element (using the arrow keys if necessary) or the appropriate word wrap margin marker and drag the text element so that the cursor is visible again, then type. 4. The Opacity setting for Whole Element or Front may be at 0, making the text you type invisible. 289 Appendix D: Possible problems and errors Problem: I set a certain Duration for a page so that it would last as long as a music track, but the next page doesn’t appear until after the music is over. Reason and possible solution: A Duration cannot make a page’s events take less time, or interrupt its events; it can only add to the time taken by the page and all its events (including wipes). Shorten the length of one or more of the page’s events, or increase the speed of some wipes, so that the events always complete before the music is over. Problem: I don’t see a column in the Main or Design List menus that I expect. Reasons and possible solutions: 1. The EX that generates that column may be turned off. Go to the ICDesigner Options dialog, and click that EX’s button in the Optional EXes column of the EXes panel so that it is on (✓). 2. The EX that generates that column may not be installed. Once the EX file has been installed, its column can appear. 3. The column may be too far to the right to be visible. Use the horizontal scroll bar to scroll far enough to the right to reveal the column. To keep that EX column always visible, you can make one or more of the other columns narrower, or drag the desired column to the left of others. Problem: My computer freezes when I try to use Add from Scanner/Camera. Reason and possible solution: This is a problem with the TWAIN driver for your image device. Scala software is designed to work with properly functioning TWAIN drivers. Some drivers do not fully implement the TWAIN specification, and cause the PC to lock up when ICDesigner tries to access their devices through standard methods. Consult the Web site for the manufacturer of your TWAIN device to see if an updated, fully compliant TWAIN driver is available. 290 Appendix D: Possible problems and errors Problem: It takes a long time to set the same option for many pages or events, entering and exiting the menus for each one. Reason and possible solution: You are setting options for each page individually. If you want to give many items the same setting, like a Pause of 3 seconds, multiselect all the pages/events you want first, using Shift-click and/or Ctrl-click, then open the Timing menu and set the pause—it will be applied to all the items you selected. If you are already in the Timing menu, you do not have to click Close for each item, then open the menu again. Just click on a new item and set its pause. Problem: I can’t get accented characters in ICDesigner, or the characters I see on the screen don’t match the keys I am typing. Reason and possible solution: You may not have the correct keyboard type selected for your system. In the Windows Control Panel folder, open the Keyboard Properties sheet and switch to the Language tab. Select the name of your country, or the country for which your keyboard was manufactured. You can test the layout you select in this dialog. If your keyboard layout is one that does not feature accented characters, such as the one used in the United States and the Netherlands, you can still type accented characters if you know their character numbers (ANSI keycodes). Refer to the character table in appendix C, and find the number for the character you need. Then hold down the left Alt key and type the character number with a leading zero, on the numeric keypad. When you release the Alt key, the character appears. For example, Alt + 0193 produces the accented capital “A” (Á). You can type any character this way, regardless of the current Keyboard Layout selection. 291 Appendix D: Possible problems and errors Errors Errors While working in the ICDesigner menus, or when loading scripts or after playing them, you will sometimes see ICDesigner Error dialogs. ICDesigner tries to tell you both what specifically went wrong (for example, a file was not found, or ICDesigner ran out of memory) and what ICDesigner was attempting to do when the error happened. If there were multiple errors (for example, several necessary files were not found when a script was played) the ICDesigner Error dialog provides a Next button so you can step through the errors in sequence. For multiple errors during a script load, you have the option Continue Quietly, which suppresses any subsequent error messages. If the problem was related to a particular file, ICDesigner gives the file name, usually as part of a full path. Thus you should find the error messages self-explanatory. If you need more information about why an error occurred, you can find helpful material by consulting the Index and Glossary of this guide. Startup error messages There are some errors that can occur when ICDesigner tries to load, and for some reason cannot finish loading. In most cases, an error that you see before the main ICDesigner program starts indicates that either the installation of the ICDesigner software was incomplete, or that a required folder or some files were somehow deleted or renamed after installation. If you see error messages at startup, the safest and easiest thing to do is to run the ICDesigner installation program again, so that you can be sure all the necessary files have been installed in the right locations. 292 Index A Accented characters, typing 291 Actions for buttons 57 Advanced features Available through ScalaScript 281 Animation Compression 216 MPEG 215 AnimGIF Options in publishing as 181 Publishing as 182 Viewer required 158 Apply Preset 69 Arrow keys, using with buttons 83 Attachment, publishing script as e-mail 176 AutoPlay? option 169 Third party components needed 169 AVI Choosing codecs for publishing 183 No sound in scripts published to 180 Publishing as 182 Viewer required 158 B Backdrop, buttons 53, 66 And presets 69 Stretching from Shift option 67 Backgrounds Changing under changing text 201 Backup log files 194 Billing EX 212 Bookmark Returning to 60 With Go To 110 Boolean function 262 Border, effect on button backdrops 67 Boxed Hit Area? 68 Branch menu Choosing loop type 102 Condition branches 99 Controlling script flow 100 Exiting sub-scripts 113 Expressions 90, 91 Functions 91 Go To 99, 107 Go To with bookmark 110 Go To, conditional 111 Operators 91 Repeat branches 99, 102 Show If Expression 101 Variables 90, 91 Branches, combining 100 Branching, advanced Using ScalaScript 282 Branching, levels 97 293 Index Browser Launched from button 60 Publishing script overview for 177 Required by Publish to HTML Slides 158 .BTN extension 78 Busy pointer image 84 Button states 54 Indicators 54 Buttons Adding sound 63 Adjusting hit area 68 Button backdrops 66 Converting to normal element 53 Creating a Go To 108 Creating advanced 79 Creating simple 47 Editing 78 Exporting 78 Face and backdrop 53 Go To 58 Hotkeys 61 Invisible buttons 70 Leave Bookmark? 59 Loading clips 67 Mouse pointers, alternate 64 Not available in some publish media 158 Predefined 70 Presets 69 Related options on Input menu 82 Select Action options 57 Setting variables 64 Shift? 67 Text as buttons 48 Types 52 Using keyboard to select 83 Using touch screen 82 Buttons menu - see Design Buttons menu C Case-sensitivity 258 CD audio, using 27–36 294 CD Eject 35 CD Next, Previous 36 CD Pan 36 CD Pause 36 CD Play 28 Time In 30 Time Out 32 Track In 29 Track Out 29 CD Play MSF 30 CD Read Contents 28, 36 CD Resume 36 CD sound, system variables 267 CD Stop 36 CD Sync 32 Relative to Track? 34 Sync Time 33 CD Volume 36 CD Wait? 36 CD-ROM drives, multi-unit 28 CD-ROM, publishing as stand-alone 167 Clipboard And programs outside ICDesigner 288 Copying schedule listing to 136 Pasting data from other applications 288 Clips as buttons 67 Codecs, DirectX AVI 183 Color depth, MPEG 220 Command: pop-up, Sound menu 14 Compression Animation 216 Publishing to AVI 182 Condition branches 99 Conditional Go To 111 Loops 106 Conditional function 263 Constants, defining 95 Content, linked 166 Control panels, list 17 Copy to Linked Content Folder 165 Index Copyrights 274 Currency, formatting variables as 261 Current indicator, scheduled event 125 Cursor, missing or off-screen 289 Custom Places Default Publish Location 162 D Date information, getting into variables 264 Decimal point, displaying 261 Default schedule times 127 Delete button, Input menu 85 Demo scripts 282 Design Buttons menu 46–82 Boxed Hit Area? 68 Button states 54 Go To 58, 59 Hotkeys 61 Image button 67 Leave Bookmark? 59 Pointer button 64 Sound button 63 Variable button 64 Design List menu Columns missing 290 DirectDraw, disabling for MPEG 220 DirectSound, disabling for MPEG 220 DirectX 8.1, installing to published CD 189 Display Mode MPEG EX 220 Optibase EX 223 Double Buffering, disabling for MPEG 221 Duration timing 290 E E-mail, publishing as 175 Embedded variables In log text 196 TextFile EX 198–199 Emergency message page 201 Encrypting scripts 185 Enter key, using with buttons 83 Entries, schedule 124 Errors 284, 292 Event: pop-up 132, 133 Events Defined in ScalaScript 284 Logging 196 Skipping with scheduling 117 .EXE file, for published script 167, 171 EXes Additional 192 And published scripts 157, 192 Billing 212 File I/O 240, 266 Installation required on playback systems 188 Launch 193 Log 194 MCI MPEG 215 Not installed 290 Optibase 222 Serial 202 TextFile 197 Version variables 264 Windows Scripting 236 Exit from Script 113 Exiting script with button 60 Expired indicator, scheduled event 126 Expressions 90 Creating 91 Displaying values 96 Evaluation functions 262 Extension Log file, changing 195 External variables 72 And sub-scripts 113 F Fade In Time 19 Fade Out Time 22 295 Index Fade Time 23 File I/O EX 240, 266 File, publishing as 170 Font Properties Extension 274 Fonts Including with published scripts 164 Licensing issues 164 FORMAT function 96 Format, video 182 Frame Rate, Publish as video 182 Frames Per Second, Publish as AnimGIF 184 Frames, CD audio 31 FTP publish Settings 163 FTP upload Web Component 174 Functions 91, 258 Boolean 262 Conditional 263 Expression evaluation 262 File I/O 266 Numeric functions 259 String 259 System functions 263 Type conversion 263 G Genlock, using 225 GIF files 271 Go To 99 Button example 48 Buttons 58 Buttons menu 58 Conditional 99 Reducing need for 112 Simple example 88 Using 107, 110 Go To: selector, Buttons menu 59 Granularity, multi-tile 246 296 Grouped pages And Go To branches 100 Scheduling 131, 136 Use with sounds 21 With TextFile EX 201 Grouping events 282 H Hit area, buttons 68 Hotkeys 61 HTML Slides, publishing as 177 HTML Template Page option 175 HTML wrapper code for script 172 HumanTouch, limitations 281 I IC.LOG file 194 ICPlayer software, EX support 157, 192 ICPlayer software, scheduling support 116 Image: button 67 In/Out Times, scheduling daily 132 Include Fonts? With published script 164 Include Wipes? With published script 165 Infinite repeat, sound 18 InfoChannel Network 158 Publishing to 160 InfoChannel Player 158 Input events Removing 85 Scope 85 Input menu 82–85 Busy Pointer Image button 84 Button Controls 82 Pointer Image: button 84 Slideshow controls 84 Internet service provider 173 Interrupt scheduling, events 121 Invisible buttons 70 Index iplay Installed by stand-alone CD 167 Required by certain publish media 158 ISP, using 173 J JScript scripts, running from ICDesigner 236 K Keyboard Language, setting 291 Solving problems 289 Using to select buttons 83 L Launch EX 193 Leave Bookmark? 100 Buttons 59 Leave Bookmark? button 109 Level selector Buttons menu 58 Go To 109 Licensing issues Art 273 Fonts 164 GIF and TIFF 271 Scala trademarks 274 Scripts and images 271 TrueType fonts 273 Line volume control 38 Link Positions? 69 Link Sizes? 68 Linked content Publishing scripts with 166 Use with TextFile EX 201 Linked Content folder Publishing to 165 Locked script, appearance 186 Locking scripts 185 Log EX 194 Log file, Billing EX 215 Log files 194 Retrieving 195 Log menu 196 LOG.Days variable 195 LOG.PlayerTag variable 195 Logical expression 262 Logical values 258 Looping Scripts, by default 117 Loops Branching example 103 Choosing branch type 102 Exiting 107 With Go To 110 Infinite 105 Loops option, sampled sound 18 M Main menu, columns missing 290 Main Script, InfoChannel Player 117 MAPI 176 MCI MPEG EX 215 MCI, and MPEG 220 Memory Improving script smoothness 289 System variable 265 Microphone volume control 38 Microsoft components required, including 189 MIDI Description 11 Using 24–27 MIDI files 24 MIDI Pause 26 MIDI Play 24 MIDI Resume 26 Minimized applications, launching 193 297 Index Mixer 12, 37–41 Pan 41 Sliders, enabling and disabling 38 System variables 267 Volume 38 Mouse buttons Slideshow controls 84 Mouse? option 82 MPEG Animation 215 MCI MPEG menu 217 MPG files 216 Optibase card 222 MPEG EX 215 Multi-tile Editor 242 Multi-tile illustrations 249 N Nested loops 107 Network Manager 158 New CD! 28 Next: indicator, scheduled event 125 NTSC video Options with Videoplex card 223 Numeric functions 259 O ON/OFF 258 Operators 91, 268 Optibase EX 222 Menu 226 Options dialog Working with EXes 192 Options, setting multiple 291 P Page Preview, ScalaPrint 144 Pages Grouping, use with sounds 21 Scheduling different types 118 298 Templates for TextFile EX 198 PAL 223 Pan Master 12, 41 Sampled sound 19 Password protection 185 Paste as Clip 288 Pause settings Priority of Wait? 20, 22 Periodic scheduling 119 Possible problems 137 Platform independent publish medium 178 Playback EX installation required 188 Microsoft components required 189 Player, InfoChannel 116 Diagnosing problems with log files 194 Software 158 Pointer Busy image 84 Changing Defaults 84 Design 83 For buttons 64 Pointer: selector 83 Possible problems 287 Columns 290 Keyboard 289 No accented characters 291 Pasting 288 Setting multiple options 291 Sound 287 Timing 290 Wipes 289 Predefined buttons 51, 70 Print icon 144 Printer Properties, choosing in ScalaPrint 152 Printing scripts 142 Problems, diagnosing with log files 194 Project Name:, published script 167, 171 Index Protecting published scripts 185 Publication, completing 185 Publish button 159 Publish folder Deleting contents 187 Publish Location Default 162 InfoChannel Network 161 Publish media E-mail 159 File 159 HTML Slides 159 Stand-alone CD 159 Video 159 Web Component 159 Publish Script dialog 159–188 Publish to Folder: 167, 171 Publish to Local or Shared Folder/FTP 161 Publishing 156–190 A script 185 As a file 170 As a Web component 172 As CD-ROM 167 As e-mail 175 As HTML slides 177 As single file 169, 171 As video 180 No sound events 180 Determining location 167, 171 Further steps to complete 188 Linked content 166 Media supported 156 To InfoChannel Network 160 Versus saving 157 Push buttons 52 Q Queue EX 228 R Radio buttons 53, 72 README file For published script 167, 171 Refresh rate, MPEG 220 Relative to Track? 34 Repeat branches 99 Repeat Until loop, example 106 Repeat While, Repeat Until 102 Repeat? Schedule interval 133 Resolution, MPEG 220 Return to Bookmark 110 Reducing need for 112 Using with buttons 59 Return value 258 RS-232 devices, controlling with Serial EX 202 S Sample Pan 23 Sample rate 10 Sample Stop 22 Sample Volume 23 Sample Wait 21 Sampled sound, using 17–24 Save in Editable Form 277 Saving scripts Instead of publishing 157 ScalaEX.txt file 266, 277 ScalaPrint 142 General panel options 145 Labeling panel options 149 Layout panel options 146 Margins panel options 151 Menu 144 Printer panel options 151 ScalaScript 277–285 Definition and use of 277 .SCB extension 165, 167, 171 299 Index Schedule column 122 Schedule menu 122–139 Schedules, pointless 125 Scheduling 116 As filter 120 Available only in Publish to IC Network 116 Avoiding problems 137 Daily time controls 132 Entries 124 Grouped pages 131 Groups and sub-scripts 136 Interrupt 133 Interrupt events 121 Periodic 119 Possible problems 137 Relation to timing 122 Removing entries 124 Repeating an interrupt event 133 Start and end dates 126 Types 119 Unavailable in some publish media 157 Verifying with log files 196 Weekly 130 Script advancement 84 Keyboard 84 Mouse 84 Script flow, with branches 100 Script Information box 160 Script language - see ScalaScript Script, publishing 185 Script.txt file 240 Scripts Editing using ScalaScript 280 Events skipped by scheduling 117 Logging events 196 Looping by default 117 Select state, button 56 Serial EX 202 Shift? option, Buttons menu 67 Show If Expression 99, 101 300 Simple MAPI (SMAPI) 176 Slides, HTML script overview 177 Slideshow Controls panel 84 Sound Adding to several pages or events in a row 43 Audio CDs 27 CD Eject 35 CD Next, Previous 36 CD Play event 28 CD Play MSF event 30 CD Read Contents 36 CD Sync 32 New CD! 28 Other CD events 36 CD audio multiple CD drives 28 Combining and adjusting 12 Controlling different types 15 Defining several sound events 42 Looping 18 MIDI files 24 Mixer 37–41 Not captured in Publish to Video 180 Options 13 Pan 19 Sample Pan 23 Sample Play 17 Sample Stop 22 Sample Volume 23 Sample Wait? 21 Solving potential problems 287 Sources 10–12 Audio CDs 12 MIDI files 11 Samples 10 System function 266 System variables 266 Volume control 19 Wait? 20, 23 With buttons 63 Index Sound button 15 Sound files not found 288 Sound menu 14 Sound samples 16-bit to 8-bit conversion 13 Start/End dates, scheduling 126 Startup Image for published scripts 168 String functions 259 Strings 258 Strings, converting to numbers 263 Sub-scripts Exiting 113 Publishing as linked content 165 Scheduling 136 Using 112 Sync Time 33 Synchronization, MPEG audio and video 225 System functions 263 System variables - see Variables T Technical support 7 Template Page option 175 Templates, TextFile EX 198 Text Entry Fields Not available in some publish media 158 Text Entry fields 73–77 TextFile EX 197 Creating files for use with 197 Turning page on and off with text file 201 Unavailable in some publish media 157, 192 TIFF files 271 Time information Getting into variables 264 Time variable, displaying 96 Time variables 265 Timing Relation to scheduling 122 Solving problems 290 Toggle buttons 52, 71 Touch Screen? option 82 Trademarks, Scala 274 Transitions, button state 63 Troubleshooting 280 TRUE/FALSE 258 TrueType fonts Licensing issues 273 Provided with InfoChannel 272 Publishing and distribution restrictions 164 Type conversion functions 263 Type: pop-up 52 U Uploading to Web server 173 URL Triggering with button 60 Web component script 173 V Variables 90, 265 Auto-update 96 Constants 95 Creating 91 Example 93 Deleting 95 Displaying values 96 Embedded in log text 196 Formatting 96 Sharing with Windows scripts 238 System 265 Toggle and radio buttons 71 Using 95 With interactive buttons 64 VBScript scripts, running from ICDesigner 236 Versions, system variables 264 Video Format 182 Video, publishing as 180 301 Index Videoplex MPEG card, using 222 Viewing schedules 135 Volume control Sound 12, 19, 38 Volume, set to zero 287 W Wait? 20, 23 MPEG animations 218, 227 Priority over Pause 20, 22 Sampled sounds 20 Wait? button and Wait event, distinction 21 Web authoring, including published script 172 Web browser, starting from within script 193 Web component, publishing as 172 Web page Setting up 173 Viewing from script 60 Web site, Scala 7, 192, 287 Week numbers, scheduling by 128 Weekly scheduling 130 Windows Scripting EX 236 Windows Scripting Host, languages supported 236 WinScript column 237 WinScript EX Unavailable in some publish media 157, 192 Wipes Including with published scripts 165 Solving smoothness problems 289 Word wrap, with TextFile EX 200 X XML scripts, running from ICDesigner 236 302