Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/EffectChain.pm view on Meta::CPAN
! ($fx_chain->{attrib}->{$_} eq $args{$_})
#! ($_ ne 'version' and $args{$_} eq 1 and $fx_chain->$_)
} keys %args;
# if no non-matches, then all have matched,
# and we return true
! scalar @non_matches
} values %by_index;
warn("unique chain requested but multiple chains found. Skipping.\n"),
return if $unique and @found > 1;
if( wantarray() ){ $unique ? pop @found : sort{ $a->n cmp $b->n } @found }
else { scalar @found }
}
sub summary {
my $self = shift;
my @output;
push @output, " name: ".$self->name if $self->name;
push @output, " track name: ".$self->track_name if $self->track_name;
push @output,
map{
my $i = Audio::Nama::effect_index( $self->{ops_data}->{$_}->{type} );
my $name = " ". $fx_cache->{registry}->[$i]->{name};
} @{$_->ops_list};
map{ $_,"\n"} @output;
}
sub move_attributes {
my $ec_hash = shift;
map { $ec_hash->{attrib}->{$_} = delete $ec_hash->{$_} }
grep{ $ec_hash->{$_} }
@attributes;
}
sub DESTROY {}
}
{
#### Effect-chain and -profile routines
package Audio::Nama;
sub add_effect_chain {
my ($name, $track) = @_;
my ($ec) = Audio::Nama::EffectChain::find(
unique => 1,
user => 1,
name => $name,
);
if( $ec ){ $ec->add($Audio::Nama::this_track) }
else { Audio::Nama::throw("$name: effect chain not found") }
1;
}
sub new_effect_profile {
logsub((caller(0))[3]);
my ($bunch, $profile) = @_;
my @tracks = bunch_tracks($bunch);
Audio::Nama::pager( qq(effect profile "$profile" created for tracks: @tracks) );
map {
Audio::Nama::EffectChain->new(
profile => $profile,
user => 1,
global => 1,
track_name => $_,
ops_list => [ $tn{$_}->user_ops ],
inserts_data => $tn{$_}->inserts,
);
} @tracks;
}
sub delete_effect_profile {
logsub((caller(0))[3]);
my $name = shift;
Audio::Nama::pager( qq(deleting effect profile: $name) );
map{ $_->destroy} Audio::Nama::EffectChain::find( profile => $name );
}
sub apply_effect_profile { # overwriting current effects
logsub((caller(0))[3]);
my ($profile) = @_;
my @chains = Audio::Nama::EffectChain::find(profile => $profile);
# add missing tracks
map{ Audio::Nama::pager( "adding track $_" ); add_track($_) }
grep{ !$tn{$_} }
map{ $_->track_name } @chains;
# add effect chains
map{ $_->add } @chains;
}
sub is_effect_chain {
my $name = shift;
my ($fxc) = Audio::Nama::EffectChain::find(name => $name, unique => 1);
$fxc
}
}
1;
__END__
( run in 0.623 second using v1.01-cache-2.11-cpan-5a3173703d6 )