#!/usr/bin/perl -pi # state machine: if (/\s*control\./) { ($min, $max) = (0, 0); } elsif (/\s*name '/) { # skip masks and blacklist sb live and the like: $ignore = /\s*name '.*(3D Control|AC97 Playback Volume|Audigy Analog\/Digital Output Jack|External Amplifier Power Down|Exchange DAC|IEC958 input monitor|IEC958 Capture Monitor|IEC958 Playback Switch|mask|Mic Boost \(\+20dB\)|Mic Playback Switch|Output Jack|Surround down mix)/i; } elsif (!$ignore) { if (/s*comment.range '(\d+) - (\d+)'/) { ($min, $max) = ($1, $2); } elsif (/s*value/) { # enable switches: s/(value\w*\S*)\s* false/\1 true/; # set volume to 80%: my $val = int($max*0.8); s/(value\w*\S*)\s* \d+/\1 $val/; } }