Subject: Re: PC-speaker driver working, now what ???
To: S|ren Schmidt <sos@login.dkuug.dk>
From: A Wizard of Earth C <terry@cs.weber.edu>
List: current-users
Date: 01/06/1994 13:22:41
> So I now have the driver that uses the built in speaker as an
> "real" audio device. It plays raw and .au format soundfiles with
> reasonable sound quality.
> 
> Now there are some questions that needs be adressed before it can be
> put easily into the kernel.
> 
> 1. We need a method that allows one to "steal" an interrupt
>    vector, and restore it again. 
>    This is because I need to reprogram TIMER1 to give me ~20000
>    interrupts pr sec. for the player, but ONLY when it plays as
>    this imposes _some_ load on the system...

Cranking the timer rate intermittently while the timer is used for
other things really isn't practical -- you'd pretty much need to crank
it all the time unless you pushed the other activity elsewhere (onto
another timer).

This is pretty much the timer code rewrite I occasionally suggest.
Since the internal timer has a much higher resoloution than the RTC
timers, but the resoloution at which it is used is lower than the RTC
timers, I once again suggest moving the main clock off to an RTC to
free up the internal time for one-shot use ...like running timer
events at a 20k rate for short periods of time as interval timer
events.

> 2. Should it be a device or a pseudo-device.

/dev/audio should be a real device.

> 3. If it should co-exist with the old speaker driver there is
>    some handshaking about the timers nessesary.

Actually, the old speaker driver could probably be a consumer of the
new driver (if you are talking about the note-playing driver).

> 4. We need a name for this driver, speaker is allready taken :-(

/dev/audio seems best.

> 5. What kind of device interface ? /dev/audio sun style or
>    something more esoteric...

/dev/audio, again.

> I would like some input on this, before I decide how it will be
> done.

The only thing you haven't asked that I think needs to be considered is
multiple audio interfaces being in the same machine contending with
each other for device names; the two ways to handle this are:

(1)	A config issue; you make /dev/audio0, /dev/audio1, ... and then
	symbolic link (based on install time configuration) /dev/audio
	to whatever is the primary device.

(2)	Have just one /dev/audio allowed, but runtime load the device
	driver itself (giving preference to a real sound card).  This
	technology is in NetBSD and nearly in FreeBSD for production
	use like this.


					Terry Lambert
					terry@cs.weber.edu
---
Any opinions in this posting are my own and not those of my present
or previous employers.

------------------------------------------------------------------------------