ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/PDL-Audio/audio.pd
(Generate patch)

Comparing PDL-Audio/audio.pd (file contents):
Revision 1.3 by root, Tue Dec 28 01:39:43 2004 UTC vs.
Revision 1.5 by root, Tue Dec 28 02:02:59 2004 UTC

1500 $beta = 2.5 unless defined $beta; 1500 $beta = 2.5 unless defined $beta;
1501 1501
1502 $size = $size->getdim(0) if ref $size; 1502 $size = $size->getdim(0) if ref $size;
1503 $size > 2 or barf "fft window size too small"; 1503 $size > 2 or barf "fft window size too small";
1504 1504
1505 my $midn = $size >> 1; 1505 my $midn = $size >> 1;
1506 my $midm1 = ($size-1) >> 1; 1506 my $midm1 = ($size-1) >> 1;
1507 my $midp1 = ($size+1) >> 1; 1507 my $midp1 = ($size+1) >> 1;
1508 my $dur = zeroes $size; 1508 my $dur = zeroes $size;
1509 my $sf = ($size-1)/$size; 1509 my $sf = ($size-1)/$size;
1510 %fft_window = ( 1510 %fft_window = (
1511 RECTANGULAR => sub { 1511 RECTANGULAR => sub {
1512 $dur->ones 1512 $dur->ones
1513 }, 1513 },
1671 1671
1672sub spectrum { 1672sub spectrum {
1673 my ($data, $norm, $window, $beta) = @_; 1673 my ($data, $norm, $window, $beta) = @_;
1674 my $len; 1674 my $len;
1675 if (defined $window) { 1675 if (defined $window) {
1676 $window = gen_fft_window ($data->getdim(0), $window, $beta) unless ref $window; 1676 $window = gen_fft_window ($data->getdim (0), $window, $beta) unless ref $window;
1677 $data = $data * $window; 1677 $data = $data * $window;
1678 $len = $window->getdim(0); 1678 $len = $window->getdim (0);
1679 } else { 1679 } else {
1680 $len = $data->getdim(0); 1680 $len = $data->getdim (0);
1681 } 1681 }
1682 $data = rfft ($data->slice("0:".($len-1))->sever)->slice(",0:".int($len/2))->Cr2p->slice("(0)"); 1682 $data = rfft (
1683 $data->slice ("0:" . ($len - 1))
1684 ->sever
1685 )
1686 ->slice (",0:" . int ($len / 2))
1687 ->PDL::Complex::Cr2p
1688 ->slice ("(0)");
1683 if ($norm == 1 || lc $norm eq "norm") { 1689 if ($norm == 1 || lc $norm eq "norm") {
1684 $data / max $data; 1690 $data / max $data;
1685 } elsif (($norm =~ /^[.0]+$/) || (lc $norm eq "db")) { 1691 } elsif (($norm =~ /^[.0]+$/) || (lc $norm eq "db")) {
1686 log (1e-37 + $data / max $data) * (20 / log 10); 1692 log (1e-37 + $data / max $data) * (20 / log 10);
1687 } else { 1693 } else {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines