<> <> <> <> <<>> <> <<>> DIRECTORY FinchSmarts USING [Procs], Rope USING [ROPE], VoiceRopeDB USING [Handle]; VoiceRope: CEDAR DEFINITIONS = { <<>> ROPE: TYPE ~ Rope.ROPE; <<>> <> <<>> VoiceRope: TYPE = REF VoiceRopeInterval; VoiceRopeInterval: TYPE = RECORD [ ropeID: ROPE, start: INT, length: INT ]; <<>> Interval: TYPE = RECORD[start, length: INT]; IntervalSpecs: TYPE = LIST OF Interval; <<>> <> Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ -- Used to be opaque, but changed for now procs: FinchSmarts.Procs_NIL, vdbHandle: VoiceRopeDB.Handle, Complain: PROC[complaint: ROPE] ]; Open: PROC [voiceRopeDBName: ROPE _ NIL, localName: ROPE _ NIL, Complain: PROC[complaint: ROPE] _ NIL] RETURNS [handle: Handle]; <> <> Record: PROC[handle: Handle_NIL] RETURNS [voiceRope: VoiceRope]; <> Play: PROC[handle: Handle_NIL, voiceRope: VoiceRope, queueIt: BOOL_TRUE, failOK: BOOL_FALSE, wait: BOOL_FALSE]; <> < play after all other record/playback requests are satisfied.>> < playing is optional; leave connection open if tune doesn't exist.>> < wait until things appear to be started properly, or have failed.>> Stop: PROC[handle: Handle _ NIL]; <> <<>> <> <> <<>> <> <<>> InterestClass: TYPE ~ ROPE; Retain: PROC [handle: Handle _ NIL, vr: VoiceRope, class: InterestClass, refID: ROPE, other: ROPE _ NIL]; <> Forget: PROC [handle: Handle _ NIL, vr: VoiceRope, class: InterestClass, refID: ROPE]; <> GetByInterest: PROC [handle: Handle _ NIL, class: InterestClass, refID: ROPE] RETURNS [voiceRope: VoiceRope]; <> <> <> Cat: PROC [handle: Handle _ NIL, vr1, vr2, vr3, vr4, vr5: VoiceRope _ NIL] RETURNS [new: VoiceRope]; <> Substr: PROC [handle: Handle _ NIL, vr: VoiceRope, start: INT _ 0, len: INT _ LAST[INT]] RETURNS [new: VoiceRope]; <> Replace: PROC [handle: Handle _ NIL, vr: VoiceRope, start: INT _ 0, len: INT _ LAST[INT], with: VoiceRope _ NIL] RETURNS [new: VoiceRope]; <> Length: PROC [handle: Handle _ NIL, vr: VoiceRope] RETURNS [len: INT]; <> <> DescribeRope: PROC [handle: Handle _ NIL, vr: VoiceRope, minSilence: INT _ -1] RETURNS [noise: IntervalSpecs]; <<>> <> }. <> <> <> <> <> <> <> <> <> <> <> <> <> <>