Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/IO.pm view on Meta::CPAN
{
package Audio::Nama::IO::to_null;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub _device_id { 'null' }
}
{
package Audio::Nama::IO::from_rtnull;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub _device_id { 'rtnull' }
}
{
package Audio::Nama::IO::to_rtnull;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub _device_id { 'rtnull' }
}
{
package Audio::Nama::IO::from_wav;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub device_id {
my $self = shift;
my @modifiers;
push @modifiers, $self->playat_output if $self->playat_output;
push @modifiers, $self->select_output if $self->select_output;
push @modifiers, split " ", $self->modifiers if $self->modifiers;
push @modifiers, $self->full_path;
join(q[,],@modifiers);
}
sub _format { $Audio::Nama::setup->{wav_info}->{$_[0]->full_path}->{format} };
sub ecs_extra { $_[0]->mono_to_stereo}
sub client { 'system' if $jack->{jackd_running} }
sub ports { 'system:capture_1' }
}
{
package Audio::Nama::IO::to_wav;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub device_id { $_[0]->full_path }
sub _format_template { $config->{raw_to_disk_format} }
}
{
package Audio::Nama::IO::from_loop;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub new {
my $class = shift;
my %vals = @_;
$class->SUPER::new( %vals, device_id => "loop,$vals{endpoint}");
}
sub _format {
my $self = shift;
return if $Audio::Nama::config->{opts}->{T}; # XX don't break tests
Audio::Nama::signal_format($self->format_template, $config->{loop_chain_channel_width});
}
sub _format_template { $config->{cache_to_disk_format} }
}
{
package Audio::Nama::IO::to_loop;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO::from_loop';
}
{
package Audio::Nama::IO::from_soundcard;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub new {
shift; # throw away class
my $class = $io_class{Audio::Nama::IO::soundcard_input_type_string()};
$class->new(@_);
}
}
{
package Audio::Nama::IO::to_soundcard;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub new {
shift; # throw away class
my $class = $io_class{Audio::Nama::IO::soundcard_output_type_string()};
$class->new(@_);
}
}
{
package Audio::Nama::IO::to_jack_multi;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub client {
my $self = shift;
# say "to_jack_multi: target_id: ",$self->target_id;
# say "to_jack_multi: rectified target_id: ",Audio::Nama::IO::rectified($self->target_id);
Audio::Nama::IO::rectified($self->target_id)
}
sub device_id {
my $self = shift;
Audio::Nama::IO::jack_multi_route($self->ports)
}
}
{
package Audio::Nama::IO::from_jack_multi;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO::to_jack_multi';
sub ecs_extra { $_[0]->mono_to_stereo }
lib/Audio/Nama/IO.pm view on Meta::CPAN
sub ecs_extra { $_[0]->mono_to_stereo}
sub client { Audio::Nama::IO::rectified($_[0]->source_id) }
}
{
package Audio::Nama::IO::from_alsa_soundcard_device;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub ecs_extra { join ' ', $_[0]->rec_route, $_[0]->mono_to_stereo }
sub device_id { $config->{devices}->{$config->{alsa_capture_device}}->{ecasound_id} }
sub input_channel { $_[0]->source_id }
sub rec_route {
# works for mono/stereo only!
no warnings qw(uninitialized);
my $self = shift;
# needed only if input channel is greater than 1
return '' if ! $self->input_channel or $self->input_channel == 1;
my $route = "-chmove:" . $self->input_channel . ",1";
if ( $self->width == 2){
$route .= " -chmove:" . ($self->input_channel + 1) . ",2";
}
return $route;
}
}
{
package Audio::Nama::IO::to_alsa_soundcard_device;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub device_id { $config->{devices}->{$config->{alsa_playback_device}}{ecasound_id} }
sub ecs_extra {route($_[0]->width,$_[0]->output_channel) }
sub output_channel { $_[0]->send_id }
sub route2 {
my ($from, $to, $width) = @_;
}
sub route {
# routes signals (1..$width) to ($dest..$dest+$width-1 )
my ($width, $dest) = @_;
return '' if ! $dest or $dest == 1;
# print "route: width: $width, destination: $dest\n\n";
my $offset = $dest - 1;
my $route ;
for my $c ( map{$width - $_ + 1} 1..$width ) {
$route .= " -chmove:$c," . ( $c + $offset);
}
$route;
}
}
{
package Audio::Nama::IO::from_bus;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
sub new {
my $class = shift;
my %vals = @_;
print "from_bus: ", Audio::Nama::Dumper \%vals;
#$class->SUPER::new( %vals, device_id => "loop,$vals{endpoint}");
}
}
{
package Audio::Nama::IO::any;
use v5.36;
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::IO';
}
1;
__END__
( run in 1.150 second using v1.01-cache-2.11-cpan-8dfa8b56332 )