ECMC notes by A. S. on using the PVC program "inharmonator" :

Frankly, I do not understand completely how a couple of the important
parameters in this program work, so there is an element of
heuristic trial-and-error in using "inharmoonator."

The program allows one to alter the frequency and amplitude of any
number of partials within the source sound. Partials to be altered
are called the TARGETS, and the remaining (unaltered) partials
are called the NON_TARGETS in several of the parameter names.

However, the amount by which a partial is shifted in frequency (pitch)
results from a combination of two parameter arguments, leading to
complication and, often, difficulty in determining the exact amount
of the frequency shift.

(1) The first argument you may want to adjust is
   INHARMONATOR_fundamental_frequency=500  # int, float or FUNC
for which the inharmonator.tp template provides these comments:

 #  IMPORTANT: If possible change the default value of 500 above
  #  to the fundamental frequency, in herz, of the input soundfile
  #  Use the "midinote" command, or else consult the help file "herz"
  #  to determine this frequuency
  #  For inharmonic sounds, try changing the 500 default to various other
  #  values, and choose the value that provides the best result

(2) Next, determine the method to be used to specify frequency shifts.
Three alternative methods are available. The method to be used is
determined by the
  SHIFT_METHOD_multiplier_0_or_frequency_map_1_or_pitch_map_2=0
parameter:
   (1) If set to 0, the default, frequency shifts will be specified
       as multipliers. A value of .5 would shift the partial down
       an octave, a value of 1.5 up a perfect 5th, and so on.
   (2) If the SHIFT_METHOD argument is set to 1, the shifts are specified
       in herz
   (3) If the SHIFT_METHOD argument is set to 2, the shifts are specified
       in octave pitch class notation (e.g. 8.00 = middle C = 261.6 hz.
However, whichever of these 3 methods is used, the frequency shifts
also will be affected by the
     INHARMONATOR_fundamental_frequency
value discussed in step (1) above.

(3) Next, create a TARGETS SHIFT file by editing the template provided
in the following portion of the inharmonator.tp script:

   #*****TARGETS SHIFT FILE: DATA FORMAT
   # Edit the template table below, changing the 3 values for each partial
   # and adding or deleting lines to specify more or less than 10 target# partials. Do not include any comments within this function definition.
   # 1) partial number
   # 2) shift
   # 3) decibels

   echo \
   \
   1       1           -0 \
   2       1           -0 \
   3       1           0 \
   4       1           -0 \
   5       1           -0 \
   \
   6       1           -0 \
   7       1           -0 \
   8       1           0 \
   9       1           0 \
   10      1           0 \
   \
   > $SFDIR/inharmonatorfile ;

This template-within-a-template specifies 10 TARGET partials -- partial
numbers 1 through 10, the lowest 10 partials of the source sound,
beginning, I think, with the
     INHARMONATOR_fundamental_frequency
frequency.
frequency.
If you want to specify fewer than 10 target partials, delete some
of these  lines.
Then, for each of the target partials, edit one of these lines, changing
the default values (which will produce no alteration in the source
spectrum) to the 1) partial number, 2) the amount of frequency shift,
and 3) any change in the amplitude of this partial, expressed in dB

(4) Another importtant parameter is 
NON_TARGETS_gain_in_dB=-96
   # Range 0 to -96 (the default)
   # -96 provides the maximum possible suppresion of non-target partials
   # but does not provide complete suppression
   # 0 causes no attenuation in the amplitude of the non-target partials

(5) Although the parameters discussed above provide more than enough 
complication for most users, several additional parameters provide
further modification options that can be applied independently to
the target and and non-target groups of partials, or to the output
sound as a whole.

