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 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.