Subject: How many ProAudio Spectrum users are there?
To: None <current-users@NetBSD.ORG>
From: John F. Woods <jfw@funhouse.com>
List: current-users
Date: 07/19/1998 10:59:46
I'm between 75 and 50% finished coding my new native PAS driver, and I
wanted to ask other potential victims, er, users some usage questions.
If people knowledgable about the machine-independant audio
architecture could look over some of the questions, I'd appreciate
that, also.

First (of course) how many people on this list actually use a ProAudio
Spectrum, and what kind?  It turns out that there are two radically
different mixer chips, and I've focussed on implementing only the
MVA508 mixer, which leaves the PAS-Plus, CDPC, and Fusion CD boards
out in the cold.  The properly supported boards would be the PAS16,
PAS16Basic, and Fusion CD 16.  If there are people with the hideous
National mixer, I can restore the code to enable the SoundBlaster
emulation so they'd be no worse off than before, or maybe the old pas
driver could be simply renamed passb and kept around; perhaps someone
with a stronger stomach than I could implement the National mixer
functionality later.

Second, what kind of architectural model would you like to see in the
mixer interface?  Currently, I'm leaning toward directly mirroring the
PAS16 hardware, which differs from the wide variety of audio hardware
for which there are already drivers (all three designs) in that each
mixer (of two, one for input to the ADC, one for output to the
speakers) has a volume control for each mixer source (the SB16, by
contrast, has a volume control for each signal source and switches
which gate the signals into the input and/or output mixer).  This
would allow, for example, mixing together the CD sound input and the
mic (with the mic gain backed way down) to feed the ADC, while
monitoring the recorded signal plus a fresh copy of the mic (gain all
the way up since you love your own singing).  However, having two
independant volumes per device could be more confusing than it's
worth, having two copies of a signal in the output path (phased ever
so slightly different) is unlikely to be useful, and none of the
MediaVision mixer programs supports that model, implementing (in
software) a model more like the SoundBlaster mixer (one volume, either
play or record).  Any thoughts on which model is more useful?  (The
model I've implemented leads to slightly screwy behavior as I've coded
it right now: the "record source" mixer device (which presents a
bitmask of all selected record sources) can be read but not written
(just to be perverse, I have it return EROFS if you try to write it),
since it tests volumes and doesn't set switches.)

      Hmm, my model probably means that the ossaudio interface won't
      work right, so maybe it would be better to go with the
      alternative.
      It also occurs to me that if my understanding of the PAS is
      correct, the OSS/linux/FreeBSD pas driver is buggy:  when
      changing a source from play to record (or vice versa) the OSS
      driver sets the volume of the source in the new mixer, but
      doesn't zero the volume in the old mixer.  Perhaps the two
      mixers don't really have independant amplifiers?  I'll have to
      experiment...  (That's what I get for writing a driver without
      hardware documentation.)

One other audio-layer-model inspired question:  when switching between
play and record, the audio layer calls a function to turn on or off
the external speakers.  That means no record monitor on hardware which
doesn't have separate speaker and headphone outputs, like (for
example) the ProAudio Spectrum.  Should I forego record monitoring?
Should I forego disabling the speakers?  Or should I add an additional
software toggle to tell the driver whether the output should be
disabled (so that if you get it wrong and there's feedback, it's your
fault, not mine ;-) )?

Last question:  is there anyone with more than one PAS card?  Is there
any reason to knock myself out ensuring that one *can* have more than
one PAS card, when the DOS/Windows world apparently happily suffers
the restriction that Thou Shalt Have At Most One Audio Device?  The
PAS16 manual says you can have more than one PAS per system, but the
"Pro Audio Spectrum 16 rev. D FAQ" by MediaVision admits that no
application would use two sound cards, so I doubt they did much
testing of that configuration.  (Certainly not with MVSOUND.SYS...)

Currently I don't enable the SoundBlaster emulation; it doesn't seem
like it's all that useful without the DOS world's idea of "our program
runs on all sound hardware as long as it's a SoundBlaster".  I'm also
not sure about the interaction between the SoundBlaster emulation and
the PAS hardware (is there one PCM state machine, or two?), nor how to
make the interface to the audio layer work (is this one audio device,
or two?  If one, how do I choose which hardware should be making
noises at any given time?  If two, how do I make sure the system
configuration process probes for PAS hardware before probing for SB
hardware?), but if there's a lot of call for it, I can try.

Anyway, if I don't have to do any major additional features, I'm about
75% through coding (only DMA handling remains, ugh), and might have
something testable "soon" (but since it's a spare-time project, "soon"
might be early August...).

John Woods,
jfw@funhouse.com