[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