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]; ReplaceSoundList: PROC [voiceViewerInfo: VoiceViewers.VoiceViewerInfo, cutStart: INT, cutLength: INT, replacement: VoiceViewers.SoundList]; SoundChars: PROC [viewerInfo: VoiceViewers.VoiceViewerInfo, skipChars: INT _ 0] RETURNS [soundRope: Rope.ROPE _ NIL, remnant: INT]; END. Έ 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, April 22, 1986 2:04:00 pm PST 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 voiceViewerInfo contains the sound list for a complete rope. Cut out the specified portion and at the cutting point insert the replacement soundlist. 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 Κ˜šœ™™†Jšœ$™$—J™—šΟk ˜ J˜Jšœ œ˜ Jšœ œ-˜?J˜—JšΟn œœ œ˜$J˜JšžœœEœ˜†J˜šžœœ\˜rJšœΟ™Ο—J™šžœœ;œ œ'˜‹Jšœ•™•Jšœ™J˜—šž œœ7œœœœ œ˜ƒIcodešœ‡™‡K™K™—Jšœ˜—…—Έu