Audio-Nama

 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 distribution
 view release on metacpan -  search on metacpan

( run in 1.143 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )