The default volume levels on my laptop (75:75) are rather loud when using headphones, and I found myself constantly having to pop up a terminal window to run mixer before listening to mp3's, etc. So, during a fit of boredom, I wrote a simple mixer rc.d script that adjusts mixer values based on an optional /etc/mixer.conf. It only works with /dev/mixer though and doesn't support multiple sound cards, mostly because I couldn't think of a sane but simple syntax for mixer.conf. The script and a sample mixer.conf are below. I'm not sure where to send this for review (moving the rc list to _at_FreeBSD.org would be helpful perhaps) so I'm splatting it here. ---- mixer #!/bin/sh - # # Copyright (c) 2004 The FreeBSD Project # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $FreeBSD$ # # PROVIDE: mixer # REQUIRE: LOGIN usbd # KEYWORD: FreeBSD . /etc/rc.subr name="mixer" stop_cmd=":" start_cmd="mixer_start" reload_cmd="mixer_start" extra_commands="reload" mixer_start() { # # Read in /etc/mixer.conf and set things accordingly # if [ -f /etc/mixer.conf -a -r /dev/mixer ]; then while read mixer comments do case ${mixer} in \#*|'') ;; *) dev=${mixer%=*} val=${mixer#*=} case ${val} in *:*) ;; *) val=${val}:${val} ;; esac if current_value=`mixer ${dev} 2>/dev/null`; then current_value=`echo ${current_value} |\ awk '{ print $7 }'` case ${current_value} in ${val}) ;; *) mixer ${dev} ${val} ;; esac else warn "mixer ${dev} does not exist." fi ;; esac done < /etc/mixer.conf fi } load_rc_config $name run_rc_command "$1" ---- mixer.conf # $FreeBSD$ # # Sound mixer settings. vol=40 # not too loud, please! pcm=50 -- John Baldwin <jhb_at_FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.orgReceived on Wed Mar 10 2004 - 09:28:31 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:46 UTC