stimuli within a ramping envelope

18 views
Skip to first unread message

Kuo-Sheng Lee

unread,
Mar 3, 2021, 2:16:50 PM3/3/21
to WaveSurfer
Hi,

First, I would like to thank the WaveSurfer team for this simple but powerful tool!
However, I've been struggling to generate the following type of stimuli with great flexibility in the WaveSurfer. For now, I'm putting my Sine wave in a Triangle wave, but I believe adding a this new function could be very helpful for many other researchers.

Best,
Kuo


Screen Shot 2021-03-03 at 8.04.23 PM.png


This is how we did in Matlab:

%% generate envelope modulation

Fs=30000;
StimT=1.5;
StimDur=0.5;

Npre =  round(0.5*Fs );
Npost = round(0.5*Fs);

NsampsAna=0.5*Fs;

avgSig = zeros(1,NsampsAna);
Nreps = 10;

riseT = StimDur/10;
slope = 1/riseT; 

timeSig = 0:1/Fs:StimDur;
envSig = ones(1,numel(timeSig));
envSig(1:round(riseT*Fs)) = slope*timeSig(1:round(riseT*Fs));
envSig(end-round(riseT*Fs)+1:end) = 1-slope*timeSig(1:round(riseT*Fs));

freq = 300; volt = 5;
            Sig = volt*sin(2*pi*freq*timeSig);    
            Sig = envSig.*Sig;
            Sig2 = 5*ones(size(Sig));
            Sig = [zeros(Npre,1); Sig'; zeros(Npost,1)];
            Sig2 = [zeros(Npre,1); Sig2'; zeros(Npost,1)];

%% with functions
        function Sig = makeSig(obj, voltVal, freq)
            % Make signal
            
            riseT = obj.params.StimT/10;
            slope = 1/riseT;
            
            timeSig = 0:1/obj.params.Fs:obj.params.StimT;
            envSig = ones(1,numel(timeSig));
            envSig(1:round(riseT*obj.params.Fs)) = slope*timeSig(1:round(riseT*obj.params.Fs));
            envSig(end-round(riseT*obj.params.Fs)+1:end) = 1-slope*timeSig(1:round(riseT*obj.params.Fs));
            
            SigVib = voltVal*sin(2*pi*freq*timeSig);
            SigVib = envSig.*SigVib;
            
            SigMask = randn(size(timeSig));
            SigMask = 8*SigMask/max(abs(SigMask));
            SigMask(end) = 0;
            
            Sig = [SigVib' SigMask'];
            
        end

Reply all
Reply to author
Forward
0 new messages