Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/Engine.pm view on Meta::CPAN
if ( $current eq $old){
logpkg(__FILE__,__LINE__,'debug',"no change in setup");
return;
}
logpkg(__FILE__,__LINE__,'debug',"detected configuration change");
logpkg(__FILE__,__LINE__,'debug', diff(\$old, \$current));
}
$setup->{changed} = 0 ; # reset for next time
nama_cmd('show_tracks');
{ local $quiet = 1; stop_transport() }
trigger_rec_cleanup_hooks();
trigger_rec_setup_hooks();
$setup->{_old_rec_status} = {
map{$_->name => $_->rec_status } rec_hookable_tracks()
};
if ( $self->setup() ){
reset_latency_compensation() if $config->{opts}->{Q};
logpkg(__FILE__,__LINE__,'debug',"I generated a new setup");
{ local $quiet = 1; connect_transport() }
propagate_latency() if $config->{opts}->{Q} and $jack->{jackd_running};
show_status();
if ( Audio::Nama::ChainSetup::really_recording() )
{
$project->{playback_position} = 0
}
else
{
set_position($project->{playback_position}) if $project->{playback_position}
}
$self->start_transport('quiet') if $mode->eager
and ($mode->doodle or $mode->preview);
transport_status();
$ui->flash_ready;
1
}
}
} # end package
{
package Audio::Nama::LibEngine;
our $VERSION = 1.0;
use v5.36;
use Audio::Nama::Globals qw(:all);
use Audio::Nama::Log qw(logit);
our @ISA = 'Audio::Nama::Engine';
use Role::Tiny::With;
with 'Audio::Nama::EcasoundRun';
sub launch_ecasound_server {
my $self = shift;
Audio::Nama::pager_newline("Using Ecasound via Audio::Ecasound (libecasoundc)");
$self->{audio_ecasound} = Audio::Ecasound->new();
}
sub ecasound_iam{
#logsub((caller(0))[3]);
my $self = shift;
my $cmd = shift;
my $category = Audio::Nama::munge_category(shift());
logit(__LINE__,$category,'debug',"LibEcasound-ECI sent: $cmd");
my (@result) = $self->{audio_ecasound}->eci($cmd);
logit(__LINE__,$category, 'debug',"LibEcasound-ECI got: @result")
if $result[0] and not $cmd =~ /register/ and not $cmd =~ /int-cmd-list/;
my $errmsg = $self->{audio_ecasound}->errmsg();
if( $errmsg ){
Audio::Nama::throw("Ecasound error: $errmsg") if $errmsg =~ /in engine-status/;
$self->{audio_ecasound}->errmsg('');
}
"@result";
}
sub configure { Audio::Nama::NetEngine::configure(@_) }
} # end package
{
package Audio::Nama::MidiEngine;
use v5.36;
use SUPER;
use Audio::Nama::Globals qw($config %tn);
our $VERSION = 1.0;
our @ISA = 'Audio::Nama::Engine';
sub new {
my $self = super();
$self->{pids} = [ Audio::Nama::start_midish_process() ];
$self
}
sub configure { }
sub setup { Audio::Nama::reconfigure_midi() }
sub stop { Audio::Nama::stop_midi_transport() }
sub cleanup { Audio::Nama::midi_rec_cleanup() }
sub start { Audio::Nama::start_midi_transport() }
sub rec_tracks { grep {$_->rec} $_[0]->user_tracks }
sub system_tracks { $tn{$config->{midi_record_buffer}}}
sub user_tracks { grep { $_->name ne $config->{midi_record_buffer} } $_[0]->tracks }
sub play_tracks { grep {$_->play} $_[0]->user_tracks }
sub is_active { $_[0]->rec_tracks or $_[0]->play_tracks }
} # end package
1
__END__
( run in 0.763 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )