Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama/Initializations.pm view on Meta::CPAN
my $delay = shift();
modify_effect($id,2,undef,$delay)
},
# this causes beeping during make test
# beep_command => 'beep -f 350 -l 700',
seek_end_margin =>10,
midi_record_buffer => 'midi_record',
midi_default_input_channel => 'keyboard',
ecasound_channel_ops => {map{$_,1} qw(chcopy chmove chorder chmix chmute)},
waveform_height => 200,
waveform_canvas_x => 2400,
waveform_canvas_y => 4800,
waveform_pixels_per_second => 10,
loop_chain_channel_width => 16,
ticks_per_quarter_note => 24,
}, 'Audio::Nama::Config';
{ package Audio::Nama::Config;
use Carp;
use Audio::Nama::Globals qw(:singletons);
use v5.36;
our @ISA = 'Audio::Nama::Object'; # for ->dump and ->as_hash methods
sub serialize_formats { split " ", $_[0]->{serialize_formats} }
sub hardware_latency {
no warnings 'uninitialized';
$config->{devices}->{$config->{alsa_capture_device}}{hardware_latency} || 0
}
sub buffersize {
package Audio::Nama;
Audio::Nama::ChainSetup::setup_requires_realtime()
? $config->{engine_buffersize}->{realtime}->{default}
: $config->{engine_buffersize}->{nonrealtime}->{default}
}
sub globals_realtime {
Audio::Nama::ChainSetup::setup_requires_realtime()
? $config->{ecasound_globals}->{realtime}
: $config->{ecasound_globals}->{nonrealtime}
}
} # end Audio::Nama::Config package
$prompt = "nama ('h' for help)> ";
$this_bus = 'Main';
$setup->{_old_snapshot} = {};
$setup->{_last_rec_tracks} = [];
$mastering->{track_names} = [ qw(Eq Low Mid High Boost) ];
init_wav_memoize() if $config->{memoize};
}
sub initialize_interfaces {
logsub((caller(0))[3]);
if ( $config->{opts}->{g}){
Audio::Nama::Graphical::initialize_tk() and $ui = Audio::Nama::Graphical->new()
or pager_newline( "Unable to load perl Tk module. Starting in console mode.")
}
if ( not defined $ui ){
$ui = Audio::Nama::Text->new();
$text->{loop} = IO::Async::Loop->new;
}
choose_sleep_routine();
$config->{want_logging} = initialize_logger($config->{opts}->{L});
logpkg(__FILE__,__LINE__,'debug', sub{"Command line options\n". json_out($config->{opts})});
read_config(global_config()); # from .namarc if we have one
# set sample rate is needed for prepare_static_effects_data() and initialize_project_data()
$config->{sample_rate} = $config->{opts}->{z} if $config->{opts}->{z};
logpkg(__FILE__,__LINE__,'debug',sub{"Config data\n".Dumper $config});
Audio::Nama::MidiEngine->new(name => $config->{midi_engine_name}) if $config->{use_midi};
initialize_ecasound_engine();
logpkg(__FILE__,__LINE__,'debug',"reading config file");
if ($config->{opts}->{d}){
pager("project_root $config->{opts}->{d} specified on command line\n");
$config->{root_dir} = $config->{opts}->{d};
}
if ($config->{opts}->{p}){
$config->{root_dir} = getcwd();
pager("placing all files in current working directory ($config->{root_dir})\n");
}
# skip initializations if user (test) supplies project
# directory
first_run() unless $config->{opts}->{d};
prepare_static_effects_data() unless $config->{opts}->{S};
setup_user_customization(); # depends on effect_index() in above
get_ecasound_iam_keywords();
load_keywords(); # for autocompletion
parse_midi_help();
$ui->init_gui;
$ui->transport_gui;
$ui->time_gui;
# fake JACK for testing environment
if( $config->{opts}->{J}){
parse_ports_list(get_data_section("fake_jack_lsp"));
parse_port_latency(get_data_section("fake_jack_latency"));
$jack->{jackd_running} = 1;
}
# periodically check if JACK is running, and get client/port/latency list
sleeper(0.2); # allow time for first polling
( run in 1.141 second using v1.01-cache-2.11-cpan-5a3173703d6 )