www.gusucode.com > 声音的处理有:LPC,FFT,共振峰,频谱源码程序 > siganlandsystemusingMatlab/SSUM/birds/old/birdcall.m

    function birdcall(birdname)
% BIRDCALL('birdname')
%-------------------------------------------------------
%	MATLAB code created for MAT201a: Signals and Systems
%		Bob L. Sturm and Dr. Jerry Gibson
%	Copyright University of California, Santa Barbara
%-------------------------------------------------------
%	birdcall.m
%	This code is a demonstration of additive synthesis
%	to make bird calls.
%
%	Possible birds:
%	'Yellow_Warbler', 'Western_Meadowlark', 'Orchard_Oriole',
%	'Chipping_Sparrow', 'Scissor_Tailed_Flycatcher',
%	'Black_Throated_Gray_Warbler', 'Cassins_Kingbird',
%	'Black_Necked_Stilt', 'Chestnut_Sided_Warbler',
%	'Great_Horned_Owl', 'Grasshopper_Sparrow', 'Swamp_Sparrow',
%	'Golden_Crowned_Sparrow', 'Indigo_Bunting', 'Robin',
%	'Nashville_Warbler', 'Rufous_Sided_Towhee', 'Random_Bird'
%
%	Author: Bob L. Sturm	20030722
%-------------------------------------------------------

%%%%%%%%
% To-Do: (students)
%	hooded-warbler, american-widgeon, louisiana-waterthrush,
%	solitary-vireo, pigeon-hawk, cerulean-warbler, eastern-phoebe,
%	painted-bunting, western-flycatcher, bachmans-sparrow,
%	cedar-waxwing, bairds-sparrow, kentucky-warbler,
%	prothonotary-warbler, audubons-warbler, lark-bunting,
%	eastern-bluebird, chuck-wills-widow, blue-gray-gnatcatcher,
%	black-throated-sparrow, black-chinned-sparrow, 
%

if (nargin < 1)
	birdname = 'all';
end

Fs = 44100;

% General purpose envelopes
amp = [.00 .00 .25 1.00 .60 .70 .75 1.00 1.00 .0];
tap = [.00 .00 .01 1.00 .99 1.00 1.00 .0];
bird_amp = [.00 .00 .25 1.00 .75 1.00 1.00 .0];
partial = [1 1];

if (max(strcmp(birdname,{'all', 'Yellow_Warbler'})))
	% MATLAB code for yellow-warbler
	% These are the frequency and amplitude envelopes
	% Time is ratio of segment duration, 1 = duration.
	% Format is : [time1 val1 time2 val2 ...]
	%fprintf('Yellow_Warbler\n');
	yellow_up 	= [.00 .00 .60 1.00 1.0 0.5];
	yellow_swirl= [.00 1.00 .05 1.00 .60 .00 .80 .30 1.0 0.1];
	yellow_down = [.00 1.00 1.00 0];
	yellow_last = [.00 .00 .30 .20 .80 .70 1.0 1.0];
	swirl_amp 	= [.00 .00 .90 1.00 1.00 .0];

	% Score for the Yellow Warbler
	% Format is: {begin dur freq freq_skew amp freq_env amp_env <partials>}
	num_notes = 9;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .05 5600 400 .05 yellow_up amp partial};
	pscore(2,:) = {.23 .12 5000 1500 .15 yellow_swirl swirl_amp partial};
	pscore(3,:) = {.45 .13 5000 1700 .17 yellow_swirl swirl_amp partial};
	pscore(4,:) = {.62 .16 5000 2000 .20 yellow_swirl swirl_amp partial};
	pscore(5,:) = {.85 .15 5000 2000 .20 yellow_swirl swirl_amp partial};
	pscore(6,:) = {1.05 .075 3700 1000 .20 yellow_down amp partial};
	pscore(7,:) = {1.15 .075 3700 800 .15 yellow_down amp partial};
	pscore(8,:) = {1.25 .075 3700 800 .15 yellow_down amp partial};
	pscore(9,:) = {1.4 .2 3700 2000 .2 yellow_last swirl_amp partial};

end

if (max(strcmp(birdname,{'all', 'Western_Meadowlark'})))
	%fprintf('Western_Meadowlark\n');
	no_skw = [.00 .00 1.00 .0];
	down_skw = [.00 1.00 .40 .40 1.00 .0];
	fas_down = [.00 1.00 1.00 .0];
	amp 	= [.00 .00 .25 1.00 .60 .70 .75 1.00 1.00 .0];
	partials = [1 1 2 .04];

	num_notes = 8;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.800 .1 2010.000 0.000 .100 no_skw amp partials};
	pscore(2,:) = {1.100 .15 3000.000 100.000 .110 down_skw amp partials};
	pscore(3,:) = {1.300 .25 2000.000 150.000 .200 down_skw amp partials};
	pscore(4,:) = {1.650 .15 3010.000 250.000 .110 down_skw amp partials};
	pscore(5,:) = {1.850 .10 2200.000 150.000 .110 down_skw amp partials};
	pscore(6,:) = {2.000 .10 3200.000 1400.000 .110 fas_down amp partials};
	pscore(7,:) = {2.200 .05 2000.000 200.000 .110 fas_down amp partials};
	pscore(8,:) = {2.300 .10 1600.000 0.000 .110 fas_down amp partials};

end

%%%%%%%%

if (max(strcmp(birdname,{'all', 'Orchard_Oriole'})))
	%fprintf('Orchard_Oriole\n');
	oriup = [.00 .00 1.00 1.0];
	oridwn = [.00 1.00 1.00 .0];
	oriupdwna = [.00 .00 .60 1.00 1.00 .60 ];
	oriupdwnb = [.00 .50 .30 1.00 1.00 .0];
	oribiga = [.00 .90 .15 1.00 .40 .30 .60 .60 .85 .00 1.00 .0];
	orimid = [.00 1.00 .05 .50 .10 1.00 .25 .00 .85 .50 1.00 .0];
	oridwnup = [.00 .30 .25 .00 1.00 1.0];
	oriamp = [.00 .00 .10 1.00 1.00 .0];

	num_notes = 16;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.38 .03 3700 100 .05 oridwn amp [1 1]};
	pscore(2,:) = {.41 .05 2500 1000 .1 oriup amp [1 1]};
	pscore(3,:) = {.5 .1 2000 800 .2 oriupdwna amp [1 1 2 .02 3 .05]};
	pscore(4,:) = {.65 .03 3900 1200 .1 oridwn amp [1 1]};
	pscore(5,:) = {.7 .21 2000 1200 .15 oribiga amp [1 1 2 .05]};
	pscore(6,:) = {1.0 .05 4200 1000 .1 oridwn amp [1 1]};
	pscore(7,:) = {1.1 .1 2000 1000 .25 orimid amp [1 1 2 .05]};
	pscore(8,:) = {1.3 .1 2000 1000 .25 orimid amp [1 1 2 .05]};
	pscore(9,:) = {1.48 .1 2300 3200 .1 oriupdwnb oriamp [1 1]};
	pscore(10,:) = {1.65 .03 1800 300 .05 oriup amp [1 1]};
	pscore(11,:) = {1.7 .03 2200 100 .04 oridwn amp [1 1]};
	pscore(12,:) = {1.8 .07 2500 2000 .15 oriupdwnb oriamp [1 1]};
	pscore(13,:) = {1.92 .2 2400 1200 .25 oridwnup amp [1 1 2 .04]};
	pscore(14,:) = {2.2 .02 2200 3000 .04 oriup amp [1 1]};
	pscore(15,:) = {2.28 .02 2200 3000 .04 oriup amp [1 1]};
	pscore(16,:) = {2.4 .17 2000 1000 .2 oriupdwna oriamp [1 1 2 .04]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Chipping_Sparrow'})))
	%fprintf('Chipping_Sparrow\n');
	chip_up = [.00 .80 .15 1.00 .75 .30 1.00 .0];

	num_notes = 17;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(2,:) = {.06 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(3,:) = {.12 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(4,:) = {.18 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(5,:) = {.24 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(6,:) = {.30 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(7,:) = {.36 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(8,:) = {.42 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(9,:) = {.48 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(10,:) = {.54 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(11,:) = {.60 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(12,:) = {.66 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(13,:) = {.72 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(14,:) = {.78 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(15,:) = {.84 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(16,:) = {.90 .05 4000 2400 .2 chip_up amp [1 1]};
	pscore(17,:) = {.96 .05 4000 2400 .2 chip_up amp [1 1]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Scissor_Tailed_Flycatcher'})))
	%fprintf('Scissor_Tailed_Flycatcher\n');
	scissor = [.00 .00 .40 1.00 .60 1.00 1.00 .0];

	num_notes = 3;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .05 1800 1800 .2 scissor amp [1 .5 2 1 3 .5 4 .1 5 .01]};
	pscore(2,:) = {0.5 .05 1800 1800 .2 scissor amp [1 .5 2 1 3 .5 4 .1 5 .01]};
	pscore(3,:) = {1.0 .05 1800 1800 .2 scissor amp [1 .5 2 1 3 .5 4 .1 5 .01]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Black_Throated_Gray_Warbler'})))
	%fprintf('Black_Throated_Gray_Warbler\n');
	grayone = [.00 .50 .02 .60 .04 .45 .06 .62 .08 .40 .10 .65 .12 .35 .14 ...
			.70 .18 .30 .20 .70 .22 .30 .24 .70 .25 .20 .30 .80 .35 .10 ... 
			.40 .90 .45 .00 .50 1.00 .55 .00 .60 1.00 .65 .00 .70 1.00 ...
			.75 .00 .80 1.00 .85 .00 .90 1.00 .95 .00 1.00 .50];
	graytwo = [.00 .00 .01 .40 .02 .00 .03 .40 .04 .00 .05 .40 .06 .00 .07...
			.40 .08 .00 .09 .40 .10 .00 .25 .80 .40 .30 .55 1.00 .70 .00 ...
			.85 .80 1.00 .40];
	graythree = [.00 1.00 .01 .60 .02 1.00 .03 .60 .04 1.00 .05 .60 .06...
			1.00 .07 .60 .08 1.00 .09 .60 .10 1.00 .11 .60 .12 1.00 .13...
			.60 .14 1.00 .15 .60 .16 1.00 .17 .60 .18 1.00 .19 .60 .20...
			1.00 .21 .55 .22 1.00 .23 .50 .24 1.00 .25 .50 .26 1.00 .27...
			.50 .28 1.00 .29 .50 .30 1.00 .31 .50 .32 1.00 .33 .50 .34...
			1.00 .35 .50 .36 1.00 .37 .50 .38 1.00 .39 .50 .40 1.00 .41...
			.50 .42 1.00 .43 .50 .44 1.00 .45 .50 .46 1.00 .47 .50 .48...
			1.00 .49 .50 .50 1.00 .51 .50 .52 1.00 .53 .50 .54 1.00 .55...
			.50 .56 1.00 .57 .50 .58 1.00 .59 .50 .60 1.00 1.00 .0];
	grayfour = [.00 .00 1.00 1.0];

	num_notes = 11;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .12 3700 600 .05 grayone amp [1 1]};
	pscore(2,:) = {.18 .08 3000 800 .07 graytwo amp [1 1]};
	pscore(3,:) = {.28 .12 3700 600 .12 grayone amp [1 1]};
	pscore(4,:) = {.44 .08 3000 800 .15 graytwo amp [1 1]};
	pscore(5,:) = {.54 .12 3700 600 .20 grayone amp [1 1]};
	pscore(6,:) = {.72 .08 3000 800 .25 graytwo amp [1 1]};
	pscore(7,:) = {.82 .12 3700 600 .25 grayone amp [1 1]};
	pscore(8,:) = {.96 .2 3000 2000 .2 graythree amp [1 1]};
	pscore(9,:) = {1.2 .02 4500 500 .05 grayfour amp [1 1]};
	pscore(10,:) = {1.25 .02 4200 800 .05 grayfour amp [1 1]};
	pscore(11,:) = {1.3 .02 4000 900 .05 grayfour amp [1 1]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Cassins_Kingbird'})))
	%fprintf('Cassins_Kingbird\n');
	kingfirst = [.00 .30 .45 1.00 .90 .10 1.00 .0];
	kingsecond = [.00 .00 .02 .50 .04 .00 .06 .55 .08 .05 .10 .60 .12...
			.05 .14 .65 .16 .10 .18 .70 .20 .10 .22 .75 .24 .15 .26...
			.80 .28 .20 .30 .85 .32 .25 .34 .90 .36 .30 .38 .95 .40...
			.40 .42 1.00 .44 .50 .46 1.00 .48 .45 .50 1.00 .52 .50...
			.54 1.00 .56 .40 .58 .95 .60 .40 .62 .90 .64 .40 .66 .85...
			.68 .35 .70 .80 .72 .30 .74 .75 .76 .25 .78 .70 .80 .20...
			.82 .65 .84 .10 .86 .60 .88 .00 .90 .55 .92 .00 .94 .50...
			.96 .00 1.00 .40];

	num_notes = 2;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.03 .04 1700 1200 .15 kingfirst amp [1 1 2 .5 3 0 4 .2]};
	pscore(2,:) = {.12 .18 1700 900 .25 kingsecond amp [1 1 2 .01 3 0 4 .1]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Black_Necked_Stilt'})))
	%fprintf('Black_Necked_Stilt\n');
	upamp = [.00 .00 .90 1.00 1.00 .0];
	rampup = [.00 .00 .50 1.00 1.00 .20];

	num_notes = 3;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .1 900 100 .2 rampup upamp [1 .5  2 1 3 .75 4 .5  5 .1]};
	pscore(2,:) = {.30 .1 900 200 .2 rampup upamp [1 .5  2 1 3 .75 4 .5  5 .1]};
	pscore(3,:) = {.60 .1 900 250 .2 rampup upamp [1 .5  2 1 3 .75 4 .5  5 .1]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Chestnut_Sided_Warbler'})))
	%fprintf('Chestnut_Sided_Warbler\n');
	ycurve = [.00 1.00 .30 .50 .60 1.00 .80 .20 1.00 .0];
	vcurve = [.00 .20 .50 1.00 1.00 .0];
	wcurve = [.00 .50 .15 .00 .45 .10 .60 1.00 .70 .90 1.00 .90];
	upcurve = [.00 .00 .95 1.00 1.00 1.0];
	downcurve = [.00 1.00 .25 .30 .60 .15 1.00 .0];
	louder = [.00 .00 .90 1.00 1.00 .0];
	wamp = [.00 .00 .10 1.00 .40 .10 .50 .90 .60 .10 .70 1.00 1.00 .0];
	partials = [1 1 2 .1];

	num_notes = 13;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.1 .1 4050 1200 .05 ycurve amp partials};
	pscore(2,:) = {.25 .03 3900 300 .075 vcurve amp partials};
	pscore(3,:) = {.3 .1 4050 1200 .15 ycurve louder partials};
	pscore(4,:) = {.42 .03 3800 500 .1 vcurve amp partials};
	pscore(5,:) = {.5 .1 4000 1200 .2 ycurve tap partials};
	pscore(6,:) = {.65 .03 3800 500 .15 vcurve amp partials};
	pscore(7,:) = {.72 .1 4000 1200 .2 ycurve tap partials};
	pscore(8,:) = {.85 .03 3800 500 .15 vcurve amp partials};
	pscore(9,:) = {.91 .1 4000 1200 .2 ycurve tap partials};
	pscore(10,:) = {1.05 .12 3800 2200 .15 wcurve wamp partials};
	pscore(11,:) = {1.20 .12 3800 2200 .15 wcurve wamp partials};
	pscore(12,:) = {1.35 .12 2500 2200 .25 upcurve louder partials};
	pscore(13,:) = {1.50 .12 2500 4000 .15 downcurve amp partials};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Great_Horned_Owl'})))
	%fprintf('Great_Horned_Owl\n');
	owlup = [.00 .00 .30 1.00 1.00 1.0];
	owldown = [.00 1.00 1.00 .0];
	partials = [1 1 3 .02 7 .01];

	num_notes = 4;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.3 .1 300 0 .1 amp amp partials};
	pscore(2,:) = {.6 .4 293 6 .1 owldown amp partials};
	pscore(3,:) = {1.75 .35 293 7 .1 owlup amp partials};
	pscore(4,:) = {2.5 .2 300 0 .1 owlup amp partials};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Grasshopper_Sparrow'})))
	%fprintf('Grasshopper_Sparrow\n');
	grassone = [.00 .50 .02 .80 .04 .30 .06 .80 .07 .10 .08 .90 .10 .00 .11...
				.90 .12 .00 .13 .90 .14 .10 .15 1.00 .16 .10 .17 1.00 .18...
				.10 .19 1.00 .20 .10 .21 1.00 .22 .10 .23 1.00 .24 .10 .25...
				1.00 .26 .10 .27 1.00 .28 .10 .29 1.00 .30 .10 .31 1.00 .32...
				.10 .33 1.00 .34 .10 .35 1.00 .36 .10 .37 1.00 .38 .10 .39...
				1.00 .40 .10 .41 1.00 .42 .10 .43 1.00 .44 .10 .45 1.00 .46...
				.10 .47 1.00 .48 .10 .49 1.00 .50 .10 .51 1.00 .52 .10 .53...
				1.00 .54 .10 .55 1.00 .56 .10 .57 1.00 .58 .10 .59 1.00 .60...
				.10 .61 1.00 .62 .10 .63 1.00 .64 .10 .65 1.00 .66 .10 .67...
				1.00 .68 .10 .69 1.00 .70 .10 .71 1.00 .72 .10 .73 1.00 .74...
				.10 .75 1.00 .76 .10 .77 1.00 .78 .10 .79 1.00 .80 .10 .81...
				1.00 .82 .10 .83 1.00 .84 .10 .85 1.00 .86 .10 .87 1.00 .88...
				.10 .89 1.00 .90 .10 .91 1.00 .92 .10 .93 1.00 .94 .10 .95...
				1.00 .96 .10 .97 1.00 .98 .10 1.00 1.0];
	grasstwo = [.00 .00 .10 1.00 .20 .00 .30 1.00 .40 .00 .50 1.00 .60 .00...
				.70 1.00 .80 .00 .90 1.00 1.00 .0];

	num_notes = 4;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.49 .01 8000 100 .1 grasstwo amp [1 1]};
	pscore(2,:) = {.60 .01 5700 300 .1 grasstwo amp [1 1]};
	pscore(3,:) = {.92 .01 3900 100 .1 grasstwo amp [1 1]};
	pscore(4,:) = {1.00 1.4 6000 2500 .2 grassone amp [1 1]};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Swamp_Sparrow'})))
	%fprintf('Swamp_Sparrow\n');
	swamp_up = [.00 .00 .60 .70 1.00 1.0];
	swamp_down = [.00 1.00 .50 .50 .60 .60 1.00 .0];

	num_notes = 30;
	pscore = cell(num_notes,8);
	pscore(1,:) = {0 .02 3900 200 .3 swamp_up amp partial};
	pscore(2,:) = {.035 .035 3200 3000 .1 swamp_down amp partial};
	pscore(3,:) = {.08 .025 3700 0 .1 amp amp partial};
	pscore(4,:) = {.1 .02 3900 200 .3 swamp_up amp partial};
	pscore(5,:) = {.135 .035 3200 3000 .1 swamp_down amp partial};
	pscore(6,:) = {.18 .025 3700 0 .1 amp amp partial};
	pscore(7,:) = {.2 .02 3900 200 .3 swamp_up amp partial};
	pscore(8,:) = {.235 .035 3200 3000 .1 swamp_down amp partial};
	pscore(9,:) = {.28 .025 3700 0 .1 amp amp partial};
	pscore(10,:) = {.3 .02 3900 200 .3 swamp_up amp partial};
	pscore(11,:) = {.335 .035 3200 3000 .1 swamp_down amp partial};
	pscore(12,:) = {.38 .025 3700 0 .1 amp amp partial};
	pscore(13,:) = {.4 .02 3900 200 .3 swamp_up amp partial};
	pscore(14,:) = {.435 .035 3200 3000 .1 swamp_down amp partial};
	pscore(15,:) = {.48 .025 3700 0 .1 amp amp partial};
	pscore(16,:) = {.5 .02 3900 200 .3 swamp_up amp partial};
	pscore(17,:) = {.535 .035 3200 3000 .1 swamp_down amp partial};
	pscore(18,:) = {.58 .025 3700 0 .1 amp amp partial};
	pscore(19,:) = {.6 .02 3900 200 .3 swamp_up amp partial};
	pscore(20,:) = {.635 .035 3200 3000 .1 swamp_down amp partial};
	pscore(21,:) = {.68 .025 3700 0 .1 amp amp partial};
	pscore(22,:) = {.7 .02 3900 200 .3 swamp_up amp partial};
	pscore(23,:) = {.735 .035 3200 3000 .1 swamp_down amp partial};
	pscore(24,:) = {.78 .025 3700 0 .1 amp amp partial};
	pscore(25,:) = {.8 .02 3900 200 .3 swamp_up amp partial};
	pscore(26,:) = {.835 .035 3200 3000 .1 swamp_down amp partial};
	pscore(27,:) = {.88 .025 3700 0 .1 amp amp partial};
	pscore(28,:) = {.9 .02 3900 200 .3 swamp_up amp partial};
	pscore(29,:) = {.935 .035 3200 3000 .1 swamp_down amp partial};
	pscore(30,:) = {.98 .025 3700 0 .1 amp amp partial};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Golden_Crowned_Sparrow'})))
	%fprintf('Golden_Crowned_Sparrow\n');
	goldone = [.00 1.00 .25 .20 1.00 .0];
	goldtwo = [.00 .90 .05 1.00 .10 .40 1.00 .0];
	goldtrill = [.00 .50 .10 .00 .20 1.00 .30 .00 .40 1.00 .50 .00 .60 1.00 ...
				.70 .00 .80 1.00 .90 .00 1.00 .50];

	num_notes = 4;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.6 .5 4300 1000 .15 goldone amp partial};
	pscore(2,:) = {1.3 .45 3300 200 .15 goldone amp partial};
	pscore(3,:) = {1.75 .4 3800 100 .15 goldtwo amp partial};
	pscore(4,:) = {2.2 .3 3800 100 .1 goldtrill amp partial};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Indigo_Bunting'})))
	%fprintf('Indigo_Bunting\n');
	buntdwn =[.00 1.00 1.00 .0];
	buntv =[.00 .00 .50 1.00 1.00 .0];
	bunty =[.00 1.00 .50 .00 1.00 .90 ];
	buntn =[.00 .80 .30 1.00 .70 .20 1.00 .0];
	buntx =[.00 1.00 .10 .50 .25 .90 1.00 .0];
	buntup =[.00 .00 1.00 1.0];

	num_notes = 19;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.4 .08 3000 700 .25 buntdwn amp partial};
	pscore(2,:) = {.52 .02 6200 1000 .05 buntdwn amp partial};
	pscore(3,:) = {.55  .15 3500 2300 .1 buntv amp partial};
	pscore(4,:) = {.74 .02 6200 1800 .05 buntx amp partial};
	pscore(5,:) = {.80 .15 3400 2300 .1 buntv amp partial};
	pscore(6,:) = {1.00 .1 3400 800 .2 buntv amp partial};
	pscore(7,:) = {1.13 .03 4100 2000 .05 buntdwn amp partial};
	pscore(8,:) = {1.25 .08 3400 800 .2 buntv amp partial};
	pscore(9,:) = {1.40 .03 4100 2000 .05 buntdwn amp partial};
	pscore(10,:) = {1.5 .07 3700 300 .1 buntdwn amp partial};
	pscore(11,:) = {1.6 .1  4100 2200 .15 bunty amp partial};
	pscore(12,:) = {1.72 .05 3700 300 .1 buntdwn amp partial};
	pscore(13,:) = {1.81 .1  4100 2200 .15 bunty amp partial};
	pscore(14,:) = {1.94 .07 5200 1800 .2 buntn amp partial};
	pscore(15,:) = {2.05 .08 3000 1500 .15 buntup amp partial};
	pscore(16,:) = {2.20 .07 5200 1800 .2 buntn amp partial};
	pscore(17,:) = {2.33 .08 3000 1500 .15 buntup amp partial};
	pscore(18,:) = {2.43 .07 5200 1800 .1 buntn amp partial};
	pscore(19,:) = {2.51 .08 3000 1500 .10 buntup amp partial};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Robin'})))
	%fprintf('Robin\n');
	r_one = [.00 .10 .08 .70 .30 .00 .35 1.00 .40 .30 1.00 .30];
	r_two =[.00 .00 .10 1.00 .20 .70 .35 .70 .65 .30 .70 .50 .80 .00...
				.90 .20 1.00 .0];
	r_three =[.00 .20 .25 1.00 .60 .70 .90 .00 1.00 .10];
	r_four =[.00 1.00 1.00 .0];
	r_five =[.00 .50 .10 .00 .20 1.00 .30 .00 .40 1.00 .50 .00 .60 1.00 ...
				.70 .50 1.00 .20];
	r_six =[.00 .00 .12 .70 .30 .00 .70 1.00 1.00 .50];
	partials = [1 1 2 .1];

	num_notes = 6;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.45 .06 2000 800 .15 r_six amp partials};
	pscore(2,:) = {.56 .10 2000 900 .15 r_one amp partials};
	pscore(3,:) = {1.04 .24 2000 2000 .25 r_two amp partials};
	pscore(4,:) = {1.63 .13 1900 1600 .20 r_three amp partials};
	pscore(5,:) = {1.80 .11 2200 1200 .25 r_four amp partials};
	pscore(6,:) = {2.31 .21 1950 2000 .15 r_five amp partials};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Nashville_Warbler'})))
	%fprintf('Nashville_Warbler\n');
	nash_blip = [.00 .60 .35 1.00 1.00 .0];
	nash_down =[.00 .90 .05 1.00 .10 .90 .65 .50 1.00 .0];
	nash_up =[.00 .00 .15 .20 .25 .05 .90 .95 1.00 1.0];
	nash_amp =[.00 .00 .80 1.00 1.00 .0];

	num_notes = 13;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.15 .025 3900 300 .3 nash_blip amp partial};
	pscore(2,:) = {.24 .16 4200 3800 .15 nash_down nash_amp partial};
	pscore(3,:) = {.42 .025 3900 300 .3 nash_blip amp partial};
	pscore(4,:) = {.55 .14 4300 3700 .15 nash_down nash_amp partial};
	pscore(5,:) = {.75 .03 3950 350 .3 nash_blip amp partial};
	pscore(6,:) = {.81 .17 4200 3900 .175 nash_down amp partial};
	pscore(7,:) = {1.0 .02 3800 400 .25 nash_blip amp partial};
	pscore(8,:) = {1.11 .14 4200 3800 .165 nash_down nash_amp partial};
	pscore(9,:) = {1.3 .03 3750 300 .2 nash_blip amp partial};
	pscore(10,:) = {1.4 .11 4200 3700 .1 nash_down amp partial};
	pscore(11,:) = {1.57 .1 3800 2200 .1 nash_up amp partial};
	pscore(12,:) = {1.7 .1 3800 2150 .125 nash_up amp partial};
	pscore(13,:) = {1.85 .075 3900 1800 .1 nash_up nash_amp partial};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Rufous_Sided_Towhee'})))
	birdname = 'Rufous_Sided_Towhee';
	%fprintf('Rufous_Sided_Towhee\n');
	towhee_one =[.00 .10 .02 .05 .04 .15 .06 .05 .08 .20 .10 .04 .12...
			.25 .14 .03 .16 .30 .18 .02 .20 .35 .22 .01 .24 .40 .26...
			.00 .28 .45 .30 .00 .32 .50 .34 .00 .36 .50 .80 1.00 1.00 .0];
	towhee_two =[.00 .00 1.00 1.0];
	towhee_three =[.00 1.00 1.00 .0];

	num_notes = 4;
	pscore = cell(num_notes,8);
	pscore(1,:) = {.25 .13 1400 1100 .2 towhee_one amp [1 .03 2 1 3 .03]};
	pscore(2,:) = {.45 .13 1400 1100 .2 towhee_one amp [1 .03 2 1 3 .03]};
	pscore(3,:) = {.60 .13 1400 1100 .2 towhee_one amp [1 .03 2 1 3 .03]};
	pscore(4,:) = {.75 .10 1400 1100 .2 towhee_one amp [1 .03 2 1 3 .03]};
	pscore(5,:) = {.88 .01 5100 2000 .1 towhee_two amp partial};
	pscore(6,:) = {.895 .01 5100 1600 .1 towhee_two amp partial};
	pscore(7,:) = {.91 .01 5100 1000 .1 towhee_two amp partial};
	pscore(8,:) = {.93 .01 3000 1200 .1 towhee_three amp partial};
	pscore(9,:) = {.945 .01 5100 2000 .09 towhee_two amp partial};
	pscore(10,:) = {.96 .01 5100 1600 .09 towhee_two amp partial};
	pscore(11,:) = {.975 .01 5100 1000 .09 towhee_two amp partial};
	pscore(12,:) = {.995 .01 3000 1200 .09 towhee_three amp partial};
	pscore(13,:) = {1.01 .01 5100 2000 .1 towhee_two amp partial};
	pscore(14,:) = {1.025 .01 5100 1600 .1 towhee_two amp partial};
	pscore(15,:) = {1.04 .01 5100 1000 .1 towhee_two amp partial};
	pscore(16,:) = {1.06 .01 3000 1200 .1 towhee_three amp partial};
	pscore(17,:) = {1.075 .01 5100 2000 .09 towhee_two amp partial};
	pscore(18,:) = {1.09 .01 5100 1600 .09 towhee_two amp partial};
	pscore(19,:) = {1.105 .01 5100 1000 .09 towhee_two amp partial};
	pscore(20,:) = {1.125 .01 3000 1200 .09 towhee_three amp partial};
	pscore(21,:) = {1.14 .01 5100 2000 .08 towhee_two amp partial};
	pscore(22,:) = {1.155 .01 5100 1600 .08 towhee_two amp partial};
	pscore(23,:) = {1.17 .01 5100 1000 .08 towhee_two amp partial};
	pscore(24,:) = {1.19 .01 3000 1200 .08 towhee_three amp partial};
	pscore(25,:) = {1.205 .01 5100 2000 .08 towhee_two amp partial};
	pscore(26,:) = {1.220 .01 5100 1600 .08 towhee_two amp partial};
	pscore(27,:) = {1.235 .01 5100 1000 .08 towhee_two amp partial};
	pscore(28,:) = {1.255 .01 3000 1200 .08 towhee_three amp partial};
	pscore(29,:) = {1.27 .01 5100 2000 .07 towhee_two amp partial};
	pscore(30,:) = {1.285 .01 5100 1600 .07 towhee_two amp partial};
	pscore(31,:) = {1.30 .01 5100 1000 .07 towhee_two amp partial};
	pscore(32,:) = {1.32 .01 3000 1200 .07 towhee_three amp partial};
	pscore(33,:) = {1.335 .01 5100 2000 .06 towhee_two amp partial};
	pscore(34,:) = {1.350 .01 5100 1600 .06 towhee_two amp partial};
	pscore(35,:) = {1.365 .01 5100 1000 .06 towhee_two amp partial};
	pscore(36,:) = {1.385 .01 3000 1200 .06 towhee_three amp partial};
	pscore(37,:) = {1.400 .01 5100 2000 .05 towhee_two amp partial};
	pscore(38,:) = {1.415 .01 5100 1600 .05 towhee_two amp partial};
	pscore(39,:) = {1.430 .01 5100 1000 .05 towhee_two amp partial};
	pscore(40,:) = {1.45 .01 3000 1200 .05 towhee_three amp partial};
	pscore(41,:) = {1.465 .01 5100 2000 .03 towhee_two amp partial};
	pscore(42,:) = {1.480 .01 5100 1600 .03 towhee_two amp partial};
	pscore(43,:) = {1.495 .01 5100 1000 .03 towhee_two amp partial};
	pscore(44,:) = {1.515 .01 3000 1200 .03 towhee_three amp partial};

end

	%%%%%%%%
if (max(strcmp(birdname,{'all', 'Random_Bird'})))
	audiodata.data = randbird(floor(rand*40));
	audiodata.Fs = Fs;
	play_audiodata(audiodata);
	return;
end

audiodata.data = synth(pscore, Fs,'add')';
audiodata.Fs = Fs;
play_audiodata(audiodata);