<> <> <> <> <> <<>> <> <<>> DIRECTORY FinchSmarts USING [ ConvDesc ], Rope USING [ROPE], Thrush USING [ConversationID, NB, nullConvID], VoiceRopeServer USING [VoiceRope, VoiceRopeInterval, IntervalSpecs]; VoiceRope: CEDAR DEFINITIONS = { <<>> ROPE: TYPE ~ Rope.ROPE; <<>> <> <<>> VoiceRope: TYPE = VoiceRopeServer.VoiceRope; VoiceRopeInterval: TYPE = VoiceRopeServer.VoiceRopeInterval; <> <> <> <> <> <<];>> <<>> IntervalSpecs: TYPE = VoiceRopeServer.IntervalSpecs; <> <> <<>> <> Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ -- Used to be opaque, but changed for now <> <> 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, wait: BOOL_FALSE]; <> < play after all other record/playback requests are satisfied.>> < wait until things appear to be started properly, or have failed.>> Stop: PROC[handle: Handle_NIL]; <> <<>> <> <<>> NB: TYPE = Thrush.NB; RequestID: TYPE = CARD; nullRequestID: RequestID = 0; ConversationID: TYPE = Thrush.ConversationID; nullConvID: ConversationID = Thrush.nullConvID; NewRequestID: PROC RETURNS [RequestID]; RecordNB: PROC[handle: Handle_NIL, requestID: RequestID_nullRequestID, convID: ConversationID_nullConvID, clientData: REF_NIL, selfElseOther: BOOL_TRUE] RETURNS [nb: NB, voiceRope: VoiceRope, newConvID: ConversationID]; <> <> <<>> PlayNB: PROC[handle: Handle_NIL, voiceRope: VoiceRope, queueIt: BOOL_TRUE, wait: BOOL_FALSE, requestID: RequestID_nullRequestID, convID: ConversationID_nullConvID, clientData: REF_NIL] RETURNS [nb: NB, newConvID: ConversationID]; <> < play after all other record/playback requests are satisfied.>> < wait until things appear to be started properly, or have failed.>> StopNB: PROC[handle: Handle_NIL, convID: ConversationID_nullConvID] RETURNS [nb: NB]; <> <<>> PauseNB: PROC[handle:Handle_NIL, convID:ConversationID_nullConvID] RETURNS [nb: NB]; <> ResumeNB:PROC[handle:Handle_NIL,convID:ConversationID_nullConvID] RETURNS [nb:NB]; <> GetClientData: PROC[handle: Handle_NIL, cDesc: FinchSmarts.ConvDesc] RETURNS[clientData: REF]; <> <> <> <<>> <> <<>> 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]; <<>> <> }. <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <<>>