package Hz; sub new { my $pck = shift; my $self = {}; $self->{'phase'} = shift || 0; $self->{'time'} = 0; $self->{'in'} = 1; $self->{'out'} = 0; bless $self,$pck; return($self); } sub in { my $self = shift; $self->{'in'} = shift; } sub out { my $self = shift; return($self->{'out'}); } sub pulse { my $self = shift; $self->{'time'} += $self->{'in'}; $self->{'out'} = sin($self->{'phase'}+3.14159*$self->{'time'}/22050); } 'end Hz';