Okay, so I've done the work on this, and I've decided that given 
"mixerctl" was formerly Evolving (and unfortunately has name conflicts 
with similar, yet different, programs from other FOSS), and that it 
offers zero useful functionality in the Boomer era, that its best to 
just EOF.

So, here is the new spec:

1) EOF mixerctl.
2) Deliver "audioctl" which provides full capabilities, as 
/usr/bin/audioctl.  The following man page has all the latest updates, 
and accurately reflects the code (other than an undocumented "help" 
command which only outputs a simple usage summary).  Note that the 
design of the interface is modeled somewhat loosely on dladm, zpool, 
zoneadm, and other newer commands-that-have-subcommands:


User Commands                          audioctl(1)



NAME
    audioctl -    audio mixer control command line application

SYNOPSIS

    audioctl list-devices

    audioctl show-device [-v] [-d device ]

    audioctl show-control [-v] [-d device] [control ...]

    audioctl set-control [-v] [-d device] control value

    audioctl save-controls [-d device] [-f] file

    audioctl load-controls [-d device] file

DESCRIPTION
    The audioctl command is used to control various features  of
    the audio mixer and to get    information about the audio mixer
    and the audio device.

    The audioctl command operates on the following data types:

   device
       An audio device, such as "audiohd#0".   The subcommands
       that accept this do so as an argument to an option -d.
       If not supplied, then the default audio device is assumed.
       Any device node associated with an audio device will work
       as well, such as /dev/sound/0, /dev/dsp1, or /dev/audio.

   control
       A mixer control name, such as "volume".

   value
       The value of a control.  The specific format depends on
       the type of control.  Monophonic values usually use a single
       whole number between 0 and 100, inclusive.  Stereo values
       use a pair of such numbers (representing right and left
       channels.)  Boolean values indicate either "on" or "off".
       Enumerations take a single value of one or more names.

   file
       An ASCII text file of control settings.

 Options:
    Each subcommand has its own set of options that it takes.
    However, some subcommands support the special flag -v, which
    indicates a request for more verbose output.

SUBCOMMANDS
    The following subcommands are supported:

    audioctl list-devices

   List all the audio devices on the system.

    audioctl show-device [-v] [-d device]

   Display general information about a device.

    audioctl show-control [-v] [-d device] [control ...]

   Display the control setting values for the device.  The named
   controls are displayed.  If no control names are provided, then
   all control values are displayed.

    audioctl set-control [-v] [-d device] control value

   Changes the value of a control to the supplied value.

    audioctl save-controls [-f] [-d device] file

   Saves the current state of all mixer control values to the named
   file.  The command will abort safely if the file already exists,
   unless -f is supplied.

    audioctl load-controls [-d device] file

   Restores previously saved state in the named file for all mixer
   controls.


ENVIRONMENT VARIABLES
    AUDIODEV     If the    -d and -a options are not specified,  the
        AUDIODEV  environment    variable is consulted. If
        set, AUDIODEV contains    the full path name of the
        user's     default  audio    device.

FILES
    /dev/audioctl /dev/sound/{0...n}ctl

ATTRIBUTES
    See attributes(5) for descriptions    of the    following  attri-
    butes:
    ____________________________________________________________
   |        ATTRIBUTE TYPE       |      ATTRIBUTE VALUE        |
   |_____________________________|_____________________________|
   | Architecture                | SPARC, x86                  |
   |_____________________________|_____________________________|
   | Availability                | SUNWauda                    |
   |_____________________________|_____________________________|
   | Stability    Level          | See notes                   |
   |_____________________________|_____________________________|


NOTES
   The audioctl command and its subcommands are Committed.
   The human readable output from this command is Not An Interface.
   The device names, control names, and values are Uncommitted.
   The format of the state files used by the save-controls and load-controls
   subcommands is Committed Private.

SEE ALSO
    audioconvert(1),  audioplay(1),   audiorecord(1),     open(2),
    attributes(5)


Garrett D'Amore wrote:
> Edward Pilatowicz wrote:
>> On Mon, Nov 16, 2009 at 11:02:34AM -0800, Garrett D'Amore wrote:
>>  
>>> Edward Pilatowicz wrote:
>>>    
>>>> so i assume that in the man page below you'll be doing
>>>> s/mixerctl/audioctl/.  if that's the case then i wonder about the need
>>>> for AUDIODEV support.  AUDIODEV normally points to SADA style audio
>>>> devices, right?  but since your introducting a new audioctl tool,
>>>> shouldn't it be designed to work on boomer audio devices, not SADA
>>>> devices?
>>>>       
>>> Yes, it should have the "s/mixerctl/audioctl/".  I am going to have
>>> another set of updates, as since I've made changes to the code I've
>>> altered a few more things.
>>>
>>> As far as $AUDIODEV goes, the code actually will work with either a
>>> SADA device node or a Boomer node.  The underlying code only
>>> operates on Boomer nodes, but it operates by finding the associated
>>> "mixer" device node for the device file you supply.
>>>
>>> So it will work to supply any of:
>>>
>>>    /dev/audio
>>>    /dev/audioctl
>>>    /dev/sound/0
>>>    /dev/dsp
>>>    /dev/dsp1
>>>    /dev/sound/audiohd:0
>>>    /dev/sound/audiohd:0dsp
>>>    /dev/sound/audiohd:0mixer
>>>
>>> The goal here is that end-users should not need to be aware of SADA
>>> vs. Boomer.  Those are API details.
>>>
>>>     
>>
>> ok.  but for familiarity sake (since those are common to all OSS based
>> systems), and to facilitate any possible future removal of SADA
>> compatibility, shouldn't we only document the new boomer interfaces?  in
>> this case the device path doesn't seem like an API detail.  the user as
>> to set AUDIODEV to something.
>>
>> since mixerctl(1) is SADA specific and legacy, it's ok for it to talk
>> about /dev/audio* paths, but shouldn't any newish, non-legacy
>> documentation (say audioctl(1)) and apis always refer to boomer/oss
>> device paths?  (note that i'm not talking about the implementation here,
>> just the documentation that end users see.)
>>
>> ed
>>   
> One more thought:  legacy Sun audio(7I) isn't going away.  Its a 
> committed interface.  I'm not worried about keeping it around forever.
>
> SADA != Sun audio(7I).
>
>    - Garrett

Reply via email to