This is just a modified version of the spm slice timing routines that allows you to use other methods of interpolation for slice timing - see SliceTiming.
The routine is mb_5_slice_timing.m It is installed in the CBU in the /imaging/local/spm/common directory. You could use it like this:
P = spm_select(Inf, 'image', 'Select files to slice time correct'); nslices = 16; % number of slices sliceorder = [1:2:nslices 2:2:nslices]; % interleaved ascending acquisition refslice = 1; % slice for timing reference slicetime = 0.115; % time to acquire one slice TR = 2.02726; timings = [slicetime slicetime+(TR-slicetime*nslices)]; mb_5_slice_timing(P, sliceorder, refslice, timings);
Which would reproduce the standard SPM sinc slice timing.
For linear slice timing - do all the same up to:
mb_5_slice_timing(P, sliceorder, refslice, timings, 'linear', 'la');
This will generate linear slice timing files with an la prefix. You should delete the first, and probably the last volume in the series for liner slice timing, as it will have been interpolated with missing data.