/*************************************/ /* */ /* AUoH Progressive Door Prize Lotto */ /* */ /* Bleeps and bloops routines */ /* */ /* Michael D. Groshart - 16 Sep 89 */ /* */ /*************************************/ #include #include #include #define WAVELENGTH 2L #define AUDIO_PRI 127 #define VOLUME 64 #define HERTZ (3579545 / WAVELENGTH) #define CLOCK 50 struct IOAudio *ioaudio; struct MsgPort *audio_port; UBYTE allocation [] = { 1,8,2,4 }; UBYTE *waveform, audio_open; init_beep() { if (!(ioaudio = AllocMem((long)sizeof(struct IOAudio),MEMF_PUBLIC|MEMF_CLEAR))) quit(); if (!(audio_port = CreatePort("beep.port",NULL))) quit(); if (!(waveform = AllocMem(WAVELENGTH,MEMF_CHIP))) quit(); waveform[0] = 127; waveform[1] = -127; ioaudio->ioa_Request.io_Message.mn_Node.ln_Pri = AUDIO_PRI; ioaudio->ioa_Request.io_Message.mn_ReplyPort = audio_port; ioaudio->ioa_Data = allocation; ioaudio->ioa_Length = (long)sizeof(allocation); if (OpenDevice("audio.device",NULL,ioaudio,NULL)) quit(); ioaudio->ioa_Request.io_Command = CMD_WRITE; ioaudio->ioa_Request.io_Flags = ADIOF_PERVOL; ioaudio->ioa_Data = waveform; ioaudio->ioa_Length = WAVELENGTH; ioaudio->ioa_Period = HERTZ / 4096; ioaudio->ioa_Volume = 64; ioaudio->ioa_Cycles = 5L * 4096 / CLOCK; BeginIO(ioaudio); return (audio_open = 1); } beep(freq,ticks) int freq,ticks; { if (freq < 128) freq = 128; else if (freq > 8192) freq = 8192; if (!CheckIO(ioaudio)) { AbortIO(ioaudio); } Remove(ioaudio); if (ioaudio->ioa_Request.io_Error == 0) { ioaudio->ioa_Period = HERTZ / freq; ioaudio->ioa_Cycles = (long) ticks * freq / CLOCK; BeginIO(ioaudio); } } exit_beep() { if (!CheckIO(ioaudio)) { AbortIO(ioaudio); Remove(ioaudio); } if (audio_open) CloseDevice(ioaudio); if (waveform) FreeMem(waveform,WAVELENGTH); if (audio_port) DeletePort(audio_port); if (ioaudio) FreeMem(ioaudio,(long)sizeof(struct IOAudio)); }