The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Audio::Ecasound::Multitrack - Perl extensions for multitrack audio processing

Nama - Lightweight multitrack recorder/mixer

SYNOPSIS

nama [options] [project_name]

DESCRIPTION

Audio::Ecasound::Multitrack provides class libraries for tracks and buses, and a track oriented user interface for managing runs of the Ecasound audio-processing engine.

Nama is a lightweight recorder/mixer application that configures Ecasound as a single mixer bus.

By default, Nama starts up a GUI interface with a command line interface running in the terminal window. The -t option provides a text-only interface for console users.

OPTIONS

-d project_root

Use project_root as Nama's top-level directory. Default: $HOME/nama

-f config_file

Use config_file instead of default .namarc

-g

GUI/text mode (default)

-t

Text-only mode

-c

Create the named project

-a

Save and reload ALSA mixer state using alsactl

-m

Don't load saved state

-r

Regenerate effects data cache

CONTROLLING ECASOUND

Ecasound is configured through use of chain setups. Chain setups are central to controlling Ecasound. Nama generates appropriate chain setups for recording, playback, and mixing covering a large portion of Ecasound's functionality.

Commands for audio processing with Nama/Ecasound fall into two categories: static commands that influence the chain setup and dynamic commands that influence the realtime behavior of the audio processing engine.

STATIC COMMANDS

Setting the REC/MON/OFF status of a track by the rec/mon/off commands, for example, determine whether that track will be included next time the transport is armed, and whether the corresponding audio stream will be recorded to a file or played back from an existing file. Other static commands include loop_enable jack/nojack, and stereo/mono.

CONFIGURING THE ENGINE

The generate command creates a new chain setup. connect configures the engine using the most recently created setup. arm is equivalent to generate followed by connect. Issuing arm just prior to starting the engine ensures that any changes you've made by issuing static commands are reflected in the next processing run.

DYNAMIC COMMANDS

Once a chain setup is loaded, another subset of commands controls the audio processing engine. Commonly used dynamic commands include start and stop; forward, rewind and setpos commands for repositioning the playback head; and vol and pan for adjusting effect parameters. Effect parameters may be adjusted at any time. Effects may be added audio processing, however the additional latency will cause an audible click.

DIAGNOSTICS

Once generated by generate or arm commands, the chain setup may be inspected with the chains command. The showio command displays the data structure used to generate the chain setup. dump displays data for the current track. dumpall shows the state of most program objects and variables (identical to the State.yml file created by the save command.)

Tk GRAPHICAL UI

Invoked by default, the Tk interface provides all functionality on two panels, one for general control, the second for effects.

Logarithmic sliders are provided automatically for effects with hinting. Text-entry widgets are used to enter parameters for effects where hinting is not available.

After issuing the arm or connect commands, the GUI time display changes color to indicate whether the upcoming operation will include live recording (red), mixdown only (yellow) or playback only (green). Live recording and mixdown can take place simultaneously.

The text command prompt appears in the terminal window during GUI operation. Text commands may be issued at any time.

TEXT UI

Press the Enter key if necessary to get the following command prompt.

    nama ('h' for help)>

You can enter Nama and Ecasound commands directly, 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 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.

TRACKS

Ecasound deals with audio processing at the level of devices, files, and signal-processing chains. Nama implements tracks to provide a level of control and convenience comparable to many digital audio workstations.

Each track has a descriptive name (i.e. vocal) and an integer track-number assigned when the track is created.

VERSION NUMBER

Multiple WAV files can be recorded for each track. These are identified by a version number that increments with each recording run, i.e. sax_1.wav, sax_2.wav, etc. All files recorded at the same time have the same version numbers.

Version numbers for playback can be selected at the group and track level. By setting the group version number to 5, you can play back the fifth take of a song, or perhaps the fifth song of a live recording session.

The track's version setting, if present, overrides the group setting. Setting the track version to zero restores control of the version number to the default group setting.

REC/MON/OFF

REC/MON/OFF status is used to generate the chain setup for an audio processing run.

Each track, including Master and Mixdown, has its own REC/MON/OFF setting and displays its own REC/MON/OFF status. The Tracker group, which includes all user tracks, also has REC, MON and OFF settings. These provides a convenient way to control the behavior of all user tracks.

As the name suggests, REC status indicates that a track is ready to record a WAV file. You need to set both track and group to REC to source an audio stream from JACK or the soundcard.

MON status indicates an audio stream available from disk. It requires a MON setting for the track or group as well as the presence of file with the selected version number.

OFF status means that no audio is available for the track from any source. A track with no recorded WAV files will show OFF status, even if set to MON.

An OFF setting for the track or group always results in OFF status. A track with OFF status will be excluded from the chain setup. (This setting is distinct from the action of the mute command, which sets the volume of the track to zero.)

All user tracks belong to the Tracker group, which has a group REC/MON/OFF setting and a default version setting for the entire group.

Setting the group to MON (group_monitor or gmon) forces user tracks with a REC setting to MON status if a WAV file is available to play, or OFF status if no audio stream is available.

The group MON mode triggers automatically after a recording has created new WAV files.

The group OFF setting (text command group_off) excludes all user tracks from the chain setup, and is typically used when playing back mixdown tracks. The mixplay command sets the Mixdown group to MON and the Tracker group to OFF.

The Master bus has only MON/OFF status. Setting REC status for the Mixdown bus has the same effect as issuing the mixdown command. (A start command must be issued for mixdown to commence.)

BUGS AND LIMITATIONS

Some functions including loop_enable solo/all, jack/nojack, stereo/mono are available only as text commands.

Ecasound parameter controllers may be applied through Ecasound-IAM commands, but are not supported by Nama and the settings are not stored by the save command.

The GUI interface appears able to apply controllers, however these settings have no effect.

EXPORT

None by default.

AVAILABILITY

CPAN, for the distribution.

Pull source code using this command:

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

Build instructions are contained in the README file.

AUTHOR

Joel Roth, <joelz@pobox.com>