Audio-Nama
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Audio/Nama/CacheTrack.pm view on Meta::CPAN
# -------- CacheTrack ------
package Audio::Nama;
use Modern::Perl '2020';
use Storable 'dclone';
use Try::Tiny;
use Audio::Nama::Globals qw(:all);
# The $args hashref passed among the subroutines in this file
# has these fields:
# track
# additional_time
# processing_time
# original_version
# output_wav
# orig_volume
# orig_pan
# bus - we are caching a bus
sub cache_track { # launch subparts if conditions are met
logsub((caller(0))[3]);
my $args = {}; # to pass params to routines involved in caching
(my $track, $args->{additional_time}) = @_;
my $bus = $track->is_mixing;
my $obj; # track or bus
my $name = $track->name;
if( $track->off ){
my $bus = $track->is_mixer && ! $track->playback_version;
my $status = $bus ? MON : PLAY;
throw(qq(Cannot cache track "$name" with status OFF. Set to $status and try again));
return;
}
local $this_track;
$args->{track} = $track;
$args->{bus} = $bus;
$args->{additional_time} //= 0;
$args->{original_version} = $bus ? 0 : $track->playback_version;
$args->{cached_version} = $track->last + 1;
$args->{track_rw} = $track->rw;
$args->{main_rw} = $tn{Main}->rw;
$tn{Main}->set( rw => OFF);
$track->set( rw => REC);
my @to_cache = cachable($track) or throw("Nothing to cache, skipping."), return;
$obj = $bus ? 'bus' : 'track';
pager("$name: Preparing to cache $obj with ",join ', ',@to_cache);
if($bus)
{ generate_cache_bus_graph($args) }
else
{ generate_cache_track_graph($args) }
my $result = process_cache_graph($g);
if ( $result )
{
pager("generated graph");
deactivate_vol_pan($args);
cache_engine_run($args);
reactivate_vol_pan($args);
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.143 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )