ECMC PVC example file convolver1
# ECMC PVC example "convovler1" creates cross-synthesis between a # trombone tone : # Sound_A_aiffinput=/sflib/wind/trb.a4 # and a portion of "voicetest" The analysis file was previously created # with the example script "pvanalysis.voicetest" # Sound_B_input_analysis_file=voicetestclip.pvc # Since the durations of Sound A (the input trombone tone, duration 2.53) # and Sound B (the analysis of "post processed by various", duration 1.459) do # not match, we create a function file to stretch (sow down) the 1.459 second #analysis file duration to match the 2.53 second duration of the trombone tone: # gen4 -L1000 0 0 0 2.53 1.459 > /snd/allan/stretchvoice # SOUND_B_lower_time_boundary=stretchvoice # 0 # int, float or FUNC # SOUND_B_upper_time_boundary=stretchvoice # -1 # int, float or FUNC # This function file is deleted at the conclusion of the job: # rm stretchvoice # remove the temporary function file # The outpain gain (which otherwise would be very low) is increased by 50 dB: # Convolution_gain_in_decibels=50 # int, float or FUNC # -1 to 1, int, float or FUNC #****************************************************** #................... 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/wind/trb.a4 Sound_B_input_analysis_file=voicetestclip.pvc outputsf=convolver1 # output soundfile outputformat=AIFF # for Linux only : specify AIFF or WAVE output format # ********************* # ##### Cmusic function file generator tempates ##### # This function, applied to the 2 time_boundary paramteres, causes # the analysis file (durationof 1.459) to be read # once over # 2.53 seconds (the duration of the trombone tone) gen4 -L1000 0 0 0 2.53 1.459 > /snd/allan/stretchvoice ##### End of gen routine function generator tempates ##### ##### 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/stretchvoice # int, float or FUN SOUND_B_upper_time_boundary=$SFDIR/stretchvoice # 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 #.................. 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=0 # int, float or FUNC #.................. DECIBELS .......................... Sound_A_gain_in_decibels=-0 # int, float or FUNC Sound_B_gain_in_decibels=-0 # int, float or FUNC Convolution_gain_in_decibels=-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=0 Sound_B_panpot_domain_warp=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 #====================================================== #========= SCRATCH SPACE ============================== #======================================================
#==================================================== # 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 stretchvoice