Provided by: nama_1.216-1_all bug

NAME

       Nama - multitrack recorder and digital audio workstation

SYNOPSIS

       nama [options] [project-name]

DESCRIPTION

       A multitrack audio application for recording, effects processing, editing, mixing,
       mastering and live performance. It can also perform general-purpose audio processing, such
       as 5.1 to stereo conversion. Nama uses Ecasound as the audio processing engine.

   Audio projects
       Projects in Nama are audio networks of tracks and buses.  Tracks may contain one or more
       RIFF (.wav) files, as well as effects, sends, inserts, marks, regions, fades, edits and
       sequences.  Tracks can host LADSPA, LV2 and Ecasound plugins.  Audio regions may be
       altered, duplicated, time-shifted or replaced.

       Audio processing is performed in realtime when a track is played and may be cached
       (frozen) to a new audio file.

       Project data is serialized as JSON. The complete history is tracked by the git version
       control system.  As a result, projects can be managed using branches and tags, and provide
       undo/redo.

       Nama supports some MIDI functionality via midish.

   Presets and templates
       To facilitate reuse, a track's plugins and inserts can be stored as an effect chain.
       Effect profiles apply effect chains to groups of tracks.  Project templates are for
       duplicating an entire project sans audio files.

   Audio device
       Nama performs Audio IO via JACK or ALSA. Soundcard IO goes via JACK, if running, with
       transparent fallback to ALSA.

       Nama supports Ladish Level 1 session handling.

   User interfaces
       Nama has fully featured terminal command prompt, a Tk GUI, and experimental OSC and
       remote-command modes.

       The command prompt can run Nama commands, Ecasound interactive-mode commands, commands for
       the midish MIDI recorder/player, shell commands and perl code.  Commands and filenames can
       be autocompleted using the TAB key. Command history is available to browse with up and
       down arrows.

       The help system provides documentation and keyword search covering Nama commands and
       effects-processing plugins.

       The hotkey mode provides a convenient way to select, view, and modify effect parameters.

OPTIONS

       --gui, -g   Start Nama in GUI mode (default when Tk is available)

       --text, -t  Start Nama in text mode

       --config, -f
                   Specify configuration file (default: ~/.namarc)

       --project-root, -d
                   Specify project root directory

       --use-pwd, -p
                   Use current dir for all WAV and project files

       --create-project, -c
                   Create project if it doesn't exist

       --net-eci, -n
                   Use Ecasound's Net-ECI interface

       --libecasoundc, -l
                   Use Ecasound's libecasoundc interface

       --save-alsa, -a
                   Save/restore alsa state with project data

       --help, -h  This help display

       --regenerate-effects-cache, -r
                   Regenerate the effects data cache

       Debugging options:

       --no-state, -M
                   Don't load project state

       --no-static-effects-data, -S
                   Don't load effects data

       --no-static-effects-cache, -C
                   Don't load the effects data cache

       --no-reconfigure-engine, -R
                   Don't autosave, autoreconfigure or git snapshot

       --fake-jack, -J
                   Simulate JACK environment

       --fake-alsa, -A
                   Simulate ALSA environment

       --no-ecasound, -E
                   Don't spawn Ecasound process

       --execute-command, -X
                   Supply a command to execute

       --no-terminal, -T
                   Don't initialize terminal

       --no-fades, -F
                   No fades on transport start/stop

       --log, -L   Log these (comma separated) categories

CONTROLLING NAMA/ECASOUND

       The Ecasound audio engine is configured through use of chain setups that define the signal
       processing network.

       Nama serves as an intermediary, taking high-level user commands, generating chain setups
       for user tasks such as recording, playback, mixing, etc., and running the audio engine.

   Configuration Commands
       Configuration commands affect future runs of the audio engine.  For example, rec, play,
       mon and off determine whether the current track will get its audio stream from an external
       (e.g. live) source, whether an existing audio file will be played back, and whether a new
       audio file will be recorded. Nama responds to these commands by reconfiguring the engine
       and displaying the updated track status. See 'man ::ChainSetup' for details on how the
       chain setup created.

   Realtime Commands
       Once a chain setup is loaded and the engine is launched, commands can be issued to control
       the realtime behavior of the audio processing engine. These commands include transport
       "start" and "stop", playback head repositioning commands such "forward", "rewind" and
       "setpos". Effects may be added, modified or removed while the engine is running.

   Configuration
       General configuration of sound devices and program options is performed by editing the
       .namarc file, which is formatted as YAML. On Nama's first run, a default version of
       .namarc is placed in the user's home directory.

Tk GRAPHICAL UI

       Invoked by default if Tk is installed, this interface provides a subset of Nama's
       functionality on two windows:

   Main Window
       The top section has buttons for creating, loading and saving projects, adding tracks,
       adding effects to tracks. In short, for setup.

       Below are buttons for controlling the transport (start, stop and friends) and for setting
       marks.

       The GUI project name bar and time display change color to indicate whether the upcoming
       operation will include live recording (red), mixdown (yellow) or playback (green).

   Effects Window
       The effects window provides sliders for each effect parameter of each track. Parameter
       range, defaults, and log/linear scaling hints are automatically detected. Text-entry
       widgets are used to enter parameters values for plugins without hinted ranges. Any
       parameter label can be clicked to add a parameter controller.

   Waveform Window
       Provides a conventional view with waveform and playback head.

   Terminal Window
       The command prompt is available the terminal window and provides access to all of Nama's
       functions.

TEXT USER INTERFACE

       Press the Enter key if necessary to get the command prompt, which will look something like
       this:

                   "nama untitled sax ('h' for help)>"

       In this instance, 'sax' is the current track in the 'untitled' default project.

       When using buses, the bus is indicated before the track:

                   "nama untitled Strings/violin ('h' for help)>"

       At the prompt, you can enter Nama and Ecasound commands, Perl code preceded by "eval" or
       shell code preceded by "!".

       Multiple commands on a single line are allowed if delimited by semicolons. Usually the
       lines are split on semicolons and the parts are executed sequentially, however if the line
       begins with "eval" or "!" the entire line (up to double semicolons ';;' if present) will
       be given to the corresponding interpreter.

       You can access command history using up-arrow/down-arrow.

       Type "help" for general help, "help command" for help with "command", "help foo" for help
       with commands containing the string "foo". "help-effect foo bar" lists all
       plugins/presets/controller containing both foo and bar. Tab-completion is provided for
       Nama commands, Ecasound-iam commands, plugin/preset/controller names, and project names.

       Most commands have abbreviations, such as 'afx' for 'add-effect'. These are shown in the
       help listings.

TRACKS

       Each track has a descriptive name (i.e. vocal) and an integer track-number assigned when
       the track is created.  New user tracks initially belong to the Main bus.

       Track output signals are usually mixed and pass through the Main track on the way to
       soundcard for monitoring.

       The following sections describes track attributes and their effects.

   Width
       Specifying 'mono' means the track has one input channel, which will be recorded as a mono
       WAV file. Mono track signals are automatically duplicated to stereo and a pan effect is
       provided.

       Specifying 'stereo' for a track means that two channels of audio input will be recorded as
       an interleaved stereo WAV file.  You can also use a 'stereo' declaration to avoid the
       automatic channel copy usually applied to single-channel sources.

       Specifying N channels for a track ('set width N') means N successive input channels will
       be recorded as an N-channel interleaved WAV file.

   REC/PLAY/MON/OFF
       Basic signal routing for each track is controlled by its setting to REC, MON, PLAY or OFF.

       The MON setting prepares to connect the live track source.

       The REC setting prepares to connect the live track source and record it to an audio file.

       The PLAY setting enqueues an audio file for playback from disk as the track source.

       The OFF setting tells Nama to remove the track from the audio network. OFF status may
       result for a track when no audio source is available. For example, a track with no
       recorded audio files will show OFF status when set to PLAY.

   Track output
       By default a track belongs to the Main bus and is routed to the Main track. This track
       provides a final fader before the signal goes via ALSA or JACK to the audio device.

   Bus setting
       Buses can force the status of their member tracks to OFF.  Nama provides MON and OFF
       settings for buses.  OFF (set by "bus-off") removes all member tracks from the chain
       setup, MON (set by "bus-mon" restores them.

       The mixplay command sets the Mixdown track to PLAY and the Main bus to OFF.

   Version Numbers
       Multiple audio files ("takes") can be recorded for each track. These are distinguished by
       a version number that increments with each recording run, i.e. sax_1.wav, sax_2.wav, etc.
       All audio files recorded in the same run have the same version number.

       The version numbers for track playback can be selected at the bus or track level. By
       setting the bus version to 5, you can play back version 5 of several tracks at once.
       Version 5 could signify the fifth take of a song, or the fifth song of a live recording
       session.

       The track version setting, if present, overrides the bus version setting. Setting the
       track version to zero restores control of the version number to the bus.

       The Main bus version setting does not propagate to other buses.

   Marks
       Marks in Nama are similar to those in other audio editing software. One limitation is that
       mark positions are relative to the beginning of an Ecasound chain setup. If your project
       involves a single track, and you will be shortening the stream by setting a region to
       play, set any marks you need after defining the region.

   Regions
       The "region" command allows you to define endpoints for a portion of an audio file.  You
       can then use the "shift" command to move the region to the desired time position.

       If you use named marks as endpoints, the region will change if the mark's position is
       adjusted.

       Each track can have one region definition. To create multiple regions, the "new-region"
       command takes a pair of marks to create a read-only copy of the current track with the
       specified region definition.

       You can control this region as you would any other other track, shifting the start time,
       applying effects, adjusting volume, etc.

       Using Tracks from Other Projects

       The "link-track" clones a read-only track from another track, which may belong to a
       different project.

   Effects
       Each track gets volume and pan effects by default.  New effects added using "add-effect"
       are applied before pan volume controls.  You can position effects anywhere you choose
       using "insert_effect" or "position-effect".

       Fades

       Fades can be placed on any track. They defined by mark position and duration. An
       additional volume operator, -eadb, is applied to each track to host the envelope
       controller that implements fades.

       Sends and Inserts

       The "send" command can route a track's post-fader output to a soundcard channel or JACK
       client in addition to the normal mixer input. Nama currently allows one aux send per
       track.

       The "add-insert" command configures a pre- or post-fader send-and-return to soundcard
       channels or JACK clients.  Wet and dry signal paths are provided, with a default setting
       of 100% wet.

       Each track can have one pre-fader and one post-fader insert.

   Bunches
       A bunch is just a list of track names. Using the "for" keyword with the name of a bunch
       will apply the commands that follow to all of the tracks in the bunch. A bunch can be
       created with the "new-bunch" command. A bus name can also be treated as a bunch.

   Buses
       Buses enable multiple tracks to be routed through a single mix track before feeding the
       Main mixer bus (or possibly, another bus.)

       The following commands create a bus and assign three tracks to it. The mix track takes the
       name of the bus and is stereo by default.

               # create a bus named Strings with a same-named mix track
               add-bus Strings

               # create tracks for the bus
               add-tracks violin cello bass

               # move the tracks from the Main bus (default) to the Strings bus
               for violin cello bass; move-to-bus Strings

               # use the mix track to control bus output volume
               Strings vol - 10

       Submixes

       Submixes are a type of bus used to provide instrument monitors, or to send the outputs
       from multiple user tracks to an external program such as jconverter.

ROUTING

   General Notes
       While Nama can address tracks by either name and track number, Ecasound chain setups use
       the track number exclusively.

       The Main track (mixer output) is always chain 1, the Mixdown track is always chain 2.

       Nama uses Ecasound loop devices where necessary to connect two tracks, or to allow one
       track to have multiple inputs or outputs. Each loop device adds one buffer, which
       increases latency.

   Flow Diagrams
       Let's examine the signal flow from track 3, the first available user track. Assume track 3
       is named "sax".

       We will divide the signal flow into track and mixer sections.  Parentheses show the chain
       id.

       The stereo outputs of each user track terminate at Main_in, a loop device at the mixer
       input.

       Track, REC status

           Sound device   --+---(3)----> Main_in
             /JACK client   |
                            +---(R3)---> sax_1.wav

       REC status indicates that the source of the signal is the soundcard or JACK client. The
       input signal will be written directly to a file except in the special preview and doodle
       modes.

       Track, PLAY status

           sax_1.wav ------(3)----> Main_in

       Mixer, with mixdown enabled

       In the second part of the flow graph, the mixed signal is delivered to an output device
       through the Main chain, which can host effects. Usually the Main track provides final
       control before audio output or mixdown.

           Main_in --(1)--> Main_out --+--------> Sound device
                                       |
                                       +-->(2)--> Mixdown_1.wav

       Mastering Mode

       In mastering mode (invoked by "master-on" and released "master-off") the following network
       receives the Main track signal as input and provides an output to the soundcard or WAV
       file.

                            +- Low -+
                            |       |
           Main_in --- Eq --+- Mid -+--- Boost -> soundcard/wav_out
                            |       |
                            +- High +

       The Eq track hosts an equalizer.

       The Low, Mid and High tracks each apply a bandpass filter, a compressor and a spatialiser.

       The Boost track applies gain and a limiter.

       These effects and their default parameters are defined in the configuration file .namarc.

   Mixdown
       The "mixdown" command configures Nama for mixdown. The Mixdown track is set to REC
       (equivalent to "Mixdown rec") and the audio monitoring output is turned off (equivalent to
       "Main off").

       Mixdown proceeds after you start the transport.

       As a convenience, Mixdown_nn.wav will be symlinked to <project-name_nn.wav> or
       <branch_name_nn.wav> in the project directory. The latter format is used branches other
       than the default master branch.) Corresponding encoded files are created if the
       mixdown_encodings option is set in .namarc.  Acceptable values are a space-separated list.
       The default is "mixdown_encodings: ogg mp3".

   Preview, Doodle and Eager Modes
       These non-recording modes, invoked by "preview" and "doodle" commands tweak the routing
       rules for special purposes. Preview mode disables recording of WAV files to disk. Doodle
       mode disables PLAY inputs while excluding any tracks with the same source as a currently
       routed track. The "arm" command releases both preview and doodle modes.

       The eager setting causes the engine to start immediately following a reconfiguration.

   Saving Projects
       If git is available, projects are saved automatically after each command and it is not
       necessary to explicitly save your work.

       When you type "save", Settings related to the state of the project are saved in the file
       State.json in the project directory. State.json is tracked by git.

       "save" updates several other data files as well:

       Aux.json, also in the project directory, contains data that is part of the project (such
       as command history, track comments, and current operating modes) but with no direct effect
       on the project audio.

       global_effect_chains.json, in the project root directory (usually ~/nama) contains system
       and user defined effect chains.

       Save without Git

       "save somename.json" will save project state to a file of that name.  Similarly "get
       somename.json" will load the corresponding file. The .json suffix may be omitted if
       "use_git: 0" is set in .namarc.

       Save with Git

       If git is available, Nama uses it to store snapshots of every step in the history of your
       project.

       When you type "save initial-mix", the latest snapshot is tagged with the name "initial-
       mix", which you can recall later with the command "get initial-mix".

       You can include a comment with the snapshot:

       "save initial-mix "sounds good enough to send to the front office""

       Nama lets you create new branches, starting at any snapshot.

       To start a new branch called compressed-mix starting at a snapshot called initial-mix you
       would say:

       "new-branch compressed-mix initial-mix"

       If you want to go back to working on the master branch, use "branch master".

       You can also issue native git commands at the Nama prompt.

       Git history example

       All projects begin on the "master" branch. Because this is the default branch, it is not
       displayed in the prompt.  Otherwise "master" is not special in any way.

       In the graphs below, the letters indicate named snapshots.

           create test-project
           ...
           save a
           ...
           save b
           ...
           save c

           ---a---b---c (master)

           get a
           ...
           save d
           ...
           save e
           ...
           save f

                  d---e---f (a-branch)
                 /
           -----a----b---c (master)

       Now, you want to go back to try something different at "c":

           get c
           ...
           save g

                 d---e---f (a-branch)
                /
           ----a----b---c (master)
                         \
                          g (c-branch CURRENT HEAD)

       You could also go back to master, and restart from there:

           get master
           ...
           save h
           ...
           save i

                 d---e---f (a-branch)
                /
           ----a----b---c---h---i (master CURRENT HEAD)
                         \
                          g (c-branch)

       Merging of branches is not supported.

   Exiting
       When you type "quit" Nama will automatically save your work to State.json. If you don't
       want this behavior, use Ctrl-C to exit Nama.

   Jack ports list file
       Use source filename.ports to ask Nama to connect multiple JACK ports listed in a file
       filename.ports to the input port(s) of that track.

       If the track is stereo, ports from the list are alternately connected to left and right
       channels.

   Track edits
       An edit consists of audio clips and data structures associated with a particular track and
       version. The edit replaces part of the original audio file, allowing you to fix wrong
       notes, or substitute one phrase for another.  Behind the scenes, the host track becomes
       the mix track to a bus. Sources for the bus are the original audio track, and zero or more
       edits, each represented by a hidden track.

       Each track can host multiple edits. Edits are non-destructive; they are achieved by using
       Ecasound's ability to crossfade and sequence.

       Before creating the edit, select the track and version to be edited.  You will now need to
       create three marks:

       ·   play start point =item * rec start point =item * rec end point

       The edit will replace the audio between the rec start and rec end points.

       There are two ways to set these points.

       set-edit-points command

       Position the playback head a few seconds before the edit.  Enter the set-edit-points
       command. This will start the engine. Hit the P key three times to designate the playback
       start, punch-in and punch-out positions.

       Specify points individually

       Position the playback head at the position you want playback for the edit to start. Enter
       the set-play-start-mark command.

       Use the same procedure to set the rec start and rec end positions using the set-rec-start-
       mark and set-rec-end-mark commands.

       Create the edit

       Enter the new-edit command to create the necessary tracks and data structures.

       Use preview-edit to confirm the edit positions.  The engine will run and you will hear the
       host track with the target region removed. Playback will be restricted to the edit region.
       You may use preview_out to hear the clip to be removed.

       Use list-marks to see the edit marks and modify-mark to nudge them into perfect position.

       Once you are satisfied with the mark positions, you are ready to record your edit.

       Enter start-edit. Playback will begin at first mark. The replacement clip will be recorded
       from the source specified in the original track.

       Each start-edit command will record an additional version on the edit track. redo-edit
       will delete (destructively) the most recent audio clip and begin recording anew.

       destroy-edit deletes (destructively) the current edit.

       You may specify another range for editing and use the editing procedure again as many
       times as you like. Edits on one track may not overlap.

       Merging edits

       merge-edits will recursively merge all edits applied to the current track and version,
       creating a new version for the track.  This will freeze your edits against an accidental
       change in mark, region or version settings.

       list-edits will label the edits by index and time.

       end-edit-mode will restore normal playback mode

REMOTE CONTROL

       You can send commands to Nama from a remote process, and retrieve the result. Understand
       that this code opens a remote execution hole.

       In .namarc you need something like:

             remote_control_port: 57000

       Then Nama will set up a listener for remote commands.

       The usual return value will be a single newline.

       However, if you send an 'eval' command followed by perl code, the return value will be the
       result of the perl code executed with a newline appended. If the result is a list, the
       items will be joined by spaces into a single string.

       For example, if you send this string:

             eval $this_track->name

       The return value will be the name of the current track.

       If the result is an object or data structure, it will be returned in a serialized form.

TEXT COMMANDS

   Help commands
       help (h) - Display help on Nama commands.

               help [ <integer:help_topic_index> | <string:help_topic_name> |
               <string:command_name> ]

               help marks # display the help category marks and all commands containing marks
               help 6 # display help on the effects category help mfx # display help on modify-
               effect - shortcut mfx

       help-effect (hfx he) - Display detailed help on LADSPA or LV2 effects.

               help-effect <string:label> | <integer:unique_id>

               help-effect 1970 # display help on Fons Adriaensen's parametric EQ (LADSPA) help-
               effect etd # prints a short message to consult Ecasound manpage, # where the etd
               chain operator is documented.  hfx lv2-vocProc # display detailed help on the LV2
               VocProc effect

       find-effect (ffx fe) - Display one-line help for effects matching the search string(s).

               find-effect <string:keyword1> [ <string:keyword2>... ]

               find-effect compressor # List all effects containing "compressor" in their name or
               parameters fe feedback # List all effects matching "feedback" # (for example a
               delay with a feedback parameter)

   General commands
       exit (quit q) - Exit Nama, saving settings (the current project).

               exit

       memoize - Cache WAV directory contents (default)

               memoize

       unmemoize - Disable WAV directory caching.

               unmemoize

   Transport commands
       stop (s) - Stop transport. Stop the engine, when recording or playing back.

               stop

       start (t) - Start the transport rolling

               start

               rec   # prepare the curent track to be recorded.  start # Start the
               engine/transport rolling (play now!)  stop  # Stop the engine, cleanup, prepare to
               review

       getpos (gp) - Get the current playhead position (in seconds).

               getpos

               start # Start the engine.  gp    # Get the current position of the playhead. Where
               am I?

       setpos (sp) - Set current playhead position (in seconds).

               setpos <float:position_seconds>

               setpos 65.5

       forward (fw) - Move playback position forwards (in seconds).

               forward <float:increment_seconds>

               fw 23.7

       rewind (rw) - Move playback position backwards (in seconds).

               rewind <float:decrement_seconds>

               rewind 6.5

       to-start (beg) - Set the playback head to the start. A synonym for setpos 0.

               to-start

       to-end (end) - Set the playback head to end minus 10 seconds.

               to-end

       ecasound-start - Ecasound-only start. Nama will not monitor the transport. For diagnostic
       use.

               ecasound-start

       ecasound-stop - Ecasound-only stop. Nama will not monitor the transport. For diagnostic
       use.

               ecasound-stop

       restart-ecasound - Restart the Ecasound process. May help if Ecasound has crashed or is
       behaving oddly.

               restart-ecasound

       preview (song) - Enter the preview mode. Configure Nama for playback and passthru of live
       inputs without recording (for mic test, rehearsal, etc.)

               preview

               rec     # Set the current track to record from its source.  preview # Enter the
               preview mode.  start   # Playback begins. You can play live, adjust effects,
                       # forward, rewind, etc.  stop    # Stop processing audio.  arm     #
               Restore to normal recording/playback mode.

       doodle (live) - Enter doodle mode. Passthru of live inputs without recording. No playback.
       Intended for rehearsing and adjusting effects.

               doodle

               doodle # Switch into doodle mode.  start  # start the audio engine.  (fool around)
               stop   # Stop processing audio.  arm    # Return to normal mode, allowing playback
               and record to disk

   Mix commands
       mixdown (mxd) - Enter mixdown mode for subsequent engine runs. You will record a new mix
       each time you use the start command until you leave the mixdown mode using "mixoff".

               mixdown

               mixdown # Enter mixdown mode start   # Start the transport. The mix will be
               recorded by the
                       # Mixdown track. The engine will run until the
                       # longest track ends. (After mixdown Nama places
                       # a symlink to the WAV file and possibly ogg/mp3
                       # encoded versions in the project directory.)  mixoff  # Return to the
               normal mode.

       mixplay (mxp) - Enter Mixdown play mode, setting user tracks to OFF and only playing the
       Mixdown track. Use "mixoff" to leave this mode.

               mixplay

               mixplay # Enter the Mixdown play mode.  start   # Play the Mixdown track.  stop
               # Stop playback.  mixoff  # Return to normal mode.

       mixoff (mxo) - Leave the mixdown or mixplay mode. Sets Mixdown track to OFF, user tracks
       to MON.

               mixoff

       automix - Normalize track volume levels and fix DC-offsets, then mixdown.

               automix

       master-on (mr) - Turn on the mastering mode, adding tracks Eq, Low, Mid, High and Boost,
       if necessary. The mastering setup allows for one EQ and a three-band multiband compression
       and a final boosting stage. Using "master-off" to leave the mastering mode.

               master-on

               mr    # Turn on master mode.  start # Start the playback.
                     # Now you can adjust the Boost or global EQ.  stop  # Stop the engine.

       master-off (mro) - Leave mastering mode. The mastering network is disabled.

               master-off

   Track commands
       add-track (add new) - Create a new audio track.

               add-track <string:name>

               add-track clarinet # create a mono track called clarinet with input # from
               soundcard channel 1.

       add-midi-track (amt) - Create a new midi track.

               add-midi-track <string:name>

               add-midi-track clarinet

       add-tracks - Create one or more new tracks in one go.

               add-tracks <string:name1> [ <string:name2>... ]

               add-tracks violin viola contra_bass

       link-track (link) - Create a read-only track, that uses audio files from another track.

               link-track [<string:project-name>] <string:track_name> <string:link_name>

               link my_song_part1 Mixdown part_1 # Create a read-only track "part_1" in the
               current project # using files from track "Mixdown" in project "my_song_part_1".  #
               link-track compressed_piano piano # Create a read-only track "compressed_piano"
               using files from # track "piano". This is one way to provide wet and dry #
               (processed and unprocessed) versions of same source.  # Another way would be to
               use inserts.

       import-audio (import) - Import a sound file (wav, ogg, mp3, etc.) to the current track,
       resampling it if necessary. The imported file is set as current version.

               import-audio <string:full_path_to_file> [ <integer:frequency> ]

               import /home/samples/bells.flac # import the file bells.flac to the current track
               import /home/music/song.mp3 44100 # import song.mp3, specifying the frequency

   Midi commands
       import-midi (im) - Import a MIDI song file (MIDI tracks only)

               import-midi <string:full_path_to_file>

   Track commands
       route-track (route rt) - Set source and send for a track (see 'source' and 'send'
       commands)

               route-track <string:source_id> <string:send_id>

       set-track - Directly set current track parameters (use with care!).

               set-track <string:track_field> <value>

       record (rec) - Set the current track to record its source.  Creates the monitoring route
       if necessary. Recording to disk will begin on the next engine start. Use the "mon" or
       "off" commands to disable recording.

               record

               rec # Set the current track to record.  start # A new version (take) will be
               written to disk, # creating a file such as sax_1.wav. Other tracks # may be
               recording or playing back as well.  stop # Stop the recording/playback,
               automatically enter playback mode

       play - Set the current track to playback the currently selected version. Creates the
       monitoring route if necessary. The selected audio file will play the next time the engine
       starts.

               play

       mon - Create a monitoring route for the current track at the next opportunity.

               mon

       off - Remove the monitoring route for the current track and all track I/O at the next
       opportunity.  You can re-include it using "mon", "play" or "rec" commands.

               off

       source (src r) - Set the current track's input (source), for example to a soundcard
       channel, or JACK client name

               source <integer:soundcard_channel> | <string:jack_client_name> |
               <string:jack_port_name> <string:jack_ports_list> | | <string:track_name> |
               <string:loop_id> | 'jack' | 'null'

               source 3 # Take input from soundcard channel 3 (3/4 if track is stereo) # source
               null # Track's input is silence. This is useful for when an effect such # as a
               metronome or signal generator provides a source.  # source bus Strings # set the
               Strings bus as source # source track trumpet # set the track trumpet as source #
               source LinuxSampler # set the JACK client named LinuxSampler as source # source
               synth:output_3 # use the signal from the JACK client synth, using the # port
               output_3 (see the jackd and jack_lsp manpages # for more information).  # source
               jack # This leaves the track input exposed as JACK ports # such as Nama:sax_in_1
               for manual connection.  # source kit.ports # The JACK ports listed in the file
               kit.ports (if it exists) # will be connected to the track input.  # # Ports are
               listed pairwise in the .ports files for stereo tracks.  # This is convenient for
               use with the Hydrogen drumkit, # whose outputs use one JACK port per voice.

       send (aux) - Set an aux send for the current track. Remove sends with remove-send .

               send <integer:soundcard_channel> | <string:jack_client_name> | <string:loop_id>

               send 3 # Send the track output to soundcard channel 3.  send jconvolver # Send the
               track output to the jconvolver JACK client.

       remove-send (nosend noaux) - Remove aux send from the current track.

               remove-send

       stereo - Configure the current track to record two channels of audio

               stereo

       mono - Configure the current track to record one channel of audio

               mono

       set-version (version ver) - Select a WAV file, by version number, for current track
       playback (Overrides a bus-level version setting)

               set-version <integer:version_number>

               piano     # Select the piano track.  version 2 # Select the second recorded
               version sh        # Display information about the current track

       destroy-current-wav - Remove the currently selected recording version from the current
       track after confirming user intent. This DESTRUCTIVE command removes the underlying audio
       file from your disk. Use with caution.

               destroy-current-wav

       list-versions (lver) - List WAV versions of the current track. This will print the
       numbers.

               list-versions

               list-versions # May print something like: 1 2 5 7 9
                             # The other versions might have been deleted earlier by you.

       vol (v) - Change or show the current track's volume.

               vol [ [ + | - | / | * ] <float:volume> ]

               vol * 1.5 # Multiply the current volume by 1.5 vol 75    # Set the current volume
               to 75
                         # Depending on your namarc configuration, this means
                         # either 75% of full volume (-ea) or 75 dB (-eadb).  vol - 5.7 #
               Decrease current volume by 5.7 (percent or dB) vol       # Display the volume
               setting of the current track.

       mute (c cut) - Mute the current track by reducing the volume parameter. Use "unmute" to
       restore the former volume level.

               mute

       unmute (nomute C uncut) - Restore previous volume level. It can be used after mute or
       solo.

               unmute

       unity - Set the current track's volume to unity. This will change the volume to the
       default value (100% or 0 dB).

               unity

               vol 55 # Set volume to 55 unity  # Set volume to the unity value.  vol    #
               Display the current volume (should be 100 or 0,
                      # depending on your settings in namarc.)

       solo (sl) - Mute all tracks but the current track or the tracks or bunches specified. You
       can reverse this with nosolo.

               solo [ <strack_name_1> | <string:bunch_name_1> ] [ <string:track_name_2 |
               <string:bunch_name_2> ] ...

               solo   # Mute all tracks but the current track.  nosolo # Unmute all tracks,
               restoring prior state.  solo piano bass Drums # Mute everything but piano, bass
               and Drums.

       nosolo (nsl) - Unmute all tracks which have been muted by a solo command. Tracks that had
       been muted before the solo command stay muted.

               nosolo

       all - Unmute all tracks that are currently muted

               all

               piano # Select track piano mute  # Mute the piano track.  sax   # Select the track
               sax.  solo  # Mute other tracks nosolo # Unmute other tracks (piano is still
               muted) all   # all tracks play

       pan (p) - Change or display the current panning position of the current track. Panning is
       moving the audio in the stereo panorama between right and left. Position is given in
       percent. 0 is hard left and 100 hard right, 50% is dead centre.

               pan [ <float:pan_position_in_percent> ]

               pan 75 # Pan the track to a position between centre and hard right p 50   # Move
               the current track to the centre.  pan    # Show the current position of the track
               in the stereo panorama.

       pan-right (pr) - Pan the current track hard right. this is a synonym for pan 100. Can be
       reversed with pan-back.

               pan-right

       pan-left (pl) - Pan the current track hard left. This is a synonym for pan 0. Can be
       reversed with pan-back.

               pan-left

       pan-center (pc) - Pan the current track to the centre. This is a synonym for pan 50. Can
       be reversed with pan-back.

               pan-center

       pan-back (pb) - Restore the current track's pan position prior to pan-left, pan-right or
       pan-center commands.

               pan-back

       show-tracks (lt show) - Show a list of tracks, including their index number, volume, pan
       position, recording status and source.

               show-tracks

       show-tracks-all (sha showa) - Like show-tracks, but includes hidden tracks as well. Useful
       for debugging.

               show-tracks-all

   Bus commands
       show-bus (shb) - List tracks in current or named bus

               show-bus [ <string:busname> ]

   Track commands
       show-track (sh -fart) - Display full information about the current track: index, recording
       status, effects and controllers, inserts, the selected WAV version, and signal width
       (channel count).

               show-track

   Setup commands
       show-mode (shm) - Display the current record/playback mode. this will indicate the mode
       (doodle, preview, etc.) and possible record/playback settings.

               show-mode

   Track commands
       show-track-latency (shl) - Display the latency information for the current track.

               show-track-latency

   Diagnostics commands
       show-latency-all (shla) - Dump all latency data.

               show-latency-all

   Track commands
       set-region (srg) - Specify a playback region for the current track using marks. Can be
       reversed with remove-region.

               set-region <string:start_mark_name> <string:end_mark_name>

               sax            # Select "sax" as the current track.  setpos 2.5     # Move the
               playhead to 2.5 seconds.  mark sax_start # Create a mark sp 120.5       # Move
               playhead to 120.5 seconds.  mark sax_end   # Create another mark set-region
               sax_start sax_end #  Play only the audio from 2.5 to 120.5 seconds.

       add-region - Make a copy of the current track using the supplied a region definition. The
       original track is untouched.

               add-region <string:start_mark_name> | <float:start_time> <string:end_mark_name> |
               <float:end_time> [ <string:region_name> ]

               sax # Select "sax" as the current track.  add-region sax_start 66.7 trimmed_sax #
               Create "trimmed_sax", a copy of "sax" with a region defined # from mark
               "sax_start" to 66.7 seconds.

       remove-region (rrg) - Remove the region definition from the current track. Remove the
       current track if it is an auxiliary track.

               remove-region

       shift-track (shift playat pat) - Choose an initial delay before playing a track or region.
       Can be reversed by unshift-track.

               shift-track <string:start_mark_name> | <integer:start_mark_index |
               <float:start_seconds>

               piano     # Select "piano" as current track.  shift 6.7 # Move the start of track
               to 6.7 seconds.

       unshift-track (unshift) - Restore the playback start time of a track or region to 0.

               unshift-track

       modifiers (mods mod) - Add/show modifiers for the current track (man ecasound for
       details). This provides direct control over Ecasound track modifiers It is not needed for
       normal work.

               modifiers [ Audio file sequencing parameters ]

               modifiers select 5 15.2 # Apply Ecasound's select modifier to the current track.
               # The usual way to accomplish this is with a region definition.

       nomodifiers (nomods nomod) - Remove modifiers from the current track.

               nomodifiers

       normalize (ecanormalize) - Apply ecanormalize to the current track version. This will
       raise the gain/volume of the current track as far as possible without clipping and store
       it that way on disk. Note: this will permanently change the file.

               normalize

       fixdc (ecafixdc) - Fix the DC-offset of the current track using ecafixdc. Note: This will
       permanently change the file.

               fixdc

       autofix-tracks (autofix) - Apply ecafixdc and ecanormalize to all current versions of all
       tracks, set to playback (MON).

               autofix-tracks

       remove-track - Remove the current track with its effects, inserts, etc. Audio files are
       unchanged.

               remove-track

   Group commands
       bus-version (bver gver) - Set the default monitoring version for tracks in the current
       bus.

               bus-version

       bus-on - Restore tracks belonging to bus after bus-off

               bus-on

       bus-off - Turn off tracks belonging to current bus

               bus-off

       add-bunch (abn) -

               add-bunch <string:bunch_name> [ <string:track_name_1> | <integer:track_index_1> ]
               ...

               add-bunch strings violin cello bass # Create a bunch "strings" with tracks violin,
               cello and bass.  for strings; mute # Mute all tracks in the strings bunch.  for
               strings; vol * 0.8 # Lower the volume of all tracks in bunch "strings" by a # a
               factor of 0.8.

       list-bunches (lbn) - Display a list of all bunches and their tracks.

               list-bunches

       remove-bunch (rbn) - Remove the specified bunches. This does not remove the tracks, only
       the grouping.

               remove-bunch <string:bunch_name> [ <string:bunch_name> ] ...

       add-to-bunch (atbn) - Add track(s) to an existing bunch.

               add-to-bunch <string:bunch_name> <string:track1> [ <string:track2> ] ...

               add-to-bunch woodwind oboe sax flute

   Project commands
       commit (cm) - Commit Nama's current state

               commit <string:message>

       tag - Git tag the current branch HEAD commit

               tag <string:tag_name> [<string:message>]

       branch (br) - Change to named branch

               branch <string:branch_name>

       list-branches (lb lbr) - List branches

               list-branches

       new-branch (nbr) - Create a new branch

               new-branch <string:new-branch_name> [<string:existing_branch_name>]

       save-state (keep save) - Save the project settings as file or git snapshot

               save-state [ <string:settings_target> [ <string:message> ] ]

       get-state (get recall retrieve) - Retrieve project settings from file or snapshot

               get-state <string:settings_target>

       list-projects (lp) - List all projects. This will list all Nama projects, which are stored
       in the Nama project root directory.

               list-projects

       new-project (create) - Create or open a new empty Nama project.

               new-project <string:new-project-name>

               create jam

       load-project (load) - Load an existing project. This will load the project from the
       default project state file. If you wish to load a project state saved to a user specific
       file, load the project and then use get-state.

               load-project <string:existing_project-name>

               load my_old_song

       project-name (project name) - Display the name of the current project.

               project-name

       new-project-template (npt) - Make a project template based on the current project. This
       will include tracks and busses.

               new-project-template <string:template_name> [ <string:template_description> ]

               new-project_template my_band_setup "tracks and busses for bass, drums and me"

       use-project-template (upt apt) - Use a template to create tracks in a newly created, empty
       project.

               use-project-template <string:template_name>

               apt my_band_setup # Will add all the tracks for your basic band setup.

       list-project-templates (lpt) - List all project templates.

               list-project-templates

       destroy-project-template - Remove one or more project templates.

               destroy-project-template <string:template_name1> [ <string:template_name2> ] ...

   Setup commands
       generate (gen) - Generate an Ecasound chain setup for audio processing manually. Mainly
       useful for diagnostics and debugging.

               generate

       arm - Generate and connect a setup to record or playback. If you are in dodle or preview
       mode, this will bring you back to normal mode.

               arm

       arm-start (arms) - Generate and connect the setup and then start. This means, that you can
       directly record or listen to your tracks.

               arm-start

       connect (con) - Connect the setup, so everything is ready to run. Ifusing JACK, this
       means, that Nama will connect to all the necessary JACK ports.

               connect

       disconnect (dcon) - Disconnect the setup. If running with JACK, this will disconnect from
       all JACK ports.

               disconnect

       show-chain-setup (chains) - Show the underlying Ecasound chain setup for the current
       working condition. Mainly useful for diagnostics and debugging.

               show-chain-setup

       loop (l) - Loop the playback between two points. Can be stopped with loop_disable

               loop <string:start_mark_name> | <integer:start_mark_index> |
               <float:start_time_in_secs> <string:end_mark_name> | <integer:end_mark_index> |
               <float:end_time_in_secs>

               loop 1.5 10.0 # Loop between 1.5 and 10.0 seconds.  loop 1 5 # Loop between marks
               with indices 1 and 5, see list-marks.  loop sax_start 12.6 # Loop between mark
               sax_start and 12.6 seconds.

       noloop (nl) - Disable looping.

               noloop

   Effect commands
       add-controller (acl) - Add a controller to an effect (current effect, by default).
       Controllers can be modified by using mfx and removed using rfx.

               add-controller [ <string:operator_id> ] <string:effect_code> [ <float:param1>
               <float:param2> ] ...

               add-effect etd 100 2 2 50 50 # Add a stero delay of 100ms.  # the delay will get
               the effect ID E .  # Now we want to slowly change the delay to 200ms.  acl E klg 1
               100 200 2 0 100 15 200 # Change the delay time linearly (klg)

       add-effect (afx) - Add an effect

               add-effect [ (before <fx_alias> | first | last ) ] <fx_alias> [ <float:param1>
               <float:param2>... ] "before", "first" and "last" can be abbreviated "b", "f" and
               "l", respectively.

               We want to add the decimator effect (a LADSPA plugin).  help-effect decimator #
               Print help about its paramters/controls.
                                     # We see two input controls: bitrate and samplerate afx
               decimator 12 22050  #  prints "Added GO (Decimator)" # We have added the decimator
               with 12bits and a sample rate of 22050Hz.  # GO is the effect ID, which you will
               need to modify it.

       add-effect-last (afxl) - Same as add-effect last

               add-effect-last <fx_alias> [ <float:param1> <float:param2>... ]

       add-effect-first (afxf) - Same as add-effect first

               add-effect-first <fx_alias> [ <float:param1> <float:param2>... ]

       add-effect-before (afxb insert-effect ifx) - Same as add-effect before

               add-effect-before <fx_alias> <fx_alias> [ <float:param1> <float:param2>... ]

       modify-effect (mfx) - Modify effect parameter(s).

               modify-effect [ <fx_alias> ] <integer:parameter> [ + | - | * | / ] <float:value>
               fx_alias can be: a position, effect ID, nickname or effect code

               To change the roomsize of our reverb effect to 62 lfx # We see that reverb has
               unique effect ID AF and roomsize is the # first parameter.  mfx AF 1 62 # mfx
               AF,BG 1 75 # Change the first parameter of both AF and BG to 75.  # mfx CE 6,10 -3
               # Change parameters 6 and 10 of effect CE to -3 # mfx D 4 + 10 # Increase the
               fourth parameter of effect D by 10.  # mfx A,B,C 3,6 * 5 # Adjust parameters 3 and
               6 of effect A, B and C by a factor of 5.

       remove-effect (rfx) - Remove effects. They don't have to be on the current track.

               remove-effect <fx_alias1> [ <fx_alias2> ] ...

       position-effect (pfx) - Position an effect before another effect (use 'ZZZ' for end).

               position-effect <string:id_to_move> <string:position_id>

               position-effect G F # Move effect with unique ID G immediately before effect F

       show-effect (sfx) - Show information about an effect, defaulting to current effect

               show-effect [ <string:effect_id1> ] [ <string:effect_id2> ] ...

               sfx # Display name, unique ID and parameters/controls of the current effect.  sfx
               H # Display info on effect with unique ID H. H becomes the current effect.

       dump-effect (dfx) - Dump all data of current effect object

               dump-effect

       list-effects (lfx) - Print a short list of all effects on the current track, only
       including unique ID and effect name.

               list-effects

   General commands
       hotkeys (hk) - Use this command to set the hotkey mode. (You may also use the hash symbol
       '#'.) Hit the Escape key to return to command mode.

               hotkeys

       hotkeys-always (hka) - Activate hotkeys mode after each command.

               hotkeys-always

       hotkeys-off (hko) - Disable hotkeys always mode

               hotkeys-off

       hotkeys-list (hkl lhk) - List hotkey bindings

               hotkeys-list

   Effect commands
       add-insert (ain) - Add an external send/return insert to current track.

               add-insert External: ( pre | post ) <string:send_id> [ <string:return_id> ] Local
               wet/dry: local

               add-insert pre jconvolver # Add a prefader insert. The current track signal is
               sent # to jconvolver and returned to the vol/pan controls.  add-insert post
               jconvolver csound # Send the current track postfader signal (after vol/pan #
               controls) to jconvolver, getting the return from csound.  guitar # Select the
               guitar track ain local # Create a local insert guitar-1-wet # Select the wet arm
               afx G2reverb 50 5.0 0.6 0.5 0 -16 -20 # add a reverb afx etc 6 100 45 2.5 # add a
               chorus effect on the reverbed signal guitar # Change back to the main guitar track
               wet 25 # Set the balance between wet/dry track to 25% wet, 75% dry.

       set-insert-wetness (wet) - Set wet/dry balance of the insert for the current track. The
       balance is given in percent, 0 meaning dry and 100 wet signal only.

               set-insert-wetness [ pre | post ] <n_wetness>

               wet pre 50 # Set the prefader insert to be balanced 50/50 wet/dry.  wet 100 #
               Simpler if there's only one insert

       remove-insert (rin) - Remove an insert from the current track.

               remove-insert [ pre | post ]

               rin # If there is only one insert on the current track, remove it.  remove-insert
               post # Remove the postfader insert from the current track.

       ctrl-register (crg) - List all Ecasound controllers. Controllers include linear
       controllers and oscillators.

               ctrl-register

       preset-register (prg) - List all Ecasound effect presets. See the Ecasound manpage for
       more detail on effect_presets.

               preset-register

       ladspa-register (lrg) - List all LADSPA plugins, that Ecasound/Nama can find.

               ladspa-register

   Mark commands
       list-marks (lmk lm) - List all marks with index, name and their respective positions in
       time.

               list-marks

       to-mark (tmk tom) - Move the playhead to the named mark or mark index.

               to-mark <string:mark_name> | <integer:mark_index>

               to-mark sax_start # Jump to the position marked by sax_mark.  tmk 2 # Move to the
               mark with the index 2.

       add-mark (mark amk k) - Drop a new mark at the current playback position. this will fail,
       if a mark is already placed on that exact position.

               add-mark [ <string:mark_id> ]

               mark start # Create a mark named "start" at the current position.

       remove-mark (rmk) - Remove a mark

               remove-mark [ <string:mark_name> | <integer:mark_index> ]

               remove-mark start # remove the mark named start rmk 16 # Remove the mark with the
               index 16.  rmk    # Remove the current mark

       next-mark (nmk) - Move the playhead to the next mark.

               next-mark

       previous-mark (pmk) - Move the playhead to the previous mark.

               previous-mark

       name-mark - Give a name to the current mark.

               name-mark <string:mark_name>

       modify-mark (move-mark mmk) - Change the position (time) of the current mark.

               modify-mark [ + | - ] <float:seconds>

               move-mark + 2.3 # Move the current mark 2.3 seconds forward from its mmk 16.8 #
               Move the current mark to 16.8 seconds, no matter, where it is now.

   Diagnostics commands
       engine-status (egs) - Display the Ecasound audio processing engine status.

               engine-status

       dump-track (dump) - Dump current track data.

               dump-track

       dump-group (dumpg) - Dump group settings for user tracks.

               dump-group

       dump-all (dumpa) - Dump most internal state data.

               dump-all

       dump-io - Show chain inputs and outputs.

               dump-io

   Help commands
       list-history (lh) - List the command history. Every project stores its own command
       history.

               list-history

   Bus commands
       add-submix-cooked - Create a submix using all tracks in bus "Main"

               add-submix-cooked <string:name> <destination>

               add-submix-cooked front_of_house 7 # send a custom mix named "front_of_house" # to
               soundcard channels 7/8

       add-submix-raw (asr) - Add a submix using tracks in Main bus (unprocessed signals, lower
       latency)

               add-submix-raw <string:name> <destination>

               asbr Reverb jconv # Add a raw send bus called Reverb, with its output

       add-bus (abs) - Add a sub bus. This is a bus, as known from other DAWs. The default output
       goes to a mix track and that is routed to the mixer (the Main track). All busses begin
       with a capital letter!

               add-bus <string:name> [ <string:track_name> | <string:jack_client> |
               <integer:soundcard_channel> ]

               abs Brass          # Add a bus, "Brass", routed to the Main bus (e.g. mixer) abs
               special csound # Add a bus, "special" routed to JACK client "csound"

       update-submix (usm) - Include tracks added since the submix was created.

               update-submix <string:name>

               update-submix Reverb

       remove-bus - Remove a bus or submix

               remove-bus <string:bus_name>

       list-buses (lbs) - List buses and their parameters (TODO).

               list-buses

       set-bus (sbs) - Set bus parameters. This command is intended for advanced users.

               set-bus <string:busname> <key> <value>

   Effect commands
       overwrite-effect-chain (oec) - Create a new effect chain, overwriting an existing one of
       the same name.

               overwrite-effect-chain Same as for new-effect-chain

       new-effect-chain (nec) - Create an effect chain, a named list of effects with all
       parameter settings. Useful for storing effect setups for particular instruments.

               new-effect-chain <string:name> [ <effect_id_1> <effect_id_2>... ]

               new-effect-chain my_piano # Create a new effect chain, "my_piano", storing all #
               effects and their settings from the current track # except the fader (vol/pan)
               settings.  nec my_guitar A C F G H # Create a new effect chain, "my_guitar", #
               storing the effects with IDs A, C, F, G, H and # their respective settings.

       delete-effect-chain (dec destroy-effect-chain) - Delete an effect chain definition. Does
       not affect the project state. This command is not reversible by undo.

               delete-effect-chain <string:effect_chain_name>

       find-effect-chains (fec lec) - Dump effect chains, filtering on key pairs (if provided)

               find-effect-chains [ <string:key_1> <string:value_1> ] ...

               fec # List all effect chains with their effects.

       find-user-effect-chains (fuec leca) - List all *user* created effect chains, matching
       key/value pairs, if provided.

               find-user-effect-chains [ <string:key_1> <string:value_1> ] ...

       bypass-effects (bypass bfx) - Bypass effects on the current track. With no parameters
       default to bypassing the current effect.

               bypass-effects [ <string:effect_id_1> <string:effect_id_2>... | 'all' ]

               bypass all # Bypass all effects on the current track, except vol and pan.  bypass
               AF  # Only bypass the effect with the unique ID AF.

       bring-back-effects (restore-effects bbfx) - Restore effects. If no parameter is given, the
       default is to restore the current effect.

               bring-back-effects [ <string:effect_id_1> <string:effect_id_2> ... | 'all' ]

               bbfx                   # Restore the current effect.  restore_effect AF      #
               Restore the effect with the unique ID AF.  bring-back-effects all # Restore all
               effects.

       new-effect-profile (nep) - Create a new effect profile. An effect profile is a named group
       of effect chains for multiple tracks. Useful for storing a basic template of standard
       effects for a group of instruments, like a drum kit.

               new-effect-profile <string:bunch_name> [ <string:effect_profile_name> ]

               add-bunch Drums snare toms kick # Create a buch called Drums.  nep Drums
               my_drum_effects # Create an effect profile, call my_drum_effects

       apply-effect-profile (aep) - Apply an effect profile. this will add all the effects in it
       to the list of tracks stored in the effect profile. Note: You must give the tracks the
       same names as in the original project, where you created the effect profile.

               apply-effect-profile <string:effect_profile_name>

       destroy-effect-profile - Delete an effect profile. This will delete the effect profile
       definition from your disk. All projects, which use this effect profile will NOT be
       affected.

               destroy-effect-profile <string:effect_profile_name>

       list-effect-profiles (lep) - List all effect profiles.

               list-effect-profiles

       show-effect-profiles (sepr) - List effect profile.

               show-effect-profiles

       full-effect-profiles (fep) - Dump effect profile data structure.

               full-effect-profiles

   Track commands
       cache-track (cache ct bounce freeze) - Cache the current track. Same as freezing or
       bouncing. This is useful for larger projects or low-power CPUs, since effects do not have
       to be recomputed for subsequent engine runs. Cache_track stores the effects-processed
       output of the current track as a new version (WAV file) which becomes the current version.
       The current effects, inserts and region definition are removed and stored. To go back to
       the original track state, use the uncache-track command.  The show-track display appends a
       "c" to version numbers created by cache-track (and therefore reversible by uncache)

               cache-track [ <float:additional_processing_time> ]

               cache 10 # Cache the curent track and append 10 seconds extra time,

   Effect commands
       uncache-track (uncache unc) - Select the uncached track version. This restores effects,
       but not inserts.

               uncache-track

   General commands
       do-script (do) - Execute Nama commands from a file in the main project's directory or in
       the Nama project root directory. A script is a list of Nama commands, just as you would
       type them on the Nama prompt.

               do-script <string:filename>

               do prepare_my_drums # Execute the script prepare_my_drums.

       scan - Re-read the project's .wav directory. Mainly useful for troubleshooting.

               scan

   Effect commands
       add-fade (afd fade) - Add a fade-in or fade-out to the current track.

               add-fade ( in | out ) marks/times (see examples)

               fade in mark1       # Fade in,starting at mark1 and using the
                                    # default fade time of 0.5 seconds.  fade out mark2 2    #
               Fade out over 2 seconds, starting at mark2 .  fade out 2 mark2    # Fade out over
               2 seconds, ending at mark2 .  fade in mark1 mark2 # Fade in starting at mark1,
               ending at mark2 .

       remove-fade (rfd) - Remove a fade from the current track.

               remove-fade <integer:fade_index_1> [ <integer:fade_index_2> ] ...

               list-fade # Print a list of all fades and their tracks.  rfd 2     # Remove the
               fade with the index (n) 2.

       list-fade (lfd) - List all fades.

               list-fade

   Track commands
       add-comment (comment ac) - Add a comment to the current track (replacing any previous
       comment). A comment maybe a short description, notes on instrument settings, etc.

               add-comment <string:comment>

               ac "Guitar, treble on 50%"

       remove-comment (rc) - Remove a comment from the current track.

               remove-comment

       show-comment (sc) - Show the comment for the current track.

               show-comment

       show-comments (sca) - Show all track comments.

               show-comments

       add-version-comment (avc) - Add a version comment (replacing any previous user comment).
       This will add a comment for the current version of the current track.

               add-version-comment <string:comment>

               avc "The good take with the clear 6/8"

       remove-version-comment (rvc) - Remove version comment(s) from the current track.

               remove-version-comment

       show-version-comment (svc) - Show version comment(s) of the curent track.

               show-version-comment

       show-version-comments-all (svca) - Show all version comments for the current track.

               show-version-comments-all

       add-system-version-comment (asvc) - Set a system version comment. Useful for testing and
       diagnostics.

               add-system-version-comment <string:comment>

   Edit commands
       new-edit (ned) - Create an edit for the current track and version.

               new-edit

       set-edit-points (sep) - Mark play-start, record-start and record-end positions for the
       current edit.

               set-edit-points

       list-edits (led) - List all edits for current track and version.

               list-edits

       select-edit (sed) - Select an edit to modify or delete. After selection it is the current
       edit.

               select-edit <integer:edit_index>

       end-edit-mode (eem) - Switch back to normal playback/record mode. The track will play full
       length again. Edits are managed via a sub- bus.

               end-edit-mode

       destroy-edit - Remove an edit and all associated audio files. If no parameter is given,
       the default is to destroy the current edit. Note: The data will be lost permanently. Use
       with care!

               destroy-edit [ <integer:edit_index> ]

       preview-edit-in (pei) - Play the track region without the edit segment.

               preview-edit-in

       preview-edit-out (peo) - Play the removed edit segment.

               preview-edit-out

       play-edit (ped) - Play a completed edit.

               play-edit

       record-edit (red) - Record an audio file for the current edit.

               record-edit

       edit-track (et) - Set the edit track as the current track.

               edit-track

       host-track-alias (hta) - Set the host track alias as the current track.

               host-track-alias

       host-track (ht) - Set the host track (edit sub-bus mix track) as the current track.

               host-track

       version-mix-track (vmt) - Set the version mix track as the current track.

               version-mix-track

       play-start-mark (psm) - Select (and move to) play start mark of the current edit.

               play-start-mark

       rec-start-mark (rsm) - Select (and move to) rec start mark of the current edit.

               rec-start-mark

       rec-end-mark (rem) - Select (and move to) rec end mark of the current edit.

               rec-end-mark

       set-play-start-mark (spsm) - Set play-start-mark to the current playback position.

               set-play-start-mark

       set-rec-start-mark (srsm) - Set rec-start-mark to the current playback position.

               set-rec-start-mark

       set-rec-end-mark (srem) - Set rec-end-mark to current playback position.

               set-rec-end-mark

       disable-edits (ded) - Turn off the edits for the current track and playback the original
       WAV file. This will remove the edit bus.

               disable-edits

       merge-edits (med) - Mix edits and original into a new host-track. this will write a new
       audio file to disk and the host track will have a new version for this.

               merge-edits

   Track commands
       explode-track - Make the current track into a sub bus, with one track for each version.

               explode-track

       move-to-bus (mtb) - Move the current track to another bus. A new track is always in the
       Main bus. So to reverse this action use move-to-bus Main .

               move-to-bus <string:bus_name>

               asub Drums # Create a new sub bus, called Drums.  snare # Make snare the current
               track.  mtb Drums # Move the snare track into the sub bus Drums.

       promote-version-to-track (pvt) - Create a read-only track using the specified version of
       the current track.

               promote-version-to-track <integer:version_number>

   General commands
       read-user-customizations (ruc) - Re-read the user customizations file 'custom.pl'.

               read-user-customizations

   Setup commands
       limit-run-time (lr) - Stop recording after the last audio file finishes playing. Can be
       turned off with limit-run-time_off.

               limit-run-time [ <float:additional_seconds> ]

       limit-run-time-off (lro) - Disable the recording stop timer.

               limit-run-time-off

       offset-run (ofr) - Record/play from a mark, rather than from the start, i.e. 0.0 seconds.

               offset-run <string:mark_name>

       offset-run-off (ofro) - Turn back to starting from 0.

               offset-run-off

   General commands
       view-waveform (wview) - Launch mhwavedit to view/edit waveform of the current track and
       version. This requires to start Nama on a graphical terminal, like xterm or gterm or from
       GNOME via alt+F2 .

               view-waveform

       edit-waveform (wedit) - Launch audacity to view/edit the waveform of the current track and
       version. This requires starting Nama on a graphical terminal like xterm or gterm or from
       GNOME starting Nama using alt+F2 .

               edit-waveform

   Setup commands
       rerecord (rerec) - Record as before. This will set all the tracks to record, which have
       been recorded just before you listened back.

               rerecord

               for piano guitar;rec # Set piano and guitar track to record.  # do your recording
               and ilstening.  # You want to record another version of both piano and guitar:
               rerec # Sets piano and guitar to record again.

   Track commands
       analyze-level (anl) - Print Ecasound amplitude analysis for current track. This will show
       highest volume and statistics.

               analyze-level

   General commands
       for - Execute command(s) for several tracks.

               for <string:track_name_1> [ <string:track_name_2>} ... ; <string:commands>

               for piano guitar; vol - 3; pan 75      # reduce volume and pan right for snare
               kick toms cymbals; mtb Drums # move tracks to bus Drums

   Project commands
       git - Execute git command in the project directory

               git <string:command_name> [arguments]

   Track commands
       edit-rec-setup-hook (ersh) - Edit the REC hook script for current track

               edit-rec-setup-hook

       edit-rec-cleanup-hook (erch) - Edit the REC cleanup hook script for current track

               edit-rec-cleanup-hook

       remove-fader-effect (rffx) - Remove vol pan or fader on current track

               remove-fader-effect vol | pan | fader

       rename-track - Rename a track and its WAV files

               rename-track <string:old_track> <string:new_track>

   Sequence commands
       new-sequence (nsq) - Define a new sequence

               new-sequence <string:name> <track1, track2,...>

       select-sequence (slsq) - Select named sequence as current sequence

               select-sequence

       list-sequences (lsq) - List all user sequences

               list-sequences

       show-sequence (ssq) - Display clips making up current sequence

               show-sequence

       append-to-sequence (asq) - Append items to sequence

               append-to-sequence [<string:name1>,...]

               asq chorus # append chorus track to current sequence asq        # append current
               track to current sequence

       insert-in-sequence (isq) - Insert items into sequence before index i

               insert-in-sequence <string:name1> [<string:name2>,...] <integer:index>

       remove-from-sequence (rsq) - Remove items from sequence

               remove-from-sequence <integer:index1> [<integer:index2>,...]

       delete-sequence (dsq) - Delete entire sequence

               delete-sequence <string:sequence>

       add-spacer (asp) - Add a spacer to the current sequence, in specified position, or
       appending (if no position is given)

               add-spacer <float:duration> [<integer:position>]

       convert-to-sequence (csq) - Convert the current track to a sequence

               convert-to-sequence

       merge-sequence (msq) - Cache the current sequence mix track, and set it to PLAY

               merge-sequence

       snip - Create a sequence from the current track by removing the region(s) defined by mark
       pair(s). Not supported if the current track is already a sequence.

               snip <mark_pair1> [<mark_pair2>...]

               snip cut1-start cut1-end cut2-start cut2-end This removes cut1 and cut2 regions
               from the current track by creating a sequence.

       compose (compose-sequence compose-into-sequence) - Compose a new sequence using the
       region(s) of the named track defined by mark pair(s). If the sequence of that name exists,
       append the regions to that sequence (compose-into-sequence).

               compose <string:sequence_name> <string:trackname> <mark_pair1> [<mark_pair2>...]

               compose speeches conference-audio speaker1-start speaker1-end speaker2-start
               speaker2-end This creates a "speeches" sequence with two clips for speaker1 and
               speaker2.

   General commands
       undo - Roll back last commit (use "git log" to see specific commands) Note: redo is not
       supported yet

               undo

       redo - Restore the last undone commit (TODO)

               redo

       show-head-commit (show-head last-command last) - Show the last commit, which undo will
       roll back. A commit may contain multiple commands. The last_* aliases are meaningful when
       autosave: undo is set. In that case each commit contains only a single command

               show-head-commit

   Mode commands
       eager - Set eager mode

               eager on | off

   Engine commands
       new-engine (neg) - Start a named Ecasound engine, or bind to an existing engine

               new-engine <string:engine_name> <integer:port>

       select-engine (seg) - Select an ecasound engine (advanced users only!)

               select-engine <string:engine_name>

   Track commands
       set-track-engine-group (steg) - Set the current track's engine affiliation

               set-track-engine-group <string:engine_name>

   Bus commands
       set-bus-engine-group (sbeg) - Set the current bus's engine affiliation

               set-bus-engine-group <string:engine_name>

       select-submix (ssm) - Set the target for the trim command

               select-submix <string:submix_name>

       trim-submix (trim tsm) - Control a submix fader

               trim-submix

               # reduce vol of current track in in_ear_monitor by 3dB select-submix
               in_ear_monitor trim vol - 3

   Effect commands
       nickname-effect (nfx nick) - Add a nickname to the current effect (and create an alias)

               nickname-effect <lower_case_string:nickname>

               add-track guitar afx Plate nick reverb        # current effect gets name "reverb1"
               mfx reverb1 1 0.05 # modify first reverb effect on current track mfx reverb 1 2
               # works, because current track has one effect named "reverb" afx reverb         #
               add another Plate effect, gets name "reverb2" rfx reverb         # Error, multiple
               reverb effects are present on this
                                  # track. Please use a numerical suffix.  mfx reverb2 1 3    #
               modify second reverb effect rfx reverb1        # removes reverb1 ifx reverb2
               reverb # insert another reverb effect (reverb3) before reverb2 rfx reverb3
               # remove reverb3 rfx reverb         # removes reverb2, as it is the sole remain
               reverb effect

       delete-nickname-definition (dnd) - Delete a nickname definition. Previously named effects
       keep their names.

               delete-nickname-definition

               afx Plate   # add Plate effect nick reverb # name it "reverb", and create a
               nickname for Plate dnd reverb  # removes nickname definition afx reverb  # error

       remove-nickname (rnick) - Remove the "name" attribute of the current effect

               remove-nickname

               afx Plate nick reverb mfx reverb 1 3 rnick mfx reverb 1 3 # Error: effect named
               "reverb" not found on current track

       list-nickname-definitions (lnd) - List defined nicknames

               list-nickname-definitions

       set-effect-name (sen) - Set a nickname only (don't creating an alias)

               set-effect-name <string:name>

       set-effect-surname (ses) - Set an effect surname

               set-effect-surname <string:surname>

       remove-effect-name (ren) - Remove current effect name

               remove-effect-name

       remove-effect-surname (res) - Remove current effect surname

               remove-effect-surname

   Track commands
       select-track - Set a particular track as the current, or default track against which
       track-related commands are executed.

               select-track <string:track-name> | <integer:track-number>

   Midi commands
       set-tempo (tempo tp) - Set MIDI tempo (bpm)

               set-tempo <integer:tempo-setting>

   General commands
       set-sample-rate (ssr) - Configure the sample rate for the current project or report sample
       rate if no parameter

               set-sample-rate <integer:sample-rate>

REALTIME OPERATION

       Nama selects realtime or nonrealtime parameters based on the realtime_profile,
       ecasound_buffersize and ecasound_globals fields in .namarc. You can optionally specify the
       buffersizes as a multiple of the JACK period size. Note that for best realtime operation
       under JACK you will have to configure jackd appropriately as well.

       The realtime and auto profiles are useful when using Nama/Ecasound for live fx processing
       or live monitoring.

       The realtime profile sets a small buffersize and other low latency settings whenever a
       soundcard or JACK client is connected.

       The nonrealtime profile uses a bigger buffer, providing extended margins for stable
       operation. It is suitable for post-processing, or for recording without live monitoring
       responsibilities.

       The auto profile defaults to nonrealtime settings. It switches to realtime, low-latency
       settings when a track has a live input.

DIAGNOSTICS

       On any change in setup, the GUI display updates and "show-tracks" command is executed
       automatically showing what to expect the next time the engine is started.

       You can use the "chains" command to verify the Ecasound chain setup. (The Ecasound command
       "cs-save-as mysetup.ecs" will additionally store all engine data, effects as well as
       routing.)

       The "dump" command displays data for the current track.  The "dumpall" command shows all
       state that would be saved.

       This is the same output that is written to the State.yml file when you issue the "save"
       command.

BUGS AND LIMITATIONS

       No latency compensation across signal paths is provided at present. This feature is under
       development.

SECURITY CONCERNS

       If you are using Nama with the NetECI interface (i.e. if Audio::Ecasound is not installed)
       you should block TCP port 2868 if your computer is exposed to the Internet.

INSTALLATION

       The following commands, available on Unixlike systems with Perl installed, will pull in
       Nama and other Perl libraries required for text mode operation:

       "cpanm Audio::Nama" -or- "PERL_MM_USE_DEFAULT=1 cpan Audio::Nama"

       To use the GUI, you will need to install Tk:

       "cpanm Tk"

       You may want to install Audio::Ecasound if you prefer not to run Ecasound in server mode:

       "cpanm Audio::Ecasound"

       You can pull the source code as follows:

       "git clone git://github.com/bolangi/nama.git"

       Consult the BUILD file for build instructions.

SUPPORT

       The Nama mailing list is a suitable forum for questions regarding Nama installation,
       usage, bugs, feature requests, etc.

       http://www.freelists.org/list/nama

       For questions and discussion related to Ecasound

       https://lists.sourceforge.net/lists/listinfo/ecasound-list

PATCHES

       The modules that make up this application are the preprocessed output from several source
       files.  Patches against these source files are preferred.

AUTHOR

       Joel Roth, <joelz@pobox.com>

CONTRIBUTORS

       Alex Stone Brett McCoy Dubphil F. Silvain ++ Joy Bausch Julien Claassen ++ Kevin Utter
       Lars Bjørndal Philippe Schelté Philipp Überbacher Raphaël Mouneyres ++ Rusty Perez S.
       Massy ++

COPYRIGHT & LICENSE

       Copyright (c) 2009-2017 by Joel Roth.

       This is free software; you can redistribute it and/or modify it under the terms of the GNU
       General Public License, Version 3.