[11249.256922] usb 1-1.4: new full-speed USB device number 10 using dwc_otg [11249.365032] usb 1-1.4: New USB device found, idVendor=0d8c, idProduct=0139 [11249.365094] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [11249.365113] usb 1-1.4: Product: USB PnP Sound Device [11249.365130] usb 1-1.4: Manufacturer: C-Media Electronics Inc. [11249.400778] input: C-Media Electronics Inc. USB PnP Sound Device as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.3/0003:0D8C:0139.0007/input/input6 [11249.457789] hid-generic 0003:0D8C:0139.0007: input,hidraw3: USB HID v1.00 Device [C-Media Electronics Inc. USB PnP Sound Device] on usb-3f980000.usb-1.4/input3 #### #!/usr/bin/perl use strict; use warnings; use POSIX qw(log10); # input device my $input="/dev/dsp1"; # open filehandler open(my $fh, '<', $input) or die("ERROR open $input ($!)\n"); binmode($fh); # 8 bit # 8000 hertz my $cnt = 0; my $value = 0; my $lastts = 0; while(1) { if ($cnt == 8000) { # the amplitude >= 0 <= 1 my $amplitude=$value / $cnt / 255; # calculate dba = 20 * log10(amplitude / 2 * 10**-5) my $dba = 20 * log10($amplitude / 0.00002); print "Calculated dB(A): $dba\n"; $cnt = 0; $value = 0; } my $buffer; # read one byte read($fh, $buffer, 1); if(defined($buffer)) { # get an unsigned char my $v = unpack("C", $buffer); # add the read byte to the values $value+=$v; # print "Byte read: $v\n"; $cnt++; } } close($fh); #### root@node:/srv/perl# ./dba.pl Calculated dB(A): 87.9548395267721 Calculated dB(A): 87.9599922725626 Calculated dB(A): 87.9595239674196 Calculated dB(A): 87.9586213444603 Calculated dB(A): 87.9595239674196