Recent technical history of Spike2 version 6 for Windows

Freely down-loadable for version 6 users.

Date Version Summary
09/14 6.18 Fixes
  1. The FitValue() script command now works; previously the result was not useful.
  2. When exporting waveform data to MATLAB, if the data had gaps, it was possible to miss a gap, leading to the data after the gap being appended to the data before the gap as if the gap were not there.
  3. The duration of arbitrary waveform output when the space was reserved with the third form of PlayWaveAdd() using the size% argument was limited to 1 second.
  4. Active cursor searches for data rising or falling through a threshold on channels drawn in mean frequency mode could fail.
  5. ChanValue() did not use cubic spline mode when it should.
  6. DlgChan() in an on-line XY view reported channels as off if the same channel number was off in the associated time view.
  7. Time view trough mode measurements of an event channel in the Cursor regions dialog and ChanMeasure() were incorrect.
  8. During sampling, reads of event-based channels that crossed the time of the last flush to disk were truncated at the last flush to disk time.
10/12 6.17 New
  1. Signal conditioner support is now included for the Digitimer D360.
  2. If you read in an old sampling configuration that does not contain ADC and DAC range information, you are warned to check the channel scaling. If the old configuration was used with a 1401 with ±10 Volt ADC and DACs and you are currently using a ±5 Volt system the scaling will need manual adjustment.
  3. ChanList() now returns -1 if a channel specification string contains a syntax error.
  4. The Power1401-3 is supported.
  5. ChanSave() now commits changes to the destination file. This helps file recovery if the system power is lost after the save.
  6. Serial line ports above COM9 are now allowed.
  7. File selection dialogs opened by FileConvert$() now set the initial file type (if possible). If you set a file type it will not be overridden by automatic file type detection.
  1. In ChanFitShow(), setting opt% to -2 to return the range end did not work.
  2. The Virtual Channel Instantaneous Frequency dialog had RealMark channel as a prompt (though any event-based channel could be used).
  3. After ChanOrder(n, 0, m) was used to overdraw channels n and m, ChanOrder(n, 1, m) did not separate them.
  4. You can now use the View(-n). prefix to resolve duplicate time views when specifying the level trigger in the Memory buffer Import dialog.
  5. The Sampling Configuration dialog is no longer confused if you sample with the maximum number of channels.
  6. It was possible for the Channel Process Median filter to not choose the median value.
  7. It was possible for sampling to be timed out if you scrolled backwards into the sampled file.
03/11 6.16 Fixes
  1. The MinMax() script command could hang up if used on an event channel to find the minimum and maximum intervals and the selected time range held 8000 or more event times.
  2. The screen area between the buttons at the bottom left of a view and the channel Y axis area was not cleared on a redraw if the last channel in the channel list was not visible.
  3. The MemChan() command variant with two arguments to create a channel based on another channel did not copy the channel units for waveform, RealWave or WaveMark channels.
  4. If you setup sampling to use the dummy channel optimisation, then sampled with a micro1401 (not a mk II or -3), the sample rates for waveform channels would be incorrect. Now you are told to adjust the sampling configuration.
  5. If a channel scale factor was set to a very large value (1e37, for example), Copy As Text could crash Spike2.
  6. The File Information dialog complained if a comment was more than 71 characters long; the limit should have been 79 characters.
  7. Opening the PCA analysis dialog online could crash Spike2 depending on the previous use of the PCA dialog.
  8. It was possible to hang Spike2 when using a virtual channel to convert RealMark data to a waveform using the Rm or Rmc commands.
  9. ChanProcessClear() or ChanProcessClear(-1) removes any channel processing from all channels, but did not clear the channel modified indicator from the channel numbers.
  10. In the graphical sequencer dialog, the Write as text sequence button did nothing if you had just switched to graphical mode.
  11. If a user dialog had a button function and the button function opened another dialog and then returned 0 (meaning close the original dialog as if OK was clicked and update any DlgShow() arguments), the original dialog would close, but the arguments were not updated.
  12. SampleAbort() did not record.
  13. In the X or Y Axis dialogs, if you set the tick subdivisions to the maximum value of 25, the value was ignored.
  14. Using Maxtime() on a virtual channel derived from a RealMark channel could cause a crash.
  15. LastTime() when used on a virtual channel that used the RM, RMC, IF or IFC expressions assumed that the RealMark and instantaneous frequency data spanned the full time range and had no gaps.
  16. There were drawing glitches during sideways scrolling of Level Event data drawn at very high magnification.
  17. Ramps generated by the graphical sequencer did not output sufficient significant figures for the per-tick increment.
  18. If the ChanShow() and ChanHide() script commands were used with multiple arguments, some specification types (for example a channel list as a string) cleared the channel list before adding their channels.
  19. If a script windows was active while a script ran and the user typed Ctrl+Break to cancel a long drawing operation, it was possible for ETX (character 3) to appear in the script window.
  20. In a user-defined dialog, the Cancel button was not activated by the Esc key.
08/10 6.15 New
  1. You can now use %D and %T to set the date and time in the Automation tab of the Sampling Configuration dialog.
  2. The Neuralynx file importer now includes the codes of WaveMark data channels.
  3. The Binary file importer saves the last import configuration used as BinLast.bib in the import folder. If Bin_Def.bib exists it is always used, otherwise BinLast.bib is used.
  4. MaxTime(chan%) where chan% is a virtual channel now returns the time of the last waveform point on the virtual channel; previously it always returned 0.
  1. The Time$() script command did not use the system settings for 12/24 hour clocks correctly.
  2. When exporting a virtual channel to a MatLab file, one point less than requested could be written at the start of the file or just after any gap in one of the channels used to create the virtual channel.
  3. If you used the maximum gap argument with the RM, RMC, IF or IFC Virtual channel commands, points after a gap were not always displayed.
  4. It was possible to crash Spike2 by attempting to open a malformed result view file.
  5. In large data files, Event correlations, PSTH analysis and Phase analysis could take a long time when the events were sparse compared to the trigger times, especially when the events used a Marker Filter and a large proportion of the events were filtered out.
  6. When creating a result view, if you set a source channel list of 3,801,802 where 801 and 802 were channels 3a and 3b, this was internally translated to 3..3b, which was later expanded to all the channels between 3 and 802. This generated an unexpected list of channels in the result view.
  7. User-defined dialogs containing only buttons did not get sufficient height.
  1. Result view raster displays now optimise to show all the rasters, even if they contain no response events. Previously, the y axis optimise only paid attention to rasters that contained visible events. This also affects the script commands that return the maximum and minimum y axis value for a channel drawn in raster mode.
03/10 6.14 New
  1. The FileConvert$() script command will offer files to the Binary importer after trying all other importers first. Previously, the binary importer was not used.
  1. Result view raster displays did not optimize correctly unless the entire x axis was displayed.
  2. Result view raster displays where the x axis included negative values did not display correctly when the x axis was changed to log mode.
  3. In triggered display mode with the Zero x axis at trigger option checked, vertical cursors with position selected now display a position to match the x axis.
  4. Printed channels in Overdraw WM mode could show different events from those displayed on screen, especially when Print Screen was used.
  5. Dialogs (for example the X Axis Range dialog) where times were accepted in hh:mm:ss formats did not accept exponential formats for numbers, for example 1e2 meaning 100 seconds.
  6. The binary importer now gets the correct scaling for double precision floating point data input.
  7. The ASCII (text) importer can now import a file with gaps.
  8. The DSI importer can now import files with 4 character file name extensions.
  9. The Codas file importer now detects input files with packed data.
  10. The Igor importer has been extended to import packed files stored as doubles.
  11. The Alpha-Omega importer now correctly detects the end of file when reading events (markers) with no attached data.
  12. The Heka importer has been extended to accept an old type of data file.
11/09 6.13 New
  1. The System$() script command knows about Windows 7.
  2. You can now select the Micro1401-3 as the Type of 1401 in the Sampling Configuration dialog Resolution tab.
  3. There are upgrades to the importers for Bionic, NeuroScan, Plexon, MED64, Igor and Mc_Rack data file formats and the generic Text importer will now import a file holding only event times.
  1. Scripts loaded by the ScriptRun() command no longer close if they end due to an error. Now the script remains open, with the error line highlighted.
  2. A non-zero edge% argument in the DrawMode() command was applied to non-level event channels.
  3. The OVR indicator in the Status bar was not linked to the Insert/Overtype state of the text editor.
  4. It was possible to crash Spike2 in the Sampling Configuration dialog by setting more than 53 waveform channels.
  5. If you compiled a script, closed it and reopened it, Spike2 assumed it was unchanged and did not recompile it when it was run. Now, unless the script is running when you reopen it, the previously compiled version is deleted, forcing a recompile. This does not apply to included files which are assumed not to have changed if they are opened.
  6. In the Measurements to an XY view or to a channel commands, if you chose the User entered value measurement type, you had to set the Prompt to something that could be interpreted as a number to avoid an error message. Now you can set a text prompt.
  7. The script language DlgValue$() command can now access the checkbox prompt for both the item number and the item number plus 1000.
  8. In a script, the use of proc or func to describe a function argument caused incorrect indentation in the automatic formatting option.
  9. Labels on big ticks that overhung the end of the Y axis did not always repaint when an object was dragged over them.
  10. If you called SetPower() with a block size that was not a power of 2, the result view was created based on this number and the Power spectrum was incorrect. Now the block size is reduced to the next lower power of 2 (as documented).
  11. PlayWaveRate() limited the maximum rate to 200 kHz; it should have been 250 kHz.
  12. MeasureToChan() and MeasureToXY() did not allow modes 19 and 20. Also, these two modes did not record correctly.
  13. The cursor regions dialog and curve fitting always used index 0 of a RealMark channel when it was drawn in a waveform mode. They now use the data index set in the drawing mode.
  14. A backwards cursor search on a waveform memory channel with gaps could hang Spike2.
  15. Sampling with a Power1401 mk II with a waveform channel as the last channel in the 1401 could stop unexpectedly if the sampling configuration did not include arbitrary waveform output, a WaveMark channel or an output sequence with a Table.
  16. When attempting to read Spike2 data beyond the end of channel, it was possible to get error -19 (corrupt file) when there was nothing wrong with the file.
  17. You are no longer allowed to import to a memory buffer if the source channel is the same memory buffer as this causes the program to hang up.
  18. A time view x axis in a file of sufficient length did not display any ticks or numbers if you zoomed in to the maximum scale and pressed End.
  19. If an event occured at the maximum possible time (this is 2147483647 clock ticks), several commands did not work correctly. The Copy As Text... command could hang, active cursor searches for the event in data points mode would fail and the NextTime() script command would find the event, but then searching onwards with NextTime() would return the event again and not -1.
  1. If you open a .s2c file while Spike2 is running by double-clicking it or by dragging it to the Spike2 window and dropping it, this now opens the Sampling Configuration dialog as if you had used the File menu Load Configuration command.
07/09 6.12 New
  1. If you write huge amounts of text to a text window (for example the log view), such that Spike2 runs out of memory, Spike2 now tries to survive by deleting all the text and puts up a message box suggesting that you save your data and restart Spike2.
  2. The sampling configuration now includes the ADC range value. This is used to adjust the channel scaling when you move between ±5 Volt and ±10 Volt systems.
  3. The 1902 Signal Conditioner dialog now has Reset Calibration and Reload 1902 buttons.
  4. The s2video application has a new option in Settings->Configuration that may give access to more camera features in the Video Device Properties menu.
  5. There is a new avicomp application that will compress .avi files created by s2video.
  1. It was possible to crash Spike2 by replacing values in fixed-length XY view that was set to be sorted by x or y values.
  2. The wrong error message was given if an Output Sequence had too many lines.
  3. The commands to reformat the Output Sequencer text did not keep the same line at the top of the display.
  4. In the graphical sequence editor, if you deleted a pulse that was marked as illegal by dragging the pulse off the display area, items that were disabled due to the illegal pulse were not re-enabled.
  5. Cut or Copy of folded text in a script or output sequence window only copied the first line of the folded text. Now all the folded text is cut or copied.
  6. Display optimise of a result view histogram could include bins that were outside the display region.
  7. Display optimise of a result view channel showing raster data always set the low y axis value to 0.
  8. The Sampling Configuration dialog now handles Cancel more consistently as it now backs out changes to the signal conditioner settings.
  9. In the Sampling Configuration dialog, Reset now also resets the signal conditioner settings.
  10. Recording of exporting a data file to a MATLABTM file did not set a channel list.
  11. If you open a script file that is part of the currently compiled script system, any break points in the file are now displayed.
  12. When starting to sample, if the Voltage range setting of the 1401 interface did not match the 5V/10V setting in the sampling configuration and you opted to change the setting to match the 1401, sampling was abandoned with an error.
  13. The Offline waveform output dialog was moving cursor 0 regardless of state of the Cursor 0 tracks the waveform output check-box.
  14. If you stored a sampling configuration that included view overdrawing, the list of trigger times was not cleared before sampling started, leading to unexpected overdrawing.
  15. The s2video program is more tolerant of data input devices that implement the DirectShow interface in unexpected ways.
  16. If you did not supply the sep$ argument to ExportTextFormat(), the delimiter was set to the Tab character.
  17. The SampleText() script command did not work if there was a TextMark channel in the sampling file and the TextMark channel had been removed from the sampling configuration.
  18. The x axis dialog did not allow you to enter a negative or zero value for the right-hand end of the axis (for example in an XY view).
  19. In the x axis dialog, if you changed to a log axis, then changed back, you could no longer set a negative axis start time.
  20. XY views did not redraw correctly if the y axis had a larger value at the bottom than at the top.
03/09 6.11 New
  1. The SSTempGet(-2) script command now returns the last sweep of data, triggered or not.
  2. DlgAllow() can now be used to modify settings while a user-defined dialog is displayed.
  3. Turning point and percent slope searches in active cursors and ChanSearch() script command now interpolate to improve the time found.
  4. Peak and trough searches in a result view now use the Maximum width parameter.
  5. User dialogs that include a channel selector that allows Selected as an option, now display the list of selected channels.
  6. In the FitNLUser() script command, attempts to set break points in the user function are now ignored and attempts to use the interactive functions Interact(), Toolbar(), Debug(), DlgShow() or Yield() now generate an error. Previously, all these actions caused the script to stop without any explanation.
  7. From version 6.10, the sampling code has detected events and markers that are at the same time or that are out of order. The warnings for this are now separated into 'same time' (not too serious) and 'out of order' (something is wrong) messages and now tell you the last channel and time at which an error was detected.
  8. When importing text data, the FileConvert$() script command now searches the import folder for a configuration file called Txt_Def.cim. You can create this file with the interactive data import command.
  9. When importing a binary data file, the FileConvert$() script command now searches the imports folder for a configuration file called Bin_Def.bib. You can create this file with the interactive data import command.
  10. The Neuroscan data importer has been extended to convert 32-bit SynAmps2 data and can now handle up to 128 channels.
  11. The Bionics/Cyberkinetics data importer can now save events with additional attached values as Marker data.
  12. There is a preliminary version of an importer for TMS International *.S00 data files.
  1. Use of the sel$ argument in DlgString() caused legal$ to be ignored. Also, if you defined legal$, then Ctrl+C, Ctrl+V and Ctrl+X were disabled, but right-clicking and using Paste could add illegal characters.
  2. If a y axis was in Logarithmic mode, zooming by dragging a region with the mouse did not work correctly.
  3. If you typed in a new keyboard character or a TextMark when the Fitting dialog was displayed, the dialog contents reset to the last fit parameters.
  4. The ScriptRun() command flags% argument did not work.
  5. Limit checking in DlgReal() fields now uses the supplied numeric precision to format strings with previous, maximum and minimum values.
  6. Undo of an increase of dot size in an XY view did not invalidate correctly.
  7. Undo of Standard display in an XY view now restores the drawing mode and join type.
  8. Read of pre-version 6.05 sampling configurations did not disable the new optimisations added at version 6.05.
  9. The PlayWaveCopy() script command was locking and unlocking memory more often than was needed for large data transfers.
  10. Double and halve of an x axis range in Logarithmic mode now works correctly.
  11. Unchanged filter banks can now be saved from the Filter Setup dialogs.
  12. Backwards searches for features in result views ChanSearch() now work correctly.
  13. The Esc (interrupt script) and Ctrl+Break (abandon drawing or processing) keyboard commands could work when Spike2 was not the active application.
  14. The Sampling configuration window Resolution tab could display the wrong rates for WaveMark channels if the sampling constraints could not be satisfied.
  15. In the graphical sequence editor, setting a Single pulse, amplitude change on repeat DAC pulse with a negative change did not generate any changes.
  16. Outside thresholds and Within thresholds feature searches on event channels drawn as rate or frequency did not work.
  17. On some graphics cards with hardware acceleration enabled, displaying a virtual channel that contained bad values (infinity or not a number) could cause strange graphical corruptions and delays.
  18. When using the FileSaveAs() script function with a path that did not exist or that contained illegal characters, a message box notified the user of the problem, but the function did not return an error code. Now a negative error code is returned.
  19. In a result view drawn with a logarithmic x axis, the script functions Draw() and XRange(), when used with two arguments, did not work properly and could even cause an "Out of memory" error.
  20. If you used Tab characters in a user dialog or Message() text, the screen space calculations were not correct.
  21. Recording of CursorLabel() and HCursorLabel() is now correct.
  22. Creating a virtual channel caused an unnecessary screen update.
  23. The EDF (European Data Format) data importer now imports BDF data with the correct amplitude resolution.
  24. The text data importer now imports data with a sampling rate of less than 4 Hz. Previously the sample interval was incorrect.
  25. The TextMark dialog displayed the wrong channel number in the dialog title.
  26. If a script put up a user dialog or used the Message() command when the user had right-clicked to open a context menu, mouse input was lost for both the context menu and the new window.
  1. The obsolete output sequencer instructions CALLn, LD1RAN, DBNZn, LDCNTn have always been documented as using variables V33-V36. In fact, they have always used V61-V64.
10/08 6.10 New
  1. We now digitally sign the 1401 device drivers. This change allows you to install the drivers on 64-bit Vista systems.
  2. The U1401Open() script command now allows you to specify which 1401 to use on systems with multiple attached 1401s.
  3. The sampling code now detects sampled events and markers that occur so close together that they get the same sample time. This can happen due to bouncy switches or when sampling with a low time resolution. You are warned about this when sampling ends. Such files can cause problems as the Son library specifies that all events on the same channel must be at different times. The SonFix program can fix this by adjusting the simultaneous events to be as close together as allowed by the file time resolution.
  4. The ATan() script function can now be used with two vector arguments.
  5. The ATan() virtual waveform function can be used with two vector arguments. This is useful when you have x and y positions proportional to a sine and a cosine and you want to convert them to an angle.
  6. The Val() script command will now accept a hexadecimal integer (without a sign) in addition to accepting floating point and decimal integer numbers.
  7. The Alpha MED Sciences (MED64) importer has been extended to recognise MOBIUS format raw data.
  8. The SampleKeyMark() script command has been added.
  9. There is now an importer for Heka *.DAT data files.
  10. The HLR importer has been extended to support a new type of waveform channel.
  1. In the Fit Dialog, the Ctrl+C command (Copy) only worked in the results tab.
  2. It was possible to crash Spike2 by using the script command PlayOffline(), then exiting from Spike2 while the waveform was playing.
  3. When sampling data, if you scrolled away from the end of the file to look at older data then zoomed in, the position of the left-hand edge of the display changed.
  4. Fitting to a rising exponential, then manually adjusting the fit parameters to send the fitted line to floating point infinity caused a BSOD (Blue Screen Of Death) fault in the Windows graphics system.
  5. The Str$() script command sigd% argument now works as documented when set negative.
  6. It was possible to crash Spike2 by using the MatLabOpen() command on a system where MATLAB was not installed.
  7. MatLabGet() did not work correctly with Spike2 arrays with one dimension as all MATLAB arrays have at least 2 dimensions.
  8. MatLabGet() and MatLabPut() did not work correctly with string variables.
  9. Measurements taken on an event channel in Rate mode using ChanMeasure() and the Cursor Regions dialog extended from the bin containing the start time to the bin containing the end time. They now extend to the bin before the bin containing the end time. This means that if you position a pair of cursors exactly on the start and end of a bin, the measurement is for the single bin between the cursors. Put another way, a measurement from time A to B, plus a measurement from time B to C (A<B<C) is now the same as the measurement from A to C.
  10. It was possible to crash Spike2 when a signal conditioner dialog was being displayed.
  11. When outputting a display as a Metafile at a higher resolution than the screen, the x axis could display too many tick marks.
  12. Metafile output now clips all lines in software, rather than relying on the graphics system to clip lines to clip regions. Previously, Metafiles would render correctly when pasted as an image into Word (for example), but could be problematic when imported into a drawing program. This is because drawing programs usually ignore clip regions, resulting in lines extending outside drawing regions. The downside is that clipped waveforms are no longer one object when imported into a drawing program.
  13. Changing the Y axis range or scale in a time view by clicking and dragging when in 3D overdraw mode now works correctly.
  14. We have changed how time is rounded when moving data between files with different time bases with the ChanSave() script command. This was to fix a problem when moving data with an event at exactly the start time of the source time range as this event was sometimes not moved to the destination due to rounding effects.
  15. If the filtbank.cfb file used to store the FIR and IIR filter settings was read only and you changed a filter, you got a "file not found" error when you closed Spike2, and Spike2 did not close. You now get a more accurate warning message.
  16. If you read a sampling configuration from a data file (File menu Load configuration), only the first 32 channels of data were used for the sampling configuration. Now, all channels are considered.
  17. In the Sampling Configuration dialog Mode tab, the fields displayed when you select Triggered mode are now enabled and disabled correctly.
  18. If you sampled a level event channel and disabled writing to disk so that there was a gap in the level event data, it was possible to produce two rising or two falling transitions in succession. If you display a section of data that shows data before and after such a gap, the data after the gap could be drawn inverted. We have fixed the cause of the problem, but files with the problem will still display incorrectly.
  19. In a script, if a floating point value was assigned to an integer and the result would be -2147483648 (the most negative integer value possible), this was incorrectly flagged as an error.
  20. It was possible to get drawing artefacts when using a virtual channel during sampling if a channel process was applied to the virtual channel, or to any source channel of the virtual channel.
  21. If you played a waveform using the PlayWave...() family of commands using a floating point source, the conversion to 16-bit integer DAC values was done by truncation rather than by rounding. The conversion is now done by rounding, leading to a better representation of the data, especially at low amplitude.
  22. The positioning of the y axis title in a Overdraw 3D window has been improved.
  23. It was possible to overrun the serial output buffer.
  24. In a text view, printing the current selection printed more that was requested and printing a range of pages did not work correctly.
  1. In the Sampling Configuration dialog Automation tab, the maximum length of the file name has been increased from 20 to 23 characters.
  2. The maximum length of a returned string in the MatLabEval() command has been increased from 119 to 511 characters.
  3. The maximum number of local variables and constants that can be declared in a script has been increased from 7000 to 12000, and the maximum number of global variables and constants has been reduced from 15000 to 10000. This was done because a user hit the local variable limit in a 1.5 MB script.
  4. The SonFix program tests and repairs data files. In particular, it can check event channels for events being out of order; data blocks with more that 20% of the events out of order are considered bad and are deleted. The test marked consecutive events at the same time as being bad, which could cause a block to be dropped. We now accept consecutive events at the same time to avoid deleting potentially recoverable data.
  5. The SerialWrite() command behavior is modified for the case where no space is available in the output buffer.
06/08 6.09 New
  1. You can now overdraw time view data both on-line and offline to compare responses to stimuli. Overdrawn frames can also be shown as a 3D (three dimensional) display. The Display Trigger dialog and the ViewTrigger() script command have been extended to include the new features.
  2. The new Overdraw List dialog and ViewOverdraw() script command add a range of events as overdraw trigger points.
  3. The new Overdraw 3D dialog and ViewOverdraw3D() script command control the 3D display.
  4. The online Edit WaveMark dialog is more efficient when displaying non-triggering data. To get the greatest benefit, make sure your 1401 has up to date firmware.
  5. This version of Spike2 behaves better if you open a very large number of windows and channels and exceed the available system resources. Previous versions would slow down to a crawl and could stop responding.
  6. If your system is unable to lock down sufficient memory for data acquisition, you now get a specific error message that suggests fixes, rather than just an error -544 that you must look up in the help system.
  7. There is a new DlgMouse() script command to set the initial mouse pointer position when DlgShow() is used.
  8. The ASCII (text) importer has been extended to recognise gaps in the input data.
  9. The Neuralynx importer has been updated to read the latest data format.
  1. It was possible to hang Spike2 if you read a configuration file with a corrupted graphical sequence, then used the Reset button of the Sampling Configuration dialog or the SampleClear() script command.
  2. In the Sampling Configuration dialog, the Reset button in the Channels tab could leave some old values behind. Specifically, waveforms set in the Play waveform tab were deleted, but not properly removed from the dialog.
  3. You will now be asked if you want to save text views that have been modified by a script (to match the behavior of Spike2 version 5).
  4. The MATLAB data exporter generated a spurious error if a channel had no data points. It still exported data for other channels.
  5. If you enabled Burst mode in the Sampling configuration dialog Resolution tab, then checked the WaveMark divider box in the Disable for compatibility section, sampling rates were not optimised. Now, if you check this box, the Burst mode check box is hidden; burst mode requires this feature to be enabled. The SampleOptimise() script command had a similar problem; now disabling the WaveMark divider also disables burst mode.
  6. The ViewTrigger() script command now allows a negative pre-trigger time. This matches the behavior of the Display Trigger dialog.
  7. Filled XY view channels did not draw correctly if the channel held more than 4000 points.
  8. The Apply to All button in the Editor Settings dialogs had no effect if the dialog settings matched the current text view.
  9. You can now setup a sampling configuration that takes measurements to a channel or to an XY view that uses a channel duplicate as a data source. Previously, you could set this during sampling, but if you sampled again the measurements were not restored.
  10. If you used the Sampling Configuration dialog Automation tab to assign names to data files, a resource file was always created for every data file, even if you did not save the data file.
  11. It was possible to crash Spike2 by creating a waveform average with more than 16384 bins per channel using linear or cubic interpolation.
  1. In the Display Trigger dialog, you now set paged display mode by selecting Paged display, not No Channel.
  2. The ScriptRun() command did not allow you to use the flags% argument.
  3. The Help window opened when you press the F1 key in a script window is now set to be Always On Top.
04/08 6.08 New
  1. Spike2 version 6.08 supports a more efficient data transfer method for the Micro1401 mk II, Power1401 and Power1401 mk II. The most dramatic improvement is with the USB interface. To use this new method you must update the 1401 firmware to the latest version.
  2. If you sample data with a Micro1401 mk II, Power1401 or a Power1401 mk II and have upgraded the 1401 firmware, there is a new Sample Status bar in Spike2 that presents information about data capture. The Sample Status bar can be accessed by a script using the App() or SampleHandle() commands.
  3. Modified #include script files are now saved automatically if the Edit menu Preferences option to save modified script files on run is set.
  4. In a time view, the Edit menu Copy As Text and Copy Spreadsheet commands now list the channels that are to be copied.
  5. When printing a header or footer, you can now use && to output an ampersand character (&).
  6. The y axes for a channel now change to display a scale bar if the channel space is too small to label the major ticks.
  7. If a script file or output sequencer file is marked read only or is on a write-protected medium, you are not allowed to change it in Spike2. This is to prevent accidental modifications to a file.
  8. Spike2 adjusts the colour of channel data and text if it set too similar to the background. There is a new Edit menu Preference to defeat this so you get the colours you asked for (even if this means that items are invisible).
  9. There are new importers for Delsys EMG data files, Mindset 16/24 format data files (NeuroPulse-Systems LLC) and MindWare MW data files (MindWare Technologies Ltd).
  10. The EDF importer has been extended to import event channels with triggers as used by BIOSEMI.
  11. The MC_Rack importer can now import event channels from digital data stored as a waveform.
  12. The Bionic importer now reads the NEURALCD continuous channel format.
  13. The Plexon importer can now import STROBED type data channels.
  14. The .WAV importer can now import 24-bit data as RealWave channels. 8 and 16-bit data are still imported as Waveforms.
  15. The ChanOrder() script command lets you move channels based on position as well as channel number.
  16. Virtual channels now allow Ln() and Exp() as mathematical functions.
  17. XLow() and XHigh() can now be used in a text view to get the first visible line and the line after the last visible line.
  18. Draw(n) can be used in a text view to scroll the view to make line n the top line.
  19. The View menu Display Trigger dialog and the ViewTrigger() script command let you set a delay between a trigger and active cursor updates. This allows active cursor searches after the trigger point; without the delay, data after the trigger may not have been sampled yet.
  20. Scripts for creating and playing tone bursts, noise bursts clicks and other waveforms while recording are now included in the scripts folder (WaveMake.s2s, WavePlay.s2s).
  21. The script MergeFiles.s2s in the scripts folder allows you to combine several time views into a single data file and to copy and paste data between open time views.
  22. The colour of the text caret is now the foreground colour set for the Default style. If you like dark text backgrounds, set the Default background dark and the foreground to a light colour.
  23. If you drag and drop a sampling configuration file (*.s2c) onto the Spike2 main window, it sets the current sampling configuration.
  24. App(-4) now returns the number of system handles held by Spike2. App(-5) returns the number of system graphical objects in use by Spike2. These commands are for system debugging purposes.
  25. New DebugHeap() script command added for system debugging.
  1. Compiling a script with a syntax error no longer clears all breakpoints.
  2. A syntax error in a #include file opened the offending file at the correct line. However, if you fixed the problem, you could not save the changed file.
  3. If you used the channel configuration dialog to set TextMark data using a serial line at 115,000 Baud, this did not work.
  4. The ListErrs.s2s script distributed with Spike2 to list all error codes has been improved and corrected. Thanks to Gavin Perry for the changes.
  5. A triggered group of channels in the sampling configuration dialog could not be removed.
  6. Deleting the topmost channel of a group of overdrawn channels with locked y axes and a horizontal cursor could crash Spike2.
  7. Dragging the y axis of a channel with a horizontal cursor while the display was scrolling (for example during sampling) caused the horizontal cursor to draw incorrectly.
  8. You now get an error message if you try to sample data using a 1401plus or a micro1401 with burst mode enabled. These devices do not support burst mode.
  9. It was possible for the x axis major tick labels to overlap during sampling if sampling ran for a very long time compared to the width of the display.
  10. When a y axis was drawn as a scale bar with a thick line, the ticks marking the end of the axis were one pixel too thick.
  11. It was possible for the 0 point on a y axis to be displayed as "-" or to be missing.
  12. If you used DlgValue$() in a user dialog to change a string field that had a list of drop-down alternatives, the field would change, but the result from DlgShow() could still be the previous value.
  13. If you held down the Ctrl+Alt keys and clicked the pixel between two channels in a time or result view, this could cause a crash.
  14. The Sampling menu Offline waveform output and the PlayOffline() script commands did not work when the output device was a Power1401 mk II.
  15. The ViewTrigger(-5) command did not return the cursor 0 action.
  16. The Apply to All button in the Script, Sequence and Text editor settings dialogs now works.
  17. If you stopped sampling with writing to disk disabled on one or more channels, it was possible to generate an incorrectly terminated data file. The SonFix utility can repair such files and there is no data loss. A file with this error may behave strangely in Spike2 until repaired.
  18. The virtual channel dialogs that write commands to convert instantaneous frequency and RealMark data to waveforms did not accept 0 in the Maximum Gap fields.
  19. If you exported a time view to a MatLab file from a smr file with a damaged channel, the channel was not exported but there was no warning message.
  1. If you used the sequencer CHAN command to get the event count for the digital marker channel (channel 32), you had to use CHAN Vn,30. You should now use CHAN Vn,32.
01/08 6.07 New
  1. The SerialWrite() script command command no longer waits until the written text has been output to the serial port.
  2. There is more on-line information about the J3 value generated by KMeans clustering and we also provide a scaled version of J3 that may be more useful when estimating the number of clusters.
  3. There is a new option in the Clustering dialog Edit menu to copy cluster information to the clipboard.
  4. In the curve fitting dialog, the Results tab now displays the units of each coefficient.
  5. Comments in #include lines in a script are now coloured. However, a ' in an included file name will be treated as starting a comment.
  6. In the Y axis dialog, the Lock Axes check-box now has immediate effect. Previously you had to use the Draw button.
  7. The Plexon file importer now imports all events as TextMark data so that all coded information is available.
  8. The WAV file importer no longer forces the sample interval to be an integral number of microseconds.
  1. The J3 value displayed after KMeans clustering was not scaled correctly.
  2. Ctrl+U did not expand the x axis about the screen centre in version 6.06.
  3. Disabled DlgXValue() controls in a user dialog were enabled if a cursor moved.
  4. In the virtual channel dialog, if you set the period of a generated waveform less than 2 samples, the virtual wave is not generated. This now generates an error message.
  5. In version 6.06, if you opened a data file that had an associated resource file and displayed the X axis dialog, the Tick subdivisions field could be set incorrectly.
  6. The Script menu Convert DOS script command did the conversion, but then threw the result away.
  7. In the output sequencer, pulse trains with a label do not produce multiple labels in the sequence.
  8. Export of binned data to MATLABTM could include the same event in two adjacent bins.
12/07 6.06 New
  1. You can now choose to display data in Result and XY views using log axes. Both the X axis and Y axis dialogs have new check boxes to enable log axes. There is a new Edit menu Preference to set the number of decades displayed when an axis is swapped into log mode when it includes 0 or a negative number.
  2. You can now use the Apply Resources, Save Resources and Global Resources commands with result and XY views.
  3. You can now generate file names for data files that include the date and time at which the file was created.
  4. Sampling now supports running the 1401 ADC in burst mode, which can allow longer run times with the same sample rates, or higher sample rates at the same clock resolution. The SampleOptimise() script command has been extended to match.
  5. There is a new Edit menu Preference to stop Y axes from inverting when you drag them to rescale data.
  6. Marker channels (Marker, RealMark, TextMark and WaveMark) have four marker codes. You can now choose which code is used when drawing data in a time view. You can also choose to always display marker codes as two hexadecimal characters. This is done with new controls in the channel draw mode dialog and by the new MarkShow() script command.
  7. The TextMark dialog now displays codes in hexadecimal only if the channel is set to use hexadecimal codes.
  8. If Spike2 has a problem moving the file generated by sampling to its final position, the error message gives more diagnostic information.
  9. If you Print or Copy the spike shape templates from a spike sorting window, you can now choose to display axes.
  10. The template-based Spike sorting windows now display the confirmed template count as a number.
  11. SampleCalibrate(), SampleTextMark() and SampleWaveMark() script commands now return information.
  12. There is a new script command SampleChanInfo() to return information about channels in the sampling configuration.
  13. The SampleComment$() script command can now set and query the Sample Bar label and comment that are stored in the sampling configuration.
  14. The new SampleConfig$() script command returns the name of the file that the Sampling Configuration was read from.
  15. The SampleSequencer() script command has been extended to report and set the sequencer mode.
  16. In the graphical sequence editor, you can now duplicate an existing pulse by holding down Ctrl, then clicking on a pulse and dragging it.
  17. In the graphical sequence editor, you can now set pulse trains and sinusoids by frequency as well as by interval.
  18. The action of saving a graphical sequence as text is now recorded.
  19. The Memory buffer Import dialog now has an Apply button, so you can import data without closing the dialog. It also remembers the last time range that you used in the Spike2 session.
  20. The ChanSearch() script command can now be used in a result view.
  21. The horizontal scroll bar in text views now tracks the widths of very long lines.
  22. We have added sizing boxes to the Cursor values, Cursor regions and Show/hide channels dialogs to make it clearer that they can be resized. We also improved the behaviour of the scroll bars in the two cursor dialogs.
  23. There is a new script command DlgGetPos() to return the position of a user-defined dialog.
  24. The WindowGetPos() script command has extra optional arguments to match the Window() command.
  25. Both the Window() and WindowGetPos() script commands are now functions.
  1. In version 6.05, changing the option to disable 10 MHz clock resolution in the Sampling configuration dialog Resolution tab did not always cause rates to be recalculated.
  2. If you used the Apply Resources command, it added any cursors in the resource file, but did not remove any that were already present.
  3. In the text editor, if you used the Replace All command to exchange text for text that included the original text (for example, replace MyVar with MyVar1), this would hang up Spike2.
  4. In a file that was longer that half the maximum time possible, a sonogram display could fail to display data past half the maximum time.
  5. You could crash Spike2 by renumbering horizontal cursors if the horizontal cursors didn't have consecutive numbers starting with 1.
  6. Changes in the way Microsoft Outlook Express treats shared files had stopped the Send Mail command working for Spike2 data files. We now make a copy of the data file before we send it. This can be quite slow for large files and you will need disk space for 2 extra copies of the data file.
  7. The script compiler now detects errors in the use of arrays that previously were not detected until the script ran. For example: var x, y[3]; x := y; now generates a compile-time error.
  8. In version 6.05, if you dragged a horizontal cursor in a time view that was scrolling sideways due to a Rerun command or during sampling, the cursor did not erase properly.
  9. If you displayed an axis as a scale bar, the number that indicated the size of the bar was negative.
  10. When used online, the KMeans dialog could open with an illegal z weight value. If this happened, the OK button had no effect until you corrected the illegal value.
  11. The Print(), Print$() and PrintLog() script commands could produce garbled output if they printed more that 255 characters.
  12. It was possible to crash Spike2 by locking the Y axes of three channels, deleting one of the channels, then moving the mouse.
  13. ViewList(arg1) was not the same as ViewList(arg1, 0).
  14. Y axes could sometimes display "-0" as a label for 0.
  15. If 0 was at the bottom end of a y axis, dragging the y axis to scale it would sometimes move the 0 away from the end of the axis.
  16. In a text view, the script command FilePrint(a,b) printed from line a to line b+1.
  17. If you used DlgButton() to create a button in a user dialog with an associated hot key, the hot key was not disabled if the button was disabled.
  18. The CursorActive(n%,...) script command was triggering a cursor search. This command now just sets the active cursor mode, as documented.
  1. In the graphical sequence editor, pulse train frequencies are now defined in terms of the interval between the start of each pulse rather than the gap between the end of one pulse and the start of the next.
  2. When generating formatted output from a script (for example using Print()), a % that did not introduce a recognised format specifier was removed from the output, now it is not.
  3. If you resize the application window, any iconised (minimised) windows are now arranged at the bottom of the window. Previously these windows kept their original positions.
  4. CursorActive(n%,...) no longer triggers a cursor search; if your script depends on this you should add CursorSearch(n%) after the CursorActive() command.
09/07 6.05 New
  1. FileTimeDateSet() script command added.
  2. Support for the Power1401 mk II added. This is the latest addition to the Power1401 family, with 1 MHz multi-channel ADC sampling rate, 256 MB to 1GB of memory and higher performance.
  3. There are three new optimisations to improve the match between requested and actual sampling rates and to improve the sampling bandwidth. These apply to the Micro1401 mk II and all versions of the Power1401.
  4. The SampleOptimise() script command has an extra argument to control the new optimisation features.
  5. The online clustering dialog has a new Edit menu command Delete online spikes with the shortcut key Del.
  6. When importing data where all the channels have the same sample interval, but the interval is not an integral number of microseconds, the importer can now match the original sample rate.
  7. When you create a new channel in the sampling configuration dialog, the Rate field is set based on the channel type rather than on the previous rate set for that channel number.
  1. It was possible to crash Spike2 by setting an illegal time format in the printer header and footer dialog.
  2. The Print Screen command did not convert time and date references in the header and footer.
  3. The File menu Load Configuration command now reads the number of traces in a WaveMark channel when reading from a data file.
  4. Recording the sampling setup of WaveMark channels now records the number of traces.
  5. If you had MATLAB installed, the option to export data as a MATLAB file was not always available.
  6. In the graphical sequencer, the commands that wait for a channel to be above/below a limit or inside/outside limits could scale the limits incorrectly if your channels had different scale and offset values.
  7. Changing the waveform channel in the FIR or IIR filter dialog did not update the filter response frequency axis.
  1. The new sampling optimisations can generate sampling rates that are a better match to the requested rates. Although this is normally a good thing, you may need to disable these optimisations if you want to match sampling rates from previous versions of Spike2. The new features are automatically disabled if you read an old configuration file.
  2. In the Resolution tab of the sampling configuration dialog, the item that was previously in the Groups field called 1 MHz, same sample rate groups is now handled by the Disable for compatibility: 10 MHz clock check box. The way we store this information in a configuration file has also changed. Configurations saved by previous versions of Spike2 are interpreted correctly by 6.05, but if you save a configuration in 6.05 with the disable 10 MHz clock box checked, this information is ignored by previous versions of Spike2.
06/07 6.04 New
  1. The help system has been changed from WinHelp (which is not supported in Vista) to compiled HTML Help (not supported in Windows 95).
  2. The clustering dialogs will now update with new spikes during sampling.
  3. The icons used by Spike for data files and for the program have been refreshed. All data files used by Spike2 now have their own icons including configuration and resource files.
  4. The Evaluate toolbar saves a list of recent evaluated expressions. If you use the Eval button to display the expression value, the saved expression no longer includes the Eval() script function that we insert into the expression to collect the value.
  5. The new FileTimeBase() script function gets and sets the underlying time units of a data file. This allows you to slow down or speed up time. For example, you could slow down a 24 hour recording played back at 60 times real time, or you could adjust a time base to compensate for time drift between different data acquisition devices.
  6. Ctrl+double-click on a channel now zooms the channel plus all duplicates.
  7. The Channel Show/Hide dialog is now resizable.
  8. When you use the Edit WaveMark dialog command to create duplicate channels for each template code, the channel title is set to title-nn, where title is the original channel title (truncated to 6 characters) and nn is the template code in hexadecimal.
  9. When you use the New WaveMark dialog to create a channel, the channel title is set to nw-c, where c is the original channel number and the channel comment indicates the source of the data.
  10. The channel numbers in a time view now display in red if the channel is modified by a channel process or by a marker filter.
  11. If you leave the mouse pointer stationary over the title area of a channel in a time view, a tooltip appears with the channel type and any comment set for the channel.
  12. The script compiler can now handle approximately 16 times more literal text. Literal text is a string enclosed in double quotation marks: "This is literal text".
  13. When sampling, the online Edit WaveMark dialog now allows you to set a time range when not in "At End" mode.
  14. The text editor regular expression search now includes built-in searches for white space, words, numbers and their inverses.
  15. DlgValue() can now change the spinner increment for fields created by DlgReal() and DlgInteger().
  16. The Create TextMark command (available during sampling with a TextMark channel enabled), now remembers the 10 most recent text comments.
  17. If you have a group of overdrawn channels with a locked y axis and a group offset of 0, all the horizontal cursors of all the channels are visible and can be dragged. Previously, only horizontal cursors belonging to the topmost channel in the group were visible.
  18. When you apply a digital filter to create a new channel, the channel comment of the new file holds the source channel number and a description of the filter.
  19. The SonFix application has been updated to repair a problem with unused channels that hold deleted blocks with an illegal block size.
  20. When you import data files into Spike2, the list of file types are now sorted alphabetically to make it easier to find a particular format.
  21. DSI importer: Version 5 of the DSI data format uses encrypted files. To read these files you must purchase a special DSI USB dongle. Contact CED for more information. You do not need this dongle to read previous formats.
  22. Biopac importer: Now handles version 45 format files.
  23. MED64 importer: There is a new check box to join all the data sections in the file into one continuous stream. The output file now is created with space for 128 channels (up to 64 of which will hold imported data). This lets you create a WaveMark channel from every possible input waveform.
  24. Axon importer: This now accepts files created with the version 2 library used in PClamp 10.
  25. CED CFS importer: Now correctly scales files holding data channels stored as double precision floating point.
  1. The FileOpen() script command, when used with external files, now gives an error if there is a problem (for example, file not found). Previously errors were ignored.
  2. If you used the Spike clustering window to analyse a limited time range, then changed to a later time range in the Edit WaveMark dialog, you could trigger a message box "An invalid argument was encountered." You could also trigger this error by clustering data on-line, particularly if you turned off writing to disk.
  3. If you used Measure to XY view with All channels use same X, and then Copy As Text, it was possible for the copied x axis value to be omitted from the output if a data point for the first channel was not visible.
  4. The FileSaveAs(name$, -1) script command and using File menu Save As on an unsaved time view have always caused Spike2 to recalculate the x axis range. The maximum x axis time is the last data item written to a channel that is saved to disk; memory channels and virtual channels are not included. Previously, if there were memory or virtual channel data points after the data saved to disk, the screen display was incorrect after saving the data.
  5. It was possible to crash Spike2 by creating at least three virtual channels, deleting the lowest numbered one, then creating a new virtual channel to replace the deleted channel.
  6. If you optimise the y axis of a channel displayed in Rate mode, the displayed range always starts at 0, to match version 5.
  7. The Online Update button in the Edit WaveMark dialog was incorrectly labelled.
  8. It was possible to crash Spike2 by exporting data to a Matlab file while continuing to sample into the source file.
  9. It was possible to hang up Spike2 while sampling by creating a new channel using an active cursor search for a threshold crossing on a channel with the DCRemove channel process.
  10. If you use a script to change the offset of a waveform channel with a Rectify channel process, the channel now redraws the data. Previously, only the y axis was redrawn.
  11. FontSet() when used with a non-text view set an italic font, regardless of the state of the flags% argument.
  1. The file icons used by Spike2 have been changed to take advantage of the better colour resolution available on most systems.
  2. The help system we use has been changed from WinHelp to compiled HTML Help. The new help system is supported by Vista (but not by Windows 95).
03/07 6.03 New
  1. The script language now supports #include statements to insert script files into a script. You can set break points in included files and step into them when debugging.
  2. You can now set the position of a horizontal or vertical cursor to a precise value interactively either from the Cursor menu or by right clicking on a cursor.
  3. You can now set the user-defined label for a horizontal or vertical cursor interactively either from the Cursor menu or by right clicking on a cursor.
  4. The DlgCreate() script command can now position a dialog on a specific monitor in a multi-monitor system.
  5. There is a new memory buffer command to create a memory channel that is a copy of an existing channel.
  6. The MemChan() script command can now create a memory channel that copies all the settings from an existing channel.
  7. The new Poly() virtual channel function lets you apply up to a fifth order polynomial to a channel much more efficiently than using Ch(), Sqr(), Cub() and so on. You could use this to correct a transducer with a non-linear calibration.
  8. The new WPoly() virtual channel waveform generator function lets you generate up to a fifth order polynomial in time.
  9. The new WT() virtual channel waveform generator function generates a linear ramp between two times.
  10. The Virtual channel functions EC(), ET(), ES() and EG() that convert events to a waveform by replacing each event by a shape with unit area have been extended to allow them to create asymmetric shapes. There is also a new function EE() that generates an exponential shape.
  11. Deleting a curve fit is now a recordable action.
  12. The Memory buffer Import dialog now remembers the last Mode setting you used.
  13. The DlgChan() script function can now append the special items "None", "Selected", "All Channels" and "Visible" to channels passed as an array. You can also request that the channel type, for example "(Waveform)" is not displayed in the list.
  14. The memory buffer Add Item and Delete Item dialog boxes do a better job of guessing what to offer in the time field when you open the dialogs.
  15. When there is a data file open for sampling and you open the Sampling configuration dialog, we now disable all controls (except in the sequencer page). Previously you were allowed to change settings, even though the changes were discarded when the dialog closed.
  16. In a time view, a Raster display of a channel with marker codes now uses the colour codes set for WaveMark data to indicate the code of each drawn item.
  17. There is a new SampleSeqClock() script command that can report and change the default sequencer interval when compiling sequences, and also report and change the clock rate of a running sequence.
  18. The text sequencer now supports the SCLK and SDAC directives in addition to SET.
  1. In versions 6.00 to 6.02, the MinMax() script command in a result view was using x axis values to set the search range and return the positions of the minimum and maximum. It now uses bin numbers, to match all previous version of Spike2.
  2. Averaging waveform data with a short gap that occurred just before the end of a sweep could cause a crash if separate counts per bin and aligning to the trigger were enabled.
  3. It was possible to generate a spurious "error reading data" when creating a virtual channel from a script.
  4. If a DlgChan() entry in a user-defined dialog had no channels, the displayed field was blank, and the value returned by DlgShow() for the field was 1. The field is now set to "None" and the return value is 0.
  5. It was possible to crash Spike2 by taking the waveform correlation of WaveMark channels or waveform channels with gaps.
  6. Virtual channels were not always redrawn when a channel upon which they depended was deleted or added.
  7. If you used the RM(), RMC(), IF() or IFC() commands in a virtual channel, the channel did not always redraw if the source channel changed.
  8. Recording of vertical cursor movement in a result view used positions in place of bin numbers.
  9. Recording of horizontal cursor movement set the wrong channel number.
  10. Searching backwards in channels with a marker filter set was not always done correctly. The most common symptom was RealMark data being drawn incorrectly.
  11. If you used the PlayWaveCycles() script command to change the cycle count of an area that was part of a linked list of playing areas, the cycle count change did not always happen on the next play of the area.
  12. Changing the trigger channel of a Raster display in a time view did not cause a screen update.
  13. You can now read a sampling configuration from a data file that has a time base that is not 1 microsecond. Previously this imported with the wrong sampling rates.
  14. Using a script to close a cursor regions or cursor values dialog could crash Spike2.
  15. You can now set the sampling time base for a Micro1401 mk II to less than 2 microseconds.
  16. A backward active cursor search of a virtual channel could hang Spike2 or fail to find a feature when the search began close to the start of a file.
  1. The MinMax() script command was changed accidentally at version 6.00 and restored at 6.03.
12/06 6.02 New
  1. The Edit WaveMark dialog now supports Spike Collision Analysis to separate two merged spikes by comparing the recorded waveform with pairs of spike templates.
  2. The clustering windows now flash the dot that corresponds to the current spike in the Edit WaveMark dialog.
  3. There are two new methods of generating clusters based on existing templates: cluster on correlations and cluster on errors.
  4. If you cluster on measurements and use the Reanalyse command, you can now Apply changes to see their effect. This saves you closing and then re-opening the measurement setup dialog.
  5. If you draw spikes with multiple traces in Overdraw WaveMark mode, the traces are now shown side-by-side, not on top of each other.
  6. Overdraw WaveMark mode now draws the spike shapes as smooth curves (using cubic splines to interpolate) rather than joining the points with straight lines.
  7. In Overdraw WaveMark mode, you can now select and re-code events by holding down Alt+Ctrl and clicking and dragging.
  8. There is now the concept of external exporters. This allows you to save time, result and XY view data to other file formats. The exporters are implemented by DLLs in the Export folder with the extension sxl. Any documentation for the exporters will also be in this folder. The first exporter writes MATLABTM files. You can select from the available exporters when you install Spike2.
  9. When installing Spike2 you can choose to include MatLabXxxx() script commands that communicate with a copy of MATLABTM.
  10. FileSaveAs() has been extended to support external exporters.
  11. Copy Spreadsheet with a RealMark channel now outputs the displayed item when a channel contains more than 1 item and can also support cubic-spline interpolation.
  12. When displaying principal component data, you can now select "Event time" to replace the Z axis value. This lets you visualise clustering changes as a function of time.
  13. The SetResult() script command now allows you to add 1 to the flags to set mean rather than sum mode when handling errors.
  14. The Virtual channel dialog now remembers previously used expressions.
  15. There is a new file importer for Alpha Med Sciences MED64 files. This importer will cope with input files of any size, but the output file size is limited to 2 GB. You can select the channels to import to reduce the output file size.
  1. The FilePrintVisible() script command now works.
  2. Copy Spreadsheet no longer hangs when copying a RealMark channel.
  3. Saving a virtual channel holding RM() data now works reliably.
  4. Cubic splines of RealMark data with only 2 points drew as a horizontal line at 0 instead of linking the points with a straight line.
  5. In version 6.01, if you dragged the key in an XY view, it did not move until you dropped it.
  6. Call tips and auto-complete did not work when you were typing at the end of a script file.
  7. If you attached a DC remove process to a channel with gaps that were shorter than the DC remove time period, the channel data did not always draw correctly.
  8. Fixes for minor drawing bugs in the spike shape dialogs.
  9. Histograms with multiple channels with locked and offset y axes with more than 1 bin per pixel now draw correctly.
  10. The YAxisLock() script command repainted the window, which could cause flickery displays if the command was applied to multiple channels.
  11. The file importer for Multi Channel Systems data files now works correctly with files holding 16-bit data.
  12. The file importer for European Data Format files (EDF) can now process annotation channels with multiple events per data block.
  1. The Overdraw WaveMark display mode draws waveforms as smooth curves and displays multi-electrode traces side-by-side rather than on top of each other.
09/06 6.01 New
  1. The Channel Process dialog now allows you to copy the current set of channel processes to all selected channels. There is also a ChanProcessCopy() script command that does the same.
  2. The maximum number of coefficients in an FIR filter has been increased from 511 to 2047 at the request of a user.
  3. The ReRun() script command can now return the time that rerunning has reached and report if a rerunning file is linked to offline waveform output.
  4. The Offline waveform output dialog (and the Playoffline() script command) can now rerun a data file in step with the waveform output.
  5. Using Alt+Mouse click on a spike shape channel drawn in OverDraw WM mode now reports the x position within the spike.
  6. The cursor positions and cursor values dialog boxes now report cursor positions, position differences and reciprocal of the difference using the actual cursor positions, not the cursor position rounded to ticks in a time view or bins in a result view.
  7. In a waveform average, you can now choose how the data is aligned with the trigger position. You can choose from: next point, nearest point, linear interpolation and cubic spline interpolation. There is an extra argument in the SetAverage() script command to do the same.
  8. In a waveform average, you have the option to count how many data points contributed to each bin in an average to cope with waveform channels with gaps. In the script language there is a new flag option in SetAverage() and SetResult() to enable this and BinError() has been extended to access the bin counts.
  9. The new Ceil() and Floor() script functions convert a real number or array to the next higher or next lower integral value.
  10. The FIR filter dialog can now cope with time view channels with very few data points and the waveform display is aligned better with the time view window.
  11. There are new script functions EditFind() and EditReplace() that provide the functionality of the Find and Replace dialogs in text views.
  12. You can now fill and frame channels of data in an XY view using two new joining modes in the XY Draw Mode dialog and a new item in the Colour dialog for XY views. The XYColour(), XYJoin() and XYSetChan() script commands have been extended to match.
  13. The are now short-cut keys for the script debugging functions (step, step in, step out, and so on) for computer systems without a mouse.
  1. The File menu->Resources->Apply Resource file command now deletes all virtual channels before applying the resource file. Previously, if you applied a resource file with virtual channels multiple times, you would get multiple copies of the virtual channels, all with the same channel number.
  2. You could crash Spike2 by typing a bad channel specification string into the draw mode dialog.
  3. MinMax() script command on a RealMark channel drawn as a waveform did not pay attention to which ChanIndex() item was displayed.
  4. Rate mode drawing in a time view improved at very high time axis magnifications.
  5. The automatic channel comment generated when a disk-based channel was created by FIR or IIR filtering listed the wrong source channel.
  6. Deleting the first channel of grouped Overdraw WM channels no longer causes the Overdraw WM channels to appear in the scrolled area of the screen.
  7. The virtual channel IF() command had problems with event channels with long gaps. This caused very slow display updates or missing displays.
  8. When recorded, the ChanSave() script command swapped the source and destination channels.
  9. You can now use VirtualChan(chan%, 0) to test if a channel is a virtual channel.
  10. In version 6.00, the Read() script command issued to a text view when the caret was at the end of the text returned 0 when it should have returned -1530 (End of File).
  11. When using Alt+Mouse click to make a measurement with the x axis in time of day mode, the displayed x axis time difference is now correct.
  12. In the text editor, if you folded up some code, then deleted the header line for the fold, the header was deleted, but the folded text remained hidden.
  13. The script MoveTo() and MoveBy() commands now match the behaviour of previous versions of Spike2.
  14. If you use Print() or PrintLog() to add text to a text window, "\n" is now translated to "\r\n" in the text window, to match the behaviour of previous versions of Spike2.
  15. If you attempt to pass a zero-length array as an argument to a script function, you now get a more useful error message.
  16. Spike2 indicates script errors by changing the background colour of the offending line. It was possible for the colour change to linger after the error had been cleared.
  17. The Grass-Telefactor PolyView importer now correctly handles files with file comment text.
  1. When you create a new channel, Spike2 searches for the nearest channel number to the new channel and displays the new channel next to it. If the new channel was part of a group, this had the effect of splitting the group. Now, the new channel is displayed next to the group.
  2. The initial y axis range for Sonograms is now calculated from the channel sampling rate. The initial y range for instantaneous and mean frequency displays is now set to twice the sustained event rate set for the channel. Previously, the range was always set to display from 0 to 100 Hz. If you open a data file with an associated resource file, the last used ranges are applied, as before.

Cambridge Electronic Design Limited

Registered in England: 972132

Registered office:

  • Cambridge Electronic Design Limited,
  • Technical Centre,
  • 139 Cambridge Road,
  • Milton,
  • Cambridge CB24 6AZ

VAT: GB 214 2617 96

Producer Registration number: WEE/BD0050TZ

Terms and Conditions of Sale

For our US customers, we can provide tax form W-8BEN, that identifies us as a UK company.

DUNS: 219151016
NAICS: 423490
Commodity codes
Hardware: 84716070
Software: 85234945

By email:

By post:
  • Cambridge Electronic Design Limited,
  • Technical Centre,
  • 139 Cambridge Road,
  • Milton,
  • Cambridge CB24 6AZ
By telephone:

(Int.+44) (0)1223 420186

From North America (Toll Free):

1 800 345 7794


Privacy policy

CED, through this site, does two things that relate to privacy. We would like to explain them.

Emails from down-loads

We offer free down-loads of many files on our site, from test programs to complete install files for updated versions of major packages like Spike2 and Signal.

When customers wish to take a down-load of a major package, we ask a few questions, including their name, email address, the serial number of the software for which they seek an upgrade and whether they would like an automatic email whenever we update the product. This information is emailed back to CED when they access the final down-load screen. Within this email, your browser transmits the type and version of browser you are using, and the screen resolution you are running.

The reasons why we take and keep this information are that it is useful for our software development team to know who has taken the latest versions, and it is useful for our web site development team to know which browsers people are using to view our site, and what resolution they have their screens set to.


When people down-load a major package, we try to write a cookie, a small file in your computer, that records your name, serial number of the software package, and the version you are down-loading. These files have a lifetime of one year.

The reasons for storing this information are firstly that if you ask for another down-load some other time, your details are read from the cookie and are pre-written into the form, to save you looking them up again. The other reason is that next time you access our site, your browser looks through your CED cookies and compares the versions down-loaded with the latest version numbers read from our site. If there is a later version of a product you have already down-loaded, we tell you on the home page screen, so you know that it is worth going to the down-load page again.

None of this information is ever given to anyone outside CED. ×