MATLAB: Rise/fall time

rise timesine wave

Hi, can anyone help me to generate 2 sounds of 500 and 1000 Hz with 25 ms duration with ISI of 30 ms and rise/fall time of 10 ms with Fs of 44100 and I want to 500 Hz be 10 dB less than 1000 Hz

Best Answer

%set-up parameters
fs=44100; %CD quality - also conveniently divisible by 30 and 25
stim_dur=.025; %duration in seconds
ISI_dur=.030; %ISI duration in seconds
ramp_dur=.010; %ramp duration in seconds
t=0:1/fs:stim_dur-1/fs;
f1=500;
f2=1000;
%create signals
xt1=sin(2*pi*f1*t);
xt2=sin(2*pi*f2*t);
%setup ramp
rampSamps = floor(fs*ramp_dur);
window=hanning(2*rampSamps)'; %hanning window is cosine^2 this will change depending on the kind of ramp you want
w1=window(1:ceil((length(window))/2)); %use the first half of hanning function for onramp
w2=window(ceil((length(window))/2)+1:end); %use second half of hanning function of off ramp
w1 = [w1 ones(1,length(xt1)-length(w1))];
w2 = [ones(1,length(xt1)-length(w2)) w2];
%ramp stimuli
xt1_ramped = xt1.*w1.*w2;
xt2_ramped = xt2.*w1.*w2;
%generate ISI
ISI=zeros(ISI_dur*fs,1);
%final stimulus
out=[xt1_ramped';ISI;xt2_ramped'];
plot(out)