ECMC notes by A. S. on using the
PVC program "inharmonator" :
IMPORTANT NOTE: Currently the Linux version of the inharmonator
program is BROKEN, and inharmonator can only be used on the
ECMC SGI systems. However, many (though not all) of the sound
modification resources of inharmonator can also be achieved by
using "chordmapper," which is available on the ECMC Linux as
well as SGI systems. For example, compare ECMC PVC example
"inharm1", and its 4 sources, "inharm1-1, inharm1-2, inharm1-3"
and "inharm1-4" with "example "chordmapper3" and its 4
sources ("chordmapper3-1" through "chordmapper3-4").
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 "inharmonator."
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
(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
(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
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
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
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
# 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.