Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/TrackUtils.pm view on Meta::CPAN
package Audio::Nama;
use v5.36;
sub add_track {
logsub((caller(0))[3]);
my ($name, @params) = @_;
my %vals = (name => $name, @params);
my $class = $vals{class} // 'Audio::Nama::Track';
{ no warnings 'uninitialized';
logpkg(__FILE__,__LINE__,'debug', "name: $name, ch_r: $gui->{_chr}, ch_m: $gui->{_chm}");
}
Audio::Nama::throw("$name: track name already in use. Skipping."), return
if $tn{$name};
Audio::Nama::throw("$name: reserved track name. Skipping"), return
if grep $name eq $_, @{$mastering->{track_names}};
# in order to increment serially
Audio::Nama::ChainSetup::remove_temporary_tracks();
my $track = $class->new(%vals);
return if ! $track;
logpkg(__FILE__,__LINE__,'debug', "ref new track: ", ref $track);
$track->source($gui->{_chr}) if $gui->{_chr};
# $track->send($gui->{_chm}) if $gui->{_chm};
my $bus = $bn{$track->group};
$bus->set(rw => MON) unless $track->target; # not if is alias
# normal tracks set to config->new_track_rw
# defaulting to MON
# track aliases default to PLAY
$track->set(rw => $track->{target}
? PLAY
: $config->{new_track_rw} || MON );
$gui->{_track_name} = $gui->{_chm} = $gui->{_chr} = undef;
set_current_bus();
logpkg(__FILE__,__LINE__,'debug', "Added new track!\n", sub{$track->dump});
$track;
}
# create read-only track pointing at WAV files of specified
# name in current project
sub add_track_alias {
my ($name, $track) = @_;
my $target;
if ( $tn{$track} ){ $target = $track }
elsif ( $ti{$track} ){ $target = $ti{$track}->name }
add_track( $name, target => $target, width => $tn{$target}->width);
}
# create read-only track pointing at WAV files of specified
# track name in a different project
sub add_track_alias_project {
my ($name, $track, $project_name) = @_;
$project_name //= $Audio::Nama::project->{name};
my $dir = join_path(project_root(), $project_name, '.wav');
if ( -d $dir ){
if ( glob "$dir/$track*.wav"){
Audio::Nama::pager("Found target WAV files.\n");
my @params = (
target => $track,
project => $project_name,
);
( run in 1.143 second using v1.01-cache-2.11-cpan-ceb78f64989 )