SoundList.mesa:
sound lists are descriptions of the silence/sound profiles of a ropeInterval and form part of the data structure behind a voice viewer
Ades, September 22, 1986 7:21:41 pm PDT
DIRECTORY
Rope USING [ROPE],
VoiceRope USING [IntervalSpecs],
VoiceViewers USING [VoiceViewerInfo, SoundInterval, SoundList];
SoundList: CEDAR DEFINITIONS = BEGIN
SoundListFromIntervalSpecs: PROC [intervalSpecs: VoiceRope.IntervalSpecs, lengthOfRopeInterval: INT] RETURNS [VoiceViewers.SoundList];
ExtractSoundList: PROC [voiceViewerInfo: VoiceViewers.VoiceViewerInfo, soundInterval: VoiceViewers.SoundInterval];
voiceViewerInfo contains the sound list for a complete rope. Use the interval specification from soundInterval.ropeInterval to create a new sound list for that interval, placing it in soundInterval.soundList
ReplaceSoundList: PROC [voiceViewerInfo: VoiceViewers.VoiceViewerInfo, cutStart: INT, cutLength: INT, replacement: VoiceViewers.SoundList];
voiceViewerInfo contains the sound list for a complete rope. Cut out the specified portion and at the cutting point insert the replacement soundlist.
SoundChars: PROC [viewerInfo: VoiceViewers.VoiceViewerInfo, skipChars: INT ← 0] RETURNS [soundRope: Rope.ROPENIL, remnant: INT];
produce the graphical representation of the SoundList within a VoiceViewerInfo record. The caller already has the first skipChars of the representation in his hand, so omit these from the returned rope. If the sound list does not exactly fill a whole number of characters, return as remnant the number of samples left over. Any marker characters indicated in the VoiceViewerInfo are inserted

LastSilenceInSoundList: PROC [soundList: VoiceViewers.SoundList, lengthGreaterThan: INT ← 0] RETURNS [startsAt: INT, lasts: INT ← -1];
all INTs are values in samples, as for the rest of this interface. lasts=-1 indicates that there are no silence intervals in the list of lengthGreaterThan that specified
END.