Audio-Nama
view release on metacpan or search on metacpan
lib/Audio/Nama.pm view on Meta::CPAN
use Module::Load;
use Parse::RecDescent;
use Storable qw(thaw);
use Term::ReadLine;
use Text::Diff;
use Text::Format;
use Tickit::Async;
use Tickit::Widget::Scroller::Item::Text;
### We use our versions of these modules
use Audio::Nama::Entry; # modified Tickit::Widget::Entry to bind printable keys
use Audio::Nama::Completion; # modified Tickit::Widget::Entry::Plugin::Completion for directory handling
use Audio::Nama::Console; # modified Tickit::Widget::Console to avoid redefine warnings
use Tie::Simple;
use Try::Tiny;
use Path::Tiny;
# use File::HomeDir;# Assign.pm
# use File::Slurp; # several
# use List::Util; # Fade.pm
# use List::MoreUtils; # Effects.pm
# use Time::HiRes; # automatically detected
# use Tk; # loaded conditionally
########## Nama modules ###########
#
# Note that :: in the *.p source files is expanded by # SKIP_PREPROC
# preprocessing to Audio::Nama in the generated *.pm files. # SKIP_PREPROC
# ::Assign becomes Audio::Nama::Assign # SKIP_PREPROC
#
# These modules import functions and variables
#
use Audio::Nama::Assign qw(:all);
use Audio::Nama::Globals qw(:all);
use Audio::Nama::Util qw(:all);
# Import the two user-interface classes
use Audio::Nama::Text;
# use Audio::Nama::Graphical; # not right now
# They are descendents of a base class we define in the root namespace
our @ISA; # no ancestors
use Audio::Nama::Object qw(); # based on Object::Tiny
sub hello {"superclass hello"}
sub new { my $class = shift; return bless {@_}, $class }
# The singleton $ui belongs to either the Audio::Nama::Text or Audio::Nama::Graphical class
# depending on command line flags (-t or -g).
# This (along with the availability of Tk)
# determines whether the GUI comes up. The Text UI
# is *always* available in the terminal that launched
# Nama.
# How is $ui->init_gui interpreted? If $ui belongs to class
# Audio::Nama::Text, Nama finds a no-op init_gui() stub in package Audio::Nama::Text
# and does nothing.
# If $ui belongs to class Audio::Nama::Graphical, Nama looks for
# init_gui() in package Audio::Nama::Graphical, finds nothing, so goes to
# look in the base class. All graphical methods (found in
# Graphical_subs.pl) are defined in the root namespace so they can
# call Nama core methods without a package prefix.
######## Nama classes ########
use Audio::Nama::Track;
use Audio::Nama::Bus;
use Audio::Nama::Sequence;
use Audio::Nama::Mark;
use Audio::Nama::IO;
use Audio::Nama::Insert;
use Audio::Nama::Fade;
use Audio::Nama::Edit;
use Audio::Nama::EffectChain;
use Audio::Nama::Lat;
use Audio::Nama::Engine;
use Audio::Nama::Waveform;
####### Nama Roles - loaded by another class
# use Audio::Nama::Wav;
####### Nama subroutines ######
#
# The following modules serve only to define and segregate subroutines.
# They occupy the root namespace (except Audio::Nama::ChainSetup)
# and do not execute any code when use'd.
use Audio::Nama::AnalyseLV2;
use Audio::Nama::Initializations ();
use Audio::Nama::Options ();
use Audio::Nama::Config ();
use Audio::Nama::Custom ();
use Audio::Nama::Terminal ();
use Audio::Nama::Grammar ();
use Audio::Nama::Help ();
use Audio::Nama::Project ();
use Audio::Nama::Persistence ();
use Audio::Nama::Git;
use Audio::Nama::ChainSetup (); # separate namespace
use Audio::Nama::Graph ();
use Audio::Nama::Modes ();
use Audio::Nama::Mix ();
use Audio::Nama::Memoize ();
use Audio::Nama::StatusSnapshot ();
use Audio::Nama::EngineSetup ();
use Audio::Nama::EffectsRegistry ();
use Audio::Nama::Effect q(:all);
use Audio::Nama::MuteSoloFade ();
use Audio::Nama::Jack ();
use Audio::Nama::Regions ();
use Audio::Nama::CacheTrack ();
use Audio::Nama::Bunch ();
use Audio::Nama::Wavinfo ();
( run in 1.438 second using v1.01-cache-2.11-cpan-97f6503c9c8 )