down went the gunner, a bullet was his fate.
down went the gunner, and then gunner’s mate.
up jumped the sky pilot, gave the boys a look.
and manned the gun himself as he layed aside his Book.
shoutin’ Praise the Lord and Pass the Ammunition…
I seem to play better with music. More observant, quicker response, more accurate aiming. It’s weird I do better with ambient stuff like Human Mesh Dance than slammin’ hardcore. I think it makes me less spastic and twitchy. Or maybe that’s the beers. Problem being that every audio app thinks it controls all the sound. You probably have the same audio problems I had… you set Teamspeak to the volume and mic sensitivity you want, then you adjust the ET sound in-game to balance with that. Adding music from an MP3/CD player app is yet another things to balance in, and finally the amplified volume that goes to your speakers or headphones. Here’s how I get it all to work so I can adjust each, on the fly, and in-game.
Teamspeak
TS2 is dead simple. Go to Settings/Key Settings, and make entries for at least Volume up 10%, Volume down 10%, and Output Mute. I use Control_L + Shift_L + a, z, and q respectively. Go nuts, make keymaps for everything if you want.
WOET
ET sound is pretty easy. You can exit to the menu to adjust it, manually type in the new \s_volume value on the console, or wire up a cfg to waste some RAM like:
// ((( chvol.cfg - exec from or paste into autoexec )))
//
// ((( volume ramp )))
set vol0 "s_volume 0.05; set chvol vstr vol1; echo ^jvolume ^i[:]^j========="
set vol1 "s_volume 0.15; set chvol vstr vol2; echo ^jvolume ^j=^i[:]^j========"
set vol2 "s_volume 0.25; set chvol vstr vol3; echo ^jvolume ^j==^i[:]^j======="
set vol3 "s_volume 0.35; set chvol vstr vol4; echo ^jvolume ^j===^i[:]^j======"
set vol4 "s_volume 0.45; set chvol vstr vol5; echo ^jvolume ^j====^i[:]^j====="
set vol5 "s_volume 0.55; set chvol vstr vol6; echo ^jvolume ^j=====^i[:]^j===="
set vol6 "s_volume 0.65; set chvol vstr vol7; echo ^jvolume ^j======^i[:]^j==="
set vol7 "s_volume 0.75; set chvol vstr vol8; echo ^jvolume ^j=======^i[:]^j=="
set vol8 "s_volume 0.85; set chvol vstr vol9; echo ^jvolume ^j========^i[:]^j="
set vol9 "s_volume 0.95; set chvol vstr vol0; echo ^jvolume ^j=========^i[:]"
// ((( default volume, next step up, and key )))
vstr vol6
set chvol "vstr vol7"
bind KP_5 "vstr chvol"
Now you can just tap that binded key to cycle the volume in 10% increments. (note that 0.95 will probably be heavily distorted on some sounds, man this is overdriven - try “\s_volume 50” for a real distortion treat!)
Music
Music? Of the main MP3 players - XMMS, mpg321, alsaplayer, xaudio, etc. Alsaplayer is the one I chose. GPL’d, Oggy, uses MAD for MP3. Plus it’s very responsive and has the lowest overhead when run headless. 5% max avg, 2% normally. For me.
All players have some deficiencies regarding gaming co-existence. Alsaplayer really blows at playlist creation. I’m guessing you have XMMS installed which makes short work of playlists. Probably have your lists already created anyway. (Andreas Gohr’s extm3u or Tom Chance’s playlist are two nifty perl scripts for playlists.)
I run alsaplayer headless since I’m running ET fullscreen anyway, and load in a playlist. It will start playing as soon as it loads, at at 100% volume. if you don’t want that add -l ## to set the initial volume and –stop to, well…
alsaplayer -i daemon -l 20 &
alsaplayer -E gibby_mix.m3u
Controlling it is simple, especially if you’ve used to xmmsctrl or cxmms before.
alsaplayer --help will tell you the important parts.
With a hotkey daemon like LinEAK or Hotkeys or XBindKeys (or funkeys but I’m not suggesting it.) That way you can control playback within the game using those nifty special keys your keyboard has. It’s great for hopping around your shuffled playlist while waiting on loading… screens and in limbo awaiting spawn. ET cannot use these non-standard keys very well. The game engine stops at F12, and while you can xmodmap -e them to usuable things like F22, ET won’t bind to that. You can remap them to duplicate other keys that are a bitch to reach while gaming, I have a row of buttons duplicating the keypad keys that control what class/weap I spawn with. (same deal for mouse buttons - you got 12? So xbindkeys can do nifty things.)
The only thing missing is alsaplayer’s volume cannot be set relative to the current position. That is, it couldn’t. I patched alsaplayer 0.99.75 so you can too, see below. -=OR=- if you don’t want to patch and recompile then use a batch like this one:
#!/bin/bash
# alsavol
# change this value as you like.
volumestep=3
if [ "$1" != "" ]; then
case $1 in
-u | --up )
set `alsaplayer --status | grep volume`
if [ $2 -gt $((100-$volumestep)) ]; then
alsaplayer --volume 100
else
alsaplayer --volume $(($2+$volumestep))
fi
;;
-d | --down )
set `alsaplayer --status | grep volume`
if [ $2 -lt $(($volumestep)) ]; then
alsaplayer --volume 1
else
alsaplayer --volume $(($2-$volumestep))
fi
;;
* )
echo "usage: alsavol [-u | --up] [-d | --down]"
exit 1
esac
else
echo "usage: alsavol [-u | --up] [-d | --down]"
exit 1
fi
exit 0
So for example using LinEAK as your hotkey daemon, your lineak.conf might look like:
--snip--
play = "alsaplayer --play"
previous = "alsaplayer --prev"
next = "alsaplayer --next"
stop = "alsaplayer --stop"
volumedown = "alsavol -d"
volumeup = "alsavol -u"
### or alsaplayer --volume -3 / +3 respectively, if you patch it. ###
search = "alsaplayer -E ~/playlists/ambientET.m3u"
shop = "alsaplayer -E ~/playlists/technoET.m3u"
travel = "alsaplayer -E ~/playlists/funkjazzET.m3u"
--snip--
Before you ask, XMMS’ CPU overhead is 2-4x more than alsaplayer depending on output plugin being used. This and the fact that it’s volume control works on the mixer device, either master or pcm channel. (only mixer apps should do that.) It also glitches some with ET running. One playback glitch in an hour of gaming is one too many. mpg321 decodes with MAD also, and is a great program, but it’s MP3 specific and it’s remote functions are targeted more to frontend interface design than for controlling directly.
Now, finally, I can control everything audio I need; TS2 up/down/mute, ET up/down, and full control of alsaplayer. All without leaving fullscreen ET. I HAVE CONTROL!! Sorry. Ok.
Here’s the diff for alsaplayer. Save this into a file in your alsaplayer-0.99.75/ source dir and run patch -p0 < (filename) then configure, make, and install. whoo.
--- app/Main.cpp 2003-07-21 12:38:48.000000000 -0400
+++ app-patched/Main.cpp 2003-07-22 01:34:50.000000000 -0400
@@ -288,7 +288,8 @@
" -e,--enqueue file(s) queue files in running alsaplayer
"
" -E,--replace file(s) clears and queues files in running alsaplayer
"
" --status get some information about session
"
- " --volume vol set software volume [0-100]
"
+ " --volume [-/+] vol set software volume [0-100]
"
+ " or relative to current position with -/+
"
" --start start playing
"
" --stop stop playing
"
" --pause pause/unpause playing
"
@@ -374,6 +375,7 @@
int use_freq = OUTPUT_RATE;
int use_vol = 100;
+ int get_vol = 0;
int use_session = 0;
int do_crossfade = 0;
int do_save = 1;
@@ -513,11 +515,28 @@
case 'Y':
do_remote_control = 1;
do_setvol = 1;
- use_vol = atoi(optarg);
- if (use_vol < 0 || use_vol > 100) {
- alsaplayer_error("volume out of range: using 100");
- use_vol = 100;
+ if (strncmp(optarg, "+", 1) == 0) { // Volume up relative
+ use_vol = ap_get_volume(use_session, &get_vol);
+ use_vol = atoi(optarg) + get_vol;
+ if (use_vol < 0 || use_vol > 100) {
+ alsaplayer_error("raise volume out of range: using 100");
+ use_vol = 100;
+ }
+ }
+ else if (strncmp(optarg, "-", 1) == 0) { // Volume down relative
+ use_vol = ap_get_volume(use_session, &get_vol);
+ use_vol = atoi(optarg) + get_vol;
+ if (use_vol < 0 || use_vol > 100) {
+ alsaplayer_error("lower volume out of range: using 0");
+ use_vol = 0;
+ }
}
+ else
+ use_vol = atoi(optarg);
+ if (use_vol < 0 || use_vol > 100) {
+ alsaplayer_error("volume out of range: using 100");
+ use_vol = 100;
+ }
break;
case 'n':
use_session = atoi(optarg);


Ok so 128s aren’t that old, but. Since you got a nifty card, here’s a tidbit: The rear channel outputs are masquerading as the Wave Surround slider in alsamixer. Scroll waaaaay over ---->