#!/usr/bin/perl

$|=1;
while(<>){
    chop;
    push(@d, $_);
    if($#d > 3){
	$var = &variance(@d);
	shift(@d);
	if($var < 15){
	    &queue("waltz");
	}
	elsif($var < 100){
	    &queue("tango");
	}
	else{
	    &queue("nothing");
	}
    }
}

sub variance {
    @v = @_;
    $av = &avg(@v);
    $tot = 0;
    $n = $#v+1;
    foreach $v (@v){
	$tot += ($v-$av)**2;
    }
    return $tot/$n;
}

sub avg {
    @v = @_;
    $n = $#v+1;
    $tot = 0;
    foreach $v (@v){
	$tot+=$v;
    }
    return $tot/$n;
}

sub queue {
    $dance = shift;

    if($dance eq "waltz") {
	$waltz++;
	$tango--;
    }
    elsif($dance eq "tango"){
	$tango++;
	$waltz--;
    }
    elsif($dance eq "nothing"){
	$tango--;
	$waltz--;
    }
    $waltz = 0 if ($waltz < 0);
    $tango = 0 if ($tango < 0);

    print "$waltz $tango\n";

    if(($waltz >= 5) && ($waltz > $tango)){
	&play("waltz");
    }
    elsif(($waltz == 0) && ($playing eq "waltz")){
	&stop();
    }
    
    if(($tango >= 5) && ($tango > $waltz)){
	&play("tango");
    }
    elsif(($tango == 0) && ($playing eq "tango")){
	&stop();
    }

    if(($tango+$waltz) <= 1){
	&stop();
    }
}
&stop();

sub play {
    $song = shift;
    return if($playing eq $song);
    &stop();
    &forkandplay("$song.au");
    $playing = $song;
}

sub stop {
    if($playpid != 0){
	kill(1, $playpid);
    }
}

sub forkandplay {
    $songfile = shift;

    if($playpid=fork()){
	return;
    }
    else{
	exec("/usr/lib/oss/play",  "$songfile");
    }
}
