Interface 2
Prev | Chapter 3. Usage | Next

## Interface 2

FOMUS also provides several functions that are wrappers to the first method described above. They create and store the objects internally so the user doesn't have to maintain lists of objects and data. The functions are:

`(FOMUS-INIT &key `setting` `value` ...)`

`(FOMUS-NEWPART `partid` &key `slot` `value` ...)`

`(FOMUS-NEWTIMESIG `partids` &key `slot` `value` ...)`

`(FOMUS-NEWNOTE `partid` &key `slot` `value` ...)`

`(FOMUS-NEWREST `partid` &key `slot` `value` ...)`

`(FOMUS-NEWMARK `partid` &key `slot` `value` ...)`

`(FOMUS-EXEC &key `setting` `value` ...)`

The user first calls `FOMUS-INIT`, which initializes settings and insures that FOMUS is ready to accept new data. Setting values may be passed to this function in exactly the same way as the `FOMUS` function above, though it isn't necessary in this case to include `GLOBAL`, `PARTS` or `EVENTS`. The functions `FOMUS-NEWPART`, `FOMUS-NEWTIMESIG`, `FOMUS-NEWNOTE`, `FOMUS-NEWREST` and `FOMUS-NEWMARK` are then used to create and store all of the objects that are normally included in the `GLOBAL`, `PARTS` and `EVENTS` settings. The required `partid` or `partids` arguments correspond directly to the slots of the corresponding objects (see the documentation for each of these in Objects for more information). The `PARTID` argument to `FOMUS-NEWPART` must be unique or objects that use them to refer to parts will refer to more than one. The `slot` keywords can be any of the constructor slot keywords in the corresponding object, and the `value` argument is the appropriate value for that slot. Internally, FOMUS stores all `TIMESIG` objects in the `GLOBAL` setting list, all `PART` objects in the `PARTS` list and all other objects (`NOTE`, `REST` and `MARK`) in the `EVENTS` list. This means that the user may specify `NIL` or a list of part IDs in the `PARTID`/`PARTIDS` slots of `TIMESIG` and `MARK` objects. When the user is finished calling the `FOMUS-NEW` functions, the last thing to do is call `FOMUS-EXEC`. This again accepts setting keywords and values (overriding any previous setting values) and passes all information to the `FOMUS` function which does the rest of the processing. After `FOMUS-EXEC` is called, all internal data is reinitialized as if `FOMUS-INIT` were called with no arguments.

Following are the interface 2 equivalents to some of the examples above:

Example 3.5. FOMUS Usage 5

    (To be completed.)

Example 3.6. FOMUS Usage 6

    (To be completed.)

Prev | Up | Next
Interface 1 | Home | Text File Interface