Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Mar 2004 13:29:59 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        current@freebsd.org
Subject:   /etc/rc.d/mixer script for review..
Message-ID:  <200403101329.59106.jhb@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
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 
@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@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403101329.59106.jhb>