• UK
  • US
  • Français
  • Deutsch
  • Español (precios €)
  • Polski
  • 日本人
  • 中國傳統
  • 简化中国

Recent technical history of Spike2 version 9 for Windows

Freely down-loadable for version 9 users.

Date Version Summary
05/18 9.03a New
  1. Recording the creation of an XY view to hold measurements generated a ChanKey() command before the XY view existed, which did not work.
  2. Recording a change to the state of the XY channel key recorded the old state, not the new state.
  3. Turn Recording Off did not bring the new view holding the recorded script to the front (so it might be behind other windows).
05/18 9.03 New
  1. The Microsoft .wav file importer can now import files holding 32-bit data; previously only 8, 16 and 24-bit data files were supported. 24 and 32-bit data files are imported as RealWave channels, 8 and 16-bit data files are imported as Waveform.
  2. ChanFitValue() has an extra, optional argument to report if there is a fit on the channel.
  3. The Heka file importer is extended to support import of multiple traces and to handle files with more than 100 data series.
  4. The C3D (Motion Lab Systems) importer is extended to fully parse the Parameter section of the file, allowing us to import channel descriptions and to scale and offset channels correctly.
  5. The Ripple and Bionic/Cybernetics importers will now attempt to assemble multiple files from the same recording session into a single output file.
  6. Opening a Sampling configuration file can now be recorded.
  7. When sampling data in triggered display mode, you can now suspend automatic updates by selecting a previous trigger point and re-enable them by scrolling to the end of the view.
  8. The AlphaOmega importer is extended to read Stream data comments as a TextMark channel.
  9. Talkers timing drift cancellation is improved during the initial measurement phase.
  10. You can add a progress bar to a user-defined dialog with the new DlgProgress() script command.
  1. You could not create an online Measurement to XY view or Measurement to a data Channel before starting to sample, if any referenced X axis dialog expression returned a negative result. For example, using Maxtime() or Maxtime(n) did not work because when these were set up, no time had passed and both of these expressions returned -1, which was treated as an error.
  2. The C3D (Motion Lab Systems) importer could get channels labels, scales and units confused between 3D point data and ANALOG channels. Files with ANALOG channels that stored multiple points per video frame in floating point format could import spurious points.
  3. The FIRQuick() command could crash Spike2 if you used nonsense combinations of freq and width arguments.
  4. The Ripple and Bionic/Cybernetics importers did not pay attention to the scaling factors and channel units in the source files.
  5. When we increased the number of arbitrary waveform output areas at version 9.00, we broke the ability to link areas together.
  6. It was possible to crash Spike2 by opening a Result view from disk, then running the SetAverage() script command with the result view as the current view.
  7. It was possible to crash Spike2 by reading a sampling configuration holding channel processing or virtual channel information, editing the channels set for sampling so that the channel processing or virtual channel information was no longer valid, then sampling.
  8. Due to a change in a Microsoft library, the text importer was baffled by a column of values that contained 'NaN', where previously these were treated as zeros.
  9. Using the PlayWaveAdd() or PlayWaveDelete() script commands did not cause the play waveform toolbar to update.
  10. Changes made to Talkers in third party set up dialogs did not always get passed into Spike2. To avoid this, Talker information is now refreshed after loading a sampling configuration.
  11. If the stored Talker information from previous Talker sessions became corrupted, this prevented Talkers being used. Spike2 now detects this situation and deletes the corrupted file, allowing Talkers to be used.
  1. Previously, if the last data item in a file was a WaveMark (spike), the spike waveform was not visible as the time of the item (used to set the maximum time in the channel) is the time of the first waveform point. The width of time views holding WaveMark channels is now increased by the width of the widest spike to ensure that all waveforms are visible.
01/18 9.02a New
  1. The BIOPAC importer can now import older format big-endian files. To import modern ACQ files, users also need the BIOPAC ACKAPI package.
12/17 9.02 New
  1. Channel Process is extended to allow time shifts of event channels and debounce of event and Level event channels.
  2. The ArrCWT() script command calculates the Continuous Wavelet Transform of an array of data.
  3. The ArrMapImage() script command converts a matrix into a bitmap using a colour scale.
  4. The ChanOrder() script command is extended to get a list of all channels, in order, including hidden channels.
  5. The ChanList() script command is extended to manipulate channel lists.
  6. Dialog expressions are extended with arithmetic functions.
  7. The XRange() script command can be used as the equivalent of the X Axis Range dialog Show All button.
  8. The Cursor context menus for Lock to Cursor (to another cursor) now have an unlock option and indicate which cursor it is locked to.
  9. The ArrRange() script command finds the range of data in an array.
  10. The script editor can navigate to the next and previous function or procedure start from the right-click context menu.
  11. We have improved the support for very large channel images (more than 32767 pixels in width or height); previously such images did not draw.
  12. You can disable the use of the DEFAULT.s2cx configuration file in the Edit Preferences Sampling tab.
  13. You can right-click the title bar of the Sampling Configuration dialog to copy the path to the current configuration file to the clipboard.
  14. The EditPaste() script command is extended to report clipboard contents and to copy a clipboard bitmap into a script array.
  15. The VirtualChan() script command can create a new channel with a channel number higher than existing channels in addition to creating at the lowest available channel.
  16. RealMark channels with multiple attached data values can have separate titles and units for each item when data is stored to a 64-bit smrx data file. There are new variants of the ChanTitle$() and ChanUnits$() script commands to support this. The Channel Information dialog is extended to cope with the new capabilities.
  17. You can now find out which cells are selected in a grid view with the new Selection() script command.
  18. When sampling with Write to disk disabled, many more items are drawn in the Not saving to disk colour and display their not saving state when you redisplay the data. Spike2 shape data always displays data in the colour that corresponds to the sorted state. Marker data drawn in State mode shows the original colour and the not saving colour.
  19. Previously, some channels that could draw in the Not saving to disk colour only did so when drawn at the very end of a sampling file. Now they always draw data marked as not to be saved in this colour as long as the data is still buffered and could potentially be saved.
  20. You can now reset the data view colours to a dark scheme with black backgrounds rather than white backgrounds by holding down the Ctrl key while clicking the Colour dialog Reset All button. The ColourSet() script command is extended to support this.
  1. The Export As... menu command did not include *.gif in the list of available file formats.
  2. When starting to sample or rerun a data file, if you caused Spike2 to recalculate the data area (by resizing or showing/hiding channels) before the view began to scroll, the x axis range could change to a previously set range.
  3. The online TextMark dialog did not save/restore marker codes in the drop-down list correctly. Codes 0-15 in the first marker code worked correctly.
  4. The ChanMeasure() script command and the Cursor Regions dialog could include an extra data point in measurements such as Mean value when a waveform channel had a channel process applied such as Smooth, and the end of the time range for the measurement exactly matched the time of a waveform data point.
  5. In the Channel process dialog, editing a value caused the channel to update (as expected) unless the edit returned the value to the pre-edit state.
  6. Recording Duplicate Channel did not make the new channel visible.
  7. Recording changes to the Grid display did not work for x grid only or y grid only.
  8. A channel image that was linked to specific channel co-ordinates could disappear if you zoomed in.
  9. A script that created a process that wrote data to a memory buffer channel, deleted the memory buffer, and then repeated this sequence without allowing the script idle time with Yield() or a user interaction command (Interact(), ToolBar() or DlgShow()), could crash.
  10. Toolbar and Interact bar and user-defined dialog short-cuts did not work if the current view was iconized.
  11. The ArrAdd(), ArrSub(), ArrSubR(), ArrMul(), ArrDiv() and ArrDivR() script routines did not accept a const second argument.
  12. Importing a CFS file holding channels of 64-bit floating point data could generate incorrect results.
  13. Edit Preferences dialog Sampling tab does not accept a directory that does not exist, but did not explain the problem.
  14. If you opened a data file ready to sample, then Aborted sampling without starting, a connection to the 1401 was left open. Switching off or removing the 1401 in this state could make it difficult to reconnect without restarting the system.
  15. The ChanPixel() script command in mode% 7 returned 0 when getting the font size, it now returns 3. If you used it to get y axis information that depended on a channel, and the channel was invisible, it could return incorrect values.
  1. Previously, when a script created a new view that was invisible, it was still moved to the front of all views and given the input focus. This caused the application title bar and the title bar of the view that previously had the input focus to repaint. Now, if a view is created invisibly, it is not moved to the front. This reduces screen flicker and speeds up some scripts. However, any script that relies on a newly created but invisible view having the input focus will need changes.
09/17 9.01 New
  1. You can now create RealWave channels for sampling. When used with a programmable signal conditioner, you can apply gain changes during sampling that do not affect previously sampled data.
  2. The WEnv() virtual waveform can now use cosine and raised cosine functions for the rising and falling phases.
  3. When selecting a COM port for a signal conditioner, we now only offer ports that exist and give more information to identify the port.
  4. Talker channel numbers are no longer limited to the range 1-100.
  5. Talker-generated channels can now be used as triggers for triggered sampling.
  6. The total number of channels sampled by a 1401 interface is still limited to 100, but the channel numbers you assign to them are no longer limited to the range 1-100.
  7. When sampling, you can move the keyboard marker, TextMark and Digital marker channels so that they do not interrupt the channel range of other channels.
  8. When debugging a script, you can edit and display string variables in a multi-line editor.
  9. The FileApplyResources() script command is extended to give some control over the resources to apply. You can also apply the resources created by one view to the current view without creating a named resource file.
  10. The Spike2 Help menu About Spike2... dialog now includes the name of the computer that Spike2 is running on. This is the name needed by Talkers running across a network to access Spike2.
  11. The D440 signal conditioner now has a Reset Calibration button.
  12. The Biopac importer is now available in 64-bit builds of Spike2 and is updated to the latest version.
  13. The ColourSet() and ColourGet() script commands now have access to the colour scales, as used in sonograms.
  14. The DlgEnable() script command can be used to control the visibility of a bitmap in a user-defined dialog.
  15. CondSet() and OutputReset() script commands have new variants to reset the conditioner and output state.
  16. The System() script command is extended to report the CPU time used by the GUI thread.
  17. When a channel with no channel comment is saved to a disk file, Spike2 will add information to the comment such as the source channel number, virtual channel and channel process information.
  18. The tooltip that pops up when you hover the mouse over a time view channel y axis now has more information about channel processes and WaveMark traces.
  19. When the Cursor Regions and Cursor Values dialogs have the input focus (are selected), they no longer stop user-defined short-cut keys from working in the Toolbar, the Interact bar and user-defined dialogs.
  20. The SampleText() script command now returns the time at which the text marker was added.
  21. When using Ctrl+Alt + mouse-click to drag a line to select spikes in Overdraw WM and other drawing modes, you can now use the Shift key to constrain the line to be horizontal.
  22. In the clustering dialog, you can now use the F key to set selected (using ellipses or the user-defined shape) events to code FF. You can also set all visible events to code FF using Ctrl+Shift+F.
  23. In the clustering dialog, you can use the mouse wheel to scale the size of the user-defined ellipse or shape.
  24. The System$() script command has a new variant to read the command line that started Spike2.
  25. You can now save bitmaps using FileSaveAs() in GIF format, and GIF is offered when loading or saving images interactively. These are not animated GIFs.
  26. There are improvements to the script compiler error messages to help identify the cause of a script syntax error.
  1. Importing or exporting a data file with a lot of channels (>300) and many different channel Titles, Units or Comments, could result in a .smrx data file that would not open. Such a file can now be repaired by the S64Fix program.
  2. The script compiler system became confused if you compiled (and ran) one script, compiled a second script which generated a compiler error and finally ran the first script.
  3. The Graphical sequence editor gave an error if a marker item was added with a code of 00 (which is the default code).
  4. Attempting to open a corrupted sampling configuration file could crash Spike2.
  5. The code that adds messages to the Sampling Notes about channels that are sampled significantly slower or faster than requested always reported such channels as sampling slower, even if they sampled faster.
  6. The File menu Import command added channel titles to the start of all channel comments. It now only does this if a channel title is so long that it is truncated by the import system.
  7. The keyboard marker for the end of a timed sampling section was not written to disk.
  8. In version 9.00, the initial sampling state in timed or triggered sampling mode was incorrect.
  9. Paste of non-ASCII UNICODE characters into a grid view did not work.
  10. In the X Axis Range dialog, changing the axis Units repainted the Left and Right values in the previous axis mode, not the new one.
  11. If you sampled data in 32-bit format, then used the FileSaveAs("", -1) script command to save the file, the default file extension offered was .smrx (though the file was 32-bit and should have the .smr file extension). Spike2 can read 64-bit files with either extension, but rejects 32-bit files with the .smrx extension.
  12. If you sample without a 1401, the Trigger check box in the sampling control bar is disabled as triggered start is not (currently) supported without a 1401.
  13. When a script hit a break point or when Interacting with Spike2 in a script idle routine, if you opened the Cursor Values or Regions dialog, or any Spike-shape or Multimedia windows, this set the script current view, which could cause the running script to fail with a "Wrong View type" error.
  14. In the Channel setup dialog, changes to the D440 signal conditioner gain did not cause the y axis scale to update.
  15. In the Sample Bar, the Write to Disk state for Immediate Start mode now works. If Immediate Start is not enabled, Write to Disk changes are disabled.
  16. If you Reset sampling (to restart it), the Cursor Regions and Cursor Values dialogs were not reset.
  17. Recording XAxisMode() in a time view could generate strange mode% values if the x axis units were not seconds.
  18. The SampleWaveMark() script command failed if you used an array of ports as the second argument.
  19. The SampleClear() script command did not clear the name of the last read sampling configuration returned by SampleConfig$().
  20. The SampleClear() script command did not clear the name of the last read sampling configuration returned by SampleConfig$(). The Ec() and Et() virtual channel functions extended their search for events one data file clock tick forward more that they should. This could (in somewhat contrived circumstances) cause the Ec() function to generate a count that was 1 too large. The change to the Et() command output was usually too small to matter.
  21. The WSqu() virtual channel function could make the low phase one sample too long.
  22. If you double-clicked and edited an item in a TextMark channel, duplicates of the channel did not update.
  23. Several script commands would not accept const items as arguments when they should. For example, SampleTrigger(), YAxisAttrib() and YAxisStyle() would not accept a cSpc% argument that was declared const cSpc%[3]:={2,1,2}.
  24. The MemImport() command to create a WaveMark channel from a waveform and an event channel could miss the last waveform point if the event times were not aligned to the waveform samples.
  25. In a view with a logarithmic y axis, if you zoomed in by dragging a rectangle, the result displayed the wrong y axis range.
  1. The MatLabOpen() script command no longer stops a script with a fatal error if MatLab cannot be opened and now reports a negative error code.
  2. In the script debugger, when you open a window to edit a string variable, the initial string is no longer selected and the edit window will attempt to resize to accommodate the string text.
  3. The example Talkers are always installed unless excluded in a Custom installation.
  4. The maximum length of automatic names for files is increased from 23 to 40 characters. Older versions of Spike2 will limit the length to 23 characters if you edit the name.
  5. When you create a new channel, the default channel titles and channel comments are now set to an empty string rather than "untitled" and "No comment".
  6. The value returned by the SampleText() command has changed; previously it always returned 0.
06/17 9.00 New
  1. The maximum number of channels that can be stored in a 64-bit smrx file is increased from 400 to 2000.
  2. The maximum number of virtual channels, memory channels and duplicate channels is increased to 2000.
  3. The maximum number of channels in an XY view is increased from 256 to 2000.
  4. The maximum number of channels in a Result view is increased from 400 to 2000.
  5. The maximum number of rows in a grid view is increased from 10000 to 1000000 (the maximum number of columns remains 1000).
  6. The number of arbitrary waveform areas that can be used during sampling is increased from 10 to 62 for Power1401 devices and to 20 for Micro1401 devices.
  7. There is a new Chan() script command that allows you to discover the channel number that matches a channel specification.
  8. The script language has new numeric operators for bitwise not (~) and for shifting integers (<<, >> and >>>) and allows the use of & for band, && for and, | for bor and || for or, % for mod and ! for not.
  9. The script language allows you to use * to multiply a string, for example "+-"*3 is "+-+-+-".
  10. The memory buffer import dialog and the MemImport() script command now allow import of a WaveMark channel to a waveform.
  11. The ArrHist() script command allows an integer source array.
  12. Edit menu Find and Replace dialogs and script language equivalents now support ECMAScript regular expressions.
  13. More dialogs are resizeable, usually to allow you to type longer text strings or to access long lists of item without scrolling: Virtual channel dialog, Evaluate dialog, Debugger edit variable dialog, graphical editor add arbitrary wave dialog, Change Colours dialog and several others.
  14. If you have the Edit TextMark dialog open, you can now click on TextMark items for that channel in the data view to move to them in the dialog. If the dialog is expanded to show the list of TextMark data items, the selected item is highlighted.
  15. You can sample data using Talkers without having a 1401 connected if you set a sampling configuration that does not make any use of a 1401 (no output sequence, arbitrary waveform output, waveform channels, WaveMark channels, event or digital marker inputs).
  16. The FileOpen() script command has a new mode% flag to open external text files in Unicode mode.
  17. SSOpen() allows the current view to be associated with a time view; in previous versions it had to be a time view.
  1. The channel numbers for memory channels, virtual channels and duplicate channels have changed (to make room for additional disk channels). Any scripts that relied on channel 401 being the first memory channel or 701 being the first virtual channel will now be broken. We have always stated that scripts should not do this. You can use Chan("m1") to get the first memory channel and Chan("v1") to get the first virtual channel. Use DupChan(0) to find the number of the first duplicate channel.
  2. We no longer read the old format configuration (*.s2c) or resource (*.s2r) format files. The last version to write these was Spike2 7.10, released in 2012. If you need to read these files, they can be converted into the modern *.s2cx and *.s2rx format using Spike2 version 8.
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