Delayed Loading Waveforms
The File Stimulation and Ultrasonic File Stimulation gizmos support delayed waveform loading. This means you can arbitrarily load the waveform buffer using SynapseAPI at run-time, instead of setting a fixed list at design-time.
This gives you complete dynamic control of the waveform output through just a few API calls. Set the total number of samples you'll need to load all your waveforms at once so that the hardware can allocate those resources in the processor memory.
This page contains usage examples.
Delayed Load File Example
gizmo = 'ufStim1';
p = 'C:\TDT\Synapse\StimFiles';
fname{1} = 'SigA2.F32';
fname{2} = 'SigA3.F32';
fname{3} = 'SigA4.F32';
fname{4} = 'SigA5.F32';
syn = SynapseAPI();
disp('Loading')
% set folder path to wave files
syn.setParameterValue(gizmo,'WavePath',p);
% Set 'WaveID' to 0 to reset the buffer
syn.setParameterValue(gizmo,'WaveID',0)
% Load wave files
for i = 1:length(fname)
syn.setParameterValue(gizmo,'WaveFile',fname{i});
end
pause(1)
disp('Playing')
for i = 1:length(fname)
syn.setParameterValue(gizmo,'ID',i);
syn.setParameterValue(gizmo,'Strobe',1);
pause(1)
end
Delayed Load Arbitrary Set of Waveforms Example
gizmo = 'ufStim1';
fs = 24414.0625 * 2;
syn = SynapseAPI();
disp('Loading')
% Set 'WaveID' to 0 to reset the buffer
syn.setParameterValue(gizmo,'WaveID',0)
disp('Loading')
syn.setParameterValues(gizmo,'WaveData',tone(1300,fs,1),-1)
syn.setParameterValues(gizmo,'WaveData',tone(2600,fs,1),-1)
syn.setParameterValues(gizmo,'WaveData',tone(3300,fs,1),-1)
disp('Playing')
for i = 1:3
syn.setParameterValue(gizmo,'ID',i)
syn.setParameterValue(gizmo,'Strobe',1);
pause(2)
end
Delayed Load Arbitrary Waveform Example
gizmo = 'ufStim1';
fs = 24414.0625 * 2;
syn = SynapseAPI();
disp('Loading')
% Set 'WaveID' to 0 to reset the buffer
syn.setParameterValue(gizmo,'WaveID',0)
disp('Loading')
syn.setParameterValue(gizmo,'ID',1)
% Keep loading new waveforms into ID 1 only by resetting
% WaveID in between
syn.setParameterValue(gizmo,'WaveID',0)
syn.setParameterValues(gizmo,'WaveData',tone(1300,fs,1),-1)
syn.setParameterValue(gizmo,'Strobe',1);
pause(2)
syn.setParameterValue(gizmo,'WaveID',0)
syn.setParameterValues(gizmo,'WaveData',tone(2600,fs,1),-1)
syn.setParameterValue(gizmo,'Strobe',1);
pause(2)
syn.setParameterValue(gizmo,'WaveID',0)
syn.setParameterValues(gizmo,'WaveData',tone(3300,fs,1),-1)
syn.setParameterValue(gizmo,'Strobe',1);
pause(2)