Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama.pm view on Meta::CPAN
# It will not be overwritten, so edit it as you like.
#
# Notes
#
# - The format of this file is YAML, preprocessed to allow
# comments.
#
# - A value _must_ be supplied for each 'leaf' field.
# For example "mixer_out_format: cd-stereo"
#
# - A value must _not_ be supplied for nodes, i.e.
# 'device:'. The value for 'device' is the entire indented
# data structure that follows in subsequent lines.
#
# - white space *is* significant. Two spaces indent is
# required for each sublevel.
#
# - You may use the tilde symbol '~' to represent a null (undef) value
# For example "execute_on_project_load: ~"
#
# - This file is distinct from .ecasoundrc (which in
lib/Audio/Nama/MuteSoloFade.pm view on Meta::CPAN
@{$fx->{muted}} = map{ $_->name } grep{ defined $_->old_vol_level} user_tracks() }
logpkg(__FILE__,__LINE__,'debug', join " ", "already muted:", sub{map{$_->name} @{$fx->{muted}}});
# convert bunches to tracks
my @names = map{ bunch_tracks($_) } @args;
# use hashes to store our list
my %to_mute;
my %not_mute;
# get dependent tracks
my @dependents = map{ $tn{$_}->bus_tree() } @names;
# store solo tracks and dependent tracks that we won't mute
map{ $not_mute{$_}++ } @names, @dependents;
# find all siblings tracks not in depends list
# - get buses list corresponding to our non-muting tracks
my %buses;
$buses{Main}++; # we always want Main
map{ $buses{$_}++ } # add to buses list
map { $tn{$_}->group } # corresponding bus (group) names
keys %not_mute; # tracks we want
# - get sibling tracks we want to mute
map{ $to_mute{$_}++ } # add to mute list
grep{ ! $not_mute{$_} } # those we *don't* want
map{ $bn{$_}->tracks } # tracks list
keys %buses; # buses list
# mute all tracks on our mute list (do we skip already muted tracks?)
do_many_tracks( { tracks => [ keys %to_mute ], method => 'mute' } );
# unmute all tracks on our wanted list
do_many_tracks( { tracks => [ keys %not_mute ], method => 'unmute' } );
$mode->{soloing} = 1;
}
sub nosolo {
# unmute all except in @{$fx->{muted}} list
# unmute all tracks
do_many_tracks( { tracks => [ map{$_->name} user_tracks() ], method => 'unmute' } );
( run in 0.330 second using v1.01-cache-2.11-cpan-4d4bc49f3ae )