States in AFL

[Next] [Up] [Previous]
Next: Synchronization Up: Combining different spaces Previous: Combining different spaces

States in AFL

Conceptually, AFL maintains one local and one global state in program variables *current-total-audio-state* and *global-total-audio-state*. Since it is easier to think of speech and non-speech audio separately, we treat these as named component subspaces with their own state variables. Variables *global-speech-state* and *current-speech-state* are really components of these states, so that the fully qualified references to these variables are




The names of these fields provide the external interface to the individual components.

We now describe how components are combined to form the total audio space. The AFL block is now extended to work in the total audio space; it introduces a local variable *current-[tex2html_wrap5596]* for each of the components.

Assignment statements




assign the value of expression point to AFL state variables. The type of point determines the component state variable that will be set. Hence, if there are several component spaces of a given type, e.g., several speech components, the fully qualified name of the state variable must also be given, as in


AFL assignment statements are implemented as generic functions. The space-specific methods on the assignment statements perform the following steps:

  1. Synchronize actions as necessary for this component space.
  2. Set the variable that encapsulates the state of this component space to the value of the expression that is supplied.
  3. Call the hardware specific set-state function.

Adding a component space requires some work but can be done easily by someone familiar with the implementation. To add a new component space:

  1. Define the space and build the underlying implementation.
  2. Define the external interface by providing state variables.
  3. Provide the space-specific methods on the assignment statements.

TV Raman
Thu Mar 9 20:10:41 EST 1995