#!/usr/bin/perl # state machine: if (/\s*control\./) { ($min, $max) = (0, 0); } elsif (/\s*name '/) { # skip masks $ignore = /\s*name '.*(3D Control|mask|Exchange DAC|Output Jack)/; } elsif (!$ignore) { if (/s*comment.range '(\d+) - (\d+)'/) { ($min, $max) = ($1, $2); } elsif (/s*value/) { # enable switches (we should really blacklist sb live and the like): s/(value\w*\S*)\s* false/\1 true/; # set volume to 67%: my $val = int($max*0.6); s/(value\w*\S*)\s* 0/\1 $val/ } }