|
|
|
|
||
|
DEFINITION MODULE SoundDriver; (******************************************************************* Module SoundDriver (Version 1.0) Copyright (c) 1986-2006 by Christian Pfister, Andreas Fischlin and ETH Zurich. Purpose Synthesize sounds. Remarks SetSoundVol not implemented. Programming o Design Christian Pfister 30/08/1986 o Implementation Christian Pfister 30/08/1986 Andreas Fischlin 28/06/1988 ETH Zurich Systems Ecology CHN E 35.1 Universitaetstrasse 16 8092 Zurich SWITZERLAND URLs: <mailto:RAMSES@env.ethz.ch> <http://www.sysecol.ethz.ch> <http://www.sysecol.ethz.ch/SimSoftware/RAMSES> Last revision of definition: 28/06/1988 AF *******************************************************************) FROM SYSTEM IMPORT ADDRESS; CONST swMode = -1; (* square-wave synthesizer *) ftMode = 1; (* four-tone synthesizer *) ffMode = 0; (* free-form synthesizer *) TYPE Ptr = ADDRESS; ProcPtr = Ptr; Byte = CHAR; Fixed = LONGINT; (* for square-wave synthesizer *) Tone = RECORD count: CARDINAL; (* 783360/frequency [Hz] *) amplitude: INTEGER; (* [0..255] *) duration: INTEGER; (* in ticks *) END; Tones = ARRAY [0..5000] OF Tone; SWSynthPtr = POINTER TO SWSynthRec; SWSynthRec = RECORD mode: INTEGER; triplets: Tones; END; (* for four-tone synthesizer *) FTSynthPtr = POINTER TO FTSynthRec; FTSndRecPtr = POINTER TO FTSoundRec; WavePtr = POINTER TO Wave; FTSynthRec = RECORD mode: INTEGER; sndRec: FTSndRecPtr; END; FTSoundRec = RECORD duration: INTEGER; sound1Rate: Fixed; sound1Phase: LONGINT; sound2Rate: Fixed; sound2Phase: LONGINT; sound3Rate: Fixed; sound3Phase: LONGINT; sound4Rate: Fixed; sound4Phase: LONGINT; sound1Wave: WavePtr; sound2Wave: WavePtr; sound3Wave: WavePtr; sound4Wave: WavePtr; END; Wave = ARRAY [0..255] OF Byte; PROCEDURE StartSound(synthRec: Ptr; numBytes: LONGINT; completionRtn: ProcPtr); PROCEDURE StopSound; PROCEDURE SoundDone(): BOOLEAN; PROCEDURE GetSoundVol(VAR level: INTEGER); PROCEDURE SetSoundVol(level: INTEGER); END SoundDriver.
|
||
|
|
|