#!/usr/bin/perl

$|=1;
while(<>){
    chop;
    split;
    $d = $_[0];
    print "$d ";
    if($d < 200){
	&queue("waltz");
    }
    elsif(($d < 800) && ($d > 350)){
	&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);
    $waltz = 20 if ($waltz > 20);
    $tango = 20 if ($tango > 20);

    print STDERR "$waltz $tango\n";

    if(($waltz >= 10) && ($waltz > $tango)){
	&play("waltz");
    }
    elsif(($waltz == 0) && ($playing eq "waltz")){
	&stop();
    }
    
    if(($tango >= 10) && ($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("sox",  "$songfile", "-t", "au", "/dev/audio");
    }
}
