Sorry for replying to myself. Each playing sound has a cue counter associated with it. This counter can be either incremented or set explicitly by a sound file. The current cue value can always be read in the signal property of a sound object. Only if a script is associated with a sound object does the changeState thing happen (controlled by SCI code, not the interpreter) - QfG1, which I used as an example, does not, but checks the signal property directly in a doit method. So I thought a clarification was in order,