ECMC HELP FILE FOR PVC

PVC is a collection of excellent phase vocoder programs (currently the most extensive and powerful phase vocoder programs I know of) written by Paul
Koonce and available on the ECMC SGI and Linux systems. Documentation in HTML format is available online through a link in the page of the ECMC web site (read the ECMC version rather than Paul Koonce's original version). This document, also included in the hardcopy SGI DOCs and LINUX DOCs binders in the studios, has been edited by Allan Schindler to reflect ECMC usage, and should be your principal starting point and reference source for work with the PVC programs.

To simplify usage of many (but by no means all) of the PVC programs described in the html documentation, I have created local scripts, with the routine name followed by the extension .tmp ("template") based upon models provided by Koonce, that can be used to run these programs. To obtain a list of currently available ECMC templates for PVC programs, type

pvc.tp
To obtain a usage summary on using one of these template scripts, type the script name with no arguments. Example: Typing

plainpv.tp
will display the following usage summary:
plainpv.tp syntax: plainpv.tp insound [outsound] [> scriptfile]
where "insound" is the name (and, if necessary, path) of the input
soundfile and the optional "outsound" argument is the name of the
output resynthesis soundfile. If the "outsound" argument is omitted
the output soundfile will be named "test."
After capturing this template in an ascii file and editing this
file, run plainpv with this script file with the command:
                sh scriptfile

To see a "plainpv" template file without providing soundfile arguments type
                plainpv.tp -

In addition to these .tp script templates, I have created example script files for many (but, again, not for all) of the PVC programs. To obtain a listing of these example files, type

pvcex
To display one or more of these example PVC script files type:

pvcex inputfilename(s)
You may want to pipe the output into a paging program such as "less" or "more", like this:

pvcex plainpv1 | less

To capture one or more of these files, type:

pvcex inputfilename(s) > outputfile

Hardcopy of all of these example files is available in this ECMC PVC EXAMPLES binder, which is available in the studios.

Soundfiles in the /sflib/x directory exist for all of these examples except for a few that do not create soundfiles, but instead create an analysis file or some other type of file.

To learn how to use plainpv, the most basic program in the PVC package, or any other PVC program for which an ECMC .tp script template exists, I recommend the following steps:

  1. Read a portion of the online or hardcopy HTML documentation on PVC and find a program you want to try.
  2. Find out if an ECMC script exists for the program by typing

    pvc.tp
    If an ECMC script does exist:
  3. Find out whether one or more ECMC example files exist for the program by typing
    pvcex
    and note the names of example files for the program. In the case of plainpv, there are lots of examples, and we probably would begin with example plainpv1. (LI> Look at one of the example files. To see example plainpv1, for example, type

    pvcex plainpv1
    or else consult the printout of this file in this ECMC PVC EXAMPLES binder. While studying this example, listen to the compiled soundfile in the /sflib/x directory that was created by this example file:
    psfl plainpv1
  4. Look at, and listen to, other examples created by the program, such as plainpv2, plainpv5 and plainpv8.
  5. When you are ready to use the program yourself, obtain a template file for the program. For a usage summary of how to use an ECMC .tp script, type the script name with no arguments:

    plainpv.tp
    Then type
    plainpv.tp insound outsound
    where insound and outsound are the names of the input and output soundfiles. If everything looks okay, capture this output into a file:

    !! > scriptfile

    or else simply

    plainpv.tp insound outsound > scriptfile

    to create a script file with analysis and resynthesis parameters that you can edit and then use to run plainpv.

  6. Next open this script file with your favorite text editor and change some of the default parameter values within the top half of the file to meet your resynthesis goals. Do not change anything within the bottom half of the file (after the OFFICE USE ONLY line. except, at the very end, to delete any (temporary) function files you have created. The pound sign # serves as the comment symbol for all PVC scripts, and all characters on a line that follow this symbol are ignored by the PVC program.
    (8) When your script file is ready, run the program with the command

    sh scriptfile
    (Note that PVC scripts must be run by a Bourne shell, with the sh command. The Bourne shell, the oldest type of Unix shell, differs in some ways from the csh (or tcsh) with which you probably are more familiar.)
  7. When the job is completed, play the resulting soundfile. If you aren't completely happy with the result, edit the script file again and run it again.

Phase vocoder jobs sometimes can a while to run. You can suspend any PVC job in process at any time by typing ^z (control-z). However, on the ECMC SGI systems (but not on our Linux systems), the partially compiled output soundfile will be in NeXT, not AIFF format, and will have the temporary name pvcout

To play this partially completed soundfile, type

play pvcout ( SGI systems) or
play outfilename ( Linux systems)

Resume compilation by typing % or fg. To kill the job, type ^c after resumption. On the Linux systems, after suspending a compile job, you can play the partially compiled output soundfile simply by typing: play soundfilename
where "soundfilename" is the name of the output soundfile.

Many of the parameter values in the PVC programs can be controlled by means of time varying function tables created with Cmusic gen routines that are bundled with the PVC distribution. These Cmusic gen routines are similar in many respects to Csound gen routines, but there are some important differences as well, as discussed and illustrated at length within the ECMC version of the HTML PVC documentation. Additional information on these gen routines, excerpted from F. Richard Moore's text Elements of Computer Music, first edition, is included as an appendix within this binder.

A.S. 10/24/98, revised 1/21/01