in reply to Re^2: mysterious hardware/OSS/Gtk interaction?
in thread mysterious hardware/OSS/Gtk interaction?

Good! I added Audio::DSP, and it works, provided that you give it a specfic file to read.
#!/usr/bin/perl use strict; use warnings; use Gtk2 '-init'; use IO::File; use Audio::DSP; $|=1; my $mw = Gtk2::Window->new('toplevel'); my $t = Gtk2::Table->new(1, 2, 0); $mw->add($t); my $label = Gtk2::Label->new('Example'); $t->attach_defaults($label, 0, 1, 0, 1); $label->show; my $button = Gtk2::Button->new('foo'); $t->attach_defaults($button, 0, 1, 1, 2); $button->signal_connect( 'clicked' => sub { exit } ); $button->show; $mw->show_all; my $dsp = new IO::File("</dev/dsp"); my $event_source_tag = Glib::IO->add_watch( fileno($dsp), 'in', sub { my ($buf, $chan, $fmt, $rate) = (4096, 1, 8, 8192); $dsp = new Audio::DSP(buffer => $buf, channels => $chan, format => $fmt, rate => $rate); my $seconds = 5; my $length = ($chan * $fmt * $rate * $seconds) / 8; $dsp->init() || die $dsp->errstr(); for (my $i = 0; $i < $length; $i += $buf) { #records $dsp->read() || die $dsp->errstr(); for (;;) { #playback $dsp->write() || last; } $dsp->close(); } }); Gtk2->main; 0;

Replies are listed 'Best First'.
Re^4: mysterious hardware/OSS/Gtk interaction?
by bcrowell2 (Friar) on Mar 12, 2011 at 00:13 UTC

    Ah, thanks for showing me how to do it with Audio::DSP. OSS emulation is getting to be a pain on linux.

    I switched to the fork-and-disk-buffer design, and it seems to work fine on two test machines. Performance was fine with locks and semaphores, so I didn't need to learn Sys V IPC. For anyone who's interested, the code is here: http://www.lightandmatter.com/scope/scope.html (Actually, if you could test it for me on your hardware, that could be helpful!)

    Thanks, folks, for the help!!!

    -Ben