#!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; # Pi Constants use Math::Trig ':pi'; # sound interface use winmm; my $str; my $r; my $i = 0; my $c = 0; my %devs = (); my $numOfDevs = winmm::getNumOfWaveIn; printf "the computer found %d audio inputs\n", $numOfDevs; while ($i < $numOfDevs) { my $struct = ""; $r = winmm::getWaveInCap ($i, \$struct, 100); ($devs{$i}->{wMid}, $devs{$i}->{wPid}, $devs{$i}->{vDriverVersion}, $devs{$i}->{szPname}, $devs{$i}->{dwFormats}, $devs{$i}->{wChannels}, $devs{$i}->{wReserved1} ) = unpack("S S I Z32 L S S", $struct); print "Device number $i ==> "; print Dumper \$devs{$i}; print "\n"; $i+=1; } $i = 0; #my $dev = pack "i", 0; my $dev = 0; printf "open result %d\n", winmm::openInputDevice (\$dev, 0, # device number 1, # number of channels 44100, # sps 16, # bits per samples \&main, \&doProc ); print Dumper $dev; #printf "%d\n", unpack "i", $dev; printf "%d\n", $dev; #winmm::printError printf "close result %d\n", winmm::closeInputDevice(\$dev); sub doProc{ print Dumper \@_; } print "end\n";