Skip to content

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)