ECMC PVC example file convolver3-2
# ECMC PVC example convolver3-2 illustrates usage of the Sound A and Sound B
# panpot domain controls in convolver. These 2 parameters are raised from their
# default 0 values to +4 :
# Sound_A_panpot_domain_warp=4 # 0
# Sound_B_panpot_domain_warp=4 # 0
# When "morphing" from sound A to B or B to A through 0, which emphasizes
# convolution and suppress the originals, if the value get much above or below
# 0 we tend to hear mostly either Sound A or B, rather than the convoltion
# Positive warp values like the 4 above "stretch" (emphasize) the convolution
# and de-emphasize the original sounds.
# Compare this example with example "convolver3-1". Tne two files are
# identical in every respect except for the panpot_domain_warp values of 4
# in "convolver3-2"
#******************************************************
#................... CONVOLVER ........................
#******************************************************
     # ******ECMC CHANGES & ADDITIONS: ***************
#******** INPUT & OUTPUT SOUNDFILES *************
  # input soundfile, can be aiff or wave format on Linux, aiff only on SGI

Sound_A_input_soundfile=/sflib/string/vc.gs2
Sound_B_input_analysis_file=fl.c4.pvc
outputsf=convolver3-2 # convolver2  # output soundfile
outputformat=AIFF  # for Linux only : specify AIFF or WAVE output format
# ********************* #

   ##### Cmusic function file generator tempates #####

##### function file #####
# gen4 -Llength t1 v1 a1 ... tN vN
# function to make fl.c4 duration match  vc.gs2 duration
 gen4 -L1000 0 0 0 3.82 3.473 > $SFDIR/func1 
 # cross-fade function
 gen4 -L1000 0 -1 0 3.82 1 > $SFDIR/func2 

   ##### End of gen routine function generator tempates #####


output_data_format=1  # Do not use 2
   #  0=  Same as input file, 1 = integers 2 = rescaled floats 

#........... OUTPUT CHANNEL(S) .......................

Sound_A_channel_1_to_max__0_all=0
Sound_B_channel_1_to_max__0_all=0

# (channels are numbered from 1-maximum,0 = all channels
# 0-0 configurations will match A and B channels
# 0 with a single channel will apply single channel to
#  all channels of other file 

#======================================================
#............ SOUND A BEGIN/END TIMES .................

Sound_A_begintime=0
Sound_A_endtime=0
# (0 end time defaults to end of file)

#======================================================
#............. SOUND B TIME ...........................
SOUND_B_data_access_mode__explicit_0__rate_1=1
SOUND_B_time_point=0
SOUND_B_rate_multiplier=1  # int, float or FUNC

# In rate mode, set time_point to initial position.
# In explicit mode, control time_point with a function.
#  Rate_multiplier is nonfunctional in explicit mode.

#......................................................

SOUND_B_lower_time_boundary=$SFDIR/func1 # int, float or FUN
SOUND_B_upper_time_boundary=$SFDIR/func1 # int, float or FUN
# upper time < 0 defaults to file duration
#......................................................

autostop_on_1__off_0=1
# If on, this will terminate synthesis when a boundary is crossed

#======================================================
#*** ANALYSIS PARAMETERS ******************************
window_type=2
    # window type: 0 = Hamming,1 = rectangular, 2 = Blackman (DEFAULT),
    #  3 = Bartlett triangular, 4-12 = Kaiser windows for alpha = 4-12
    # generally recommended: 2 or 8
windowsize=0
  # set to 0 to autoset window to 2 * FFT

#======================================================
#*** RESYNTHESIS PARAMETERS ***************************

#.............OSCIL THRESHOLD ........................
oscillator_resynthesis_threshold_in_dB=-96

#****************** MODIFICATIONS *********************

#.................. TIME ..............................
time_expansion_contraction_factor=1.5

#.................. DECIBELS ..........................
OUTPUT_SPECTRUM_gain_in_decibels=0 # int, float or FUNC

#.................. PITCH .............................
OUTPUT_SPECTRUM_frequency_shift=0 # int, float or FUNC
OUTPUT_SPECTRUM_pitch_transposition_in_semitones=-0 # int, float or FUNC

#............ AMPLITUDE RESPONSE ......................

release_in_seconds=0   # int, float or FUNC
attack_in_seconds=0    # int, float or FUNC

#======================================================
#*** CONVOLUTION PANPOT (-1 to 1) (-1 = A,  1 = B )****
convolution_panpot_position=$SFDIR/func2   #  int, float or FUNC

#.................. DECIBELS ..........................

Sound_A_gain_in_decibels=0 # -30   #  int, float or FUNC
Sound_B_gain_in_decibels=0 # -30   #  int, float or FUNC
Convolution_gain_in_decibels=0 # 50   #  int, float or FUNC

#............ PANPOT DOMAIN WARP ......................
   #(warp values: 0 and greater)
  # warp: 0 = linear, incresingly positive warp 
  # values distribute the convolution center into the 
  # Sound A or B's panpot domain. 
Sound_A_panpot_domain_warp=4 #  0
Sound_B_panpot_domain_warp=4 #  0


#(The domain warp allows you to expand the useful
# convolution range on either side of the full 
# convolution point at 0 by warping the panpot range on
# that side.  Use increasingly positive  warp values
#  to expand the convolution center into the
# Sound A or B's panpot domain.  )

#======================================================
#****** CONVOLUTION OUTPUT LOW/HIGH SHELF EQ **********
FILTER_LOW_SHELF_EQ_gain_in_decibels=-0
FILTER_LOW_SHELF_EQ_frequency=200

FILTER_HIGH_SHELF_EQ_gain_in_decibels=0
FILTER_HIGH_SHELF_EQ_frequency=1000
#======================================================
#........... RESCALE for floating point only ......
rescale_level_in_decibels=0
   # set to 1 to rescale to peak of input file; do not do this if input amplitude
   # is low

#======================================================
#********** AMPLITUDE STATISTICS ******************** 
print_amplitude_statistics_0_no__1_yes=1
amplitude_statistics_time_interval=.25


#====================================================
# COMMAND LINE SETUP -- OFFICE USE ONLY
#      (DO NOT WRITE BELOW THIS LINE)
#====================================================
PVCDIR=/usr/local/soundapps/PVC
PVCBIN=$PVCDIR/bin
cd $SFDIR  # ECMC

if  [ "$OSTYPE" = "irix" ]
then
   input_file=pvcin  # ECMC temporary NeXT format input soundfile
   output_file=pvcout  # ECMC temporary NeXT format output soundfile
   /sbin/rm -f pvcin pvcout  
   #  Create temporary NeXT format input soundfile "pvcin:" ECMC
   /usr/local/bin/sox -t aiff $Sound_A_input_soundfile -t au pvcin
elif [ `echo "$OSTYPE" | grep linux`  ]
 then
  input_file=$Sound_A_input_soundfile
  output_file=$outputsf
fi
#  ****** end of ECMC changes & additions ****** #
# SYNTHESIS
pvroutine=convolver 

PVFLAGS="\
\
-M$windowsize \
-w$window_type \
-I$time_expansion_contraction_factor \
\
-a$OUTPUT_SPECTRUM_frequency_shift \
-P$OUTPUT_SPECTRUM_pitch_transposition_in_semitones \
-A$OUTPUT_SPECTRUM_gain_in_decibels \
\
-C$Sound_A_channel_1_to_max__0_all \
-t$oscillator_resynthesis_threshold_in_dB \
\
-b$Sound_A_begintime \
-e$Sound_A_endtime \
\
-q$Sound_A_gain_in_decibels \
-B$Sound_B_gain_in_decibels \
-Z$Convolution_gain_in_decibels \
-L$release_in_seconds \
-l$attack_in_seconds \
-F$Sound_B_input_analysis_file \
\
-u$SOUND_B_data_access_mode__explicit_0__rate_1 \
-K$Sound_B_channel_1_to_max__0_all \
-Q$SOUND_B_time_point \
-Y$SOUND_B_rate_multiplier \
-g$SOUND_B_lower_time_boundary \
-G$SOUND_B_upper_time_boundary \
\
-S$convolution_panpot_position \
-j$Sound_A_panpot_domain_warp \
-J$Sound_B_panpot_domain_warp \
\
-H$FILTER_LOW_SHELF_EQ_gain_in_decibels \
-m$FILTER_LOW_SHELF_EQ_frequency \
\
-X$FILTER_HIGH_SHELF_EQ_gain_in_decibels \
-R$FILTER_HIGH_SHELF_EQ_frequency \
\
-y$autostop_on_1__off_0 \
\
-p$print_amplitude_statistics_0_no__1_yes \
-i$amplitude_statistics_time_interval \
\
-_$output_data_format \
-=$rescale_level_in_decibels \
\
"
echo "\n$pvroutine $PVFLAGS $Sound_A_input_file $output_file"

$pvroutine  $PVFLAGS $input_file $output_file   ;
# *****  ECMC CHANGES & ADDITIONS: ******* #
if  [ "$OSTYPE" = "irix" ]
then
   echo 'Converting temporary NeXT format output soundfile to aiff format:"'
   /usr/local/bin/sox -t au pvcout -t aiff  $outputsf # ECMC
   /sbin/rm -f pvcin pvcout   # ECMC
   echo "Header information for output soundfile >> $outputsf << :"
   /usr/sbin/sfinfo -s $outputsf # ECMC
elif [ `echo "$OSTYPE" | grep linux`  ]
then
   if  [ "$outputformat" = "AIFF" ] 
     then
            echo "   Converting output soundfile $output_file to AIFF format ..."
            /usr/local/soundapps/PVC/bin/wav2aiff $output_file
   fi
   echo "Header information for output soundfile >> $outputsf << :"
   /usr/local/bin/sfinfo -s $outputsf 
fi
#  ****** end of ECMC changes & additions ****** #


# If you have created any gen function files above delete them below:
rm func1 func2