Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/Bus.pm view on Meta::CPAN
) unless $bn{$name};
my $bus = $bn{$name};
# modify bus and track settings to activate bus
$bus->set(rw => MON);
@args = (
rw => MON,
source_type => 'bus',
source_id => $name,
@args
);
$tn{$name} and pager_newline( qq($name: setting as mix track for bus "$name"));
my $track = $tn{$name}// add_track($name, width => 2);
$track->set( @args );
}
sub add_submix {
my ($name, $dest_id, $bus_type) = @_;
my $dest_type = dest_type( $dest_id );
# dest_type: soundcard | jack_client | loop | jack_port | jack_multi
logpkg(__FILE__,__LINE__,'debug',"name: $name, dest_type: $dest_type, dest_id: $dest_id");
if ($bn{$name} and (ref $bn{$name}) !~ /SendBus/){
Audio::Nama::throw($name,": bus name already in use. Aborting."), return;
}
if ($bn{$name}){
Audio::Nama::pager_newline( qq(monitor bus "$name" already exists. Updating with new tracks.) );
} else {
my @args = (
name => $name,
send_type => $dest_type,
send_id => $dest_id,
);
my $class = $bus_type eq 'cooked' ? 'Audio::Nama::SendBusCooked' : 'Audio::Nama::SendBusRaw';
my $bus = $class->new( @args );
$bus or carp("can't create bus!\n"), return;
}
map{ Audio::Nama::EarTrack->new( name => "$name\_$_", # BusName_TrackName
rw => MON,
target => $_,
group => $name,
width => 2,
hide => 1,
)
} $bn{Main}->tracks;
}
sub update_submix {
my $name = shift;
add_submix( $name,
$bn{$name}->send_id),
"dummy",
}
sub remove_submix_helper_tracks {
my $name = shift;
#say "got name: $name";
my @submixes = submixes();
#say "got submixes:", Dumper \@submixes;
for my $sm ( @submixes ){
my $to_remove = join '_', $sm->name, $name;
#say "to_remove: $to_remove";
local $quiet;
$quiet++;
for my $name ($sm->tracks) {
$tn{$name}->remove, last if $name eq $to_remove
}
}
}
sub submixes { grep { (ref $_) =~ /SendBusCooked/ } values %Audio::Nama::Bus::by_name }
}
}
1;
__END__
( run in 0.926 second using v1.01-cache-2.11-cpan-9581c071862 )