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

Technical history of Spike2 version 9

Freely downloadable for version 9 users.

Date Version Summary
04/2022 9.20 New
  1. The Bionic and Ripple file importers have been updated to work with version 3.0 files with 64-bit timestamps.
  2. The algorithm we use to select the x axis major tick spacing is now much faster.
  3. The Heka importer can use use regular expressions to select items for import.
  4. There is a new importer for BrainVision format files.
  5. The ToolbarText() command is extended to change the allowed user actions when the toolbar is active.
  1. The Intan importer would fail if importing a RHD file containing temperature sensor information.
  2. The slider control in a user-defined dialog could omit one of the tick marks and an initial, non-zero position could be incorrectly displayed.
  3. No longer takes two attempts to close the D360R conditioner dialog when sampling.
  4. Closing the D360R conditioner dialog when sampling could crash Spike2 if an ADC port offset was applied.
  5. If a signal conditioner dialog failed to open, this caused all conditioner dialogs to be unavailable.
  6. The 1902 conditioner dialog did not initialize correctly if there was no configuration file.
  7. The Calibration dialog limited channel units to 5 characters in a 64-bit .smrx data file (which allows up to 10 characters).
  8. With a Micro4 interface, the output sequencer generated outputs 1 sequencer clock tick earlier that previous 1401s; all time intervals and relative timings between sequencer outputs were accurate and it would be most unusual if this had any effect on experimental data.
  9. If you resized the Sampling Notes dialog, the Close button did not move.
  10. The Graphical sequencer could report spurious timing errors when the sequencer timing resolution changed.
  11. In the Sampling Configuration dialog Automation tab, selecting a folder with the Browse... button did not clear existing errors.
01/2024 9.19 New
  1. Spike2 will reject system shut down requests when sampling data.
  2. Talkers that can connect to a different hardware device for each sampling session can store drift settings separately for each hardware device.
  3. Talkers with RealMark channels can now generate separate Titles and Units for multiple items as we have made an extra 64 characters of space available for this purpose.
  4. The ADI importer can now apply marker codes to comments based on matching the comments with regular expressions held in a text file.
  5. The AlphaOmega importer revised to handle gain settings in recent files.
  6. The Heka importer can now import data files that hold floating point values. If a required data file is missing, the file name is listed in the progress dialog.
  1. If a Talker stopped suddenly, Spike2 did not respond to it disconnecting, making it difficult to restore the connection.
  2. In the Talker->Info... dialog, the Clock drift rate values are labelled in ms/s but were in s/s (so 1000 times too small).
  3. In an imported file, the fourth file comment started with a spurious end of line character.
  4. A backwards active cursor search of a waveform channel stored in a 32-bit .smr file could report a position one point before the start of the search range, which would fail the search.
  5. During sampling to a 64-bit .smr file, a backwards active cursor search of a waveform channel could report the wrong position.
  6. The VirtualChan(chan%, 0{, expr$}) script command always returned 0, even when the expression was invalid.
  7. The ViewTrigger(0,...) script command did not set Paged display mode.
  8. Opening the Sample menu during sampling caused any open Signal Conditioner dialog to close.
  9. If you used the Digitimer D360R Conditioner control panel to change settings while sampling, the changes were often lost.
  10. Signal Conditioner changes made during sampling now always take effect when you click Apply. Previously they could be deferred.
  11. If the ChanValue() script command was used with the mode% argument set to 6, 7, 11 or 12 (Mean and Instantaneous frequency modes), the measurement was made with the Beats Per Minute value set for the channel, not the value implied by the requested mode.
  12. In a User dialog when defining a Real number field, the number of significant figures displayed was often many more than the number specified in the DlgReal() script command.
  13. Very long .mp4 video files could not be replayed past a few hours into the video. We have fixed the third party component that caused the problem and have demonstrated playback of a 30+ hour long video.
  14. A badly formatted video file could crash Spike2 when opened for multimedia review.
  1. In a Result view, the Edit menu Clear command is now always enabled, not just when the view sweep count is non-zero.
05/2023 9.18 New
  1. We now support the use of more than one D360R signal conditioner.
  2. The Talker Info... dialog has commands to Log and Copy information and you can lock and clear the saved Talker drift rate.
  1. When importing events from a waveform in Peaks and Troughs mode, a spurious first peak could be added to the output.
  2. In a grid with c columns (data columns indexed 0 to c-1), if the GrdSet() and GrdGet() script commands attempted to access column c (which does not exist) they would access column 0.
  3. User-defined dialogs with only buttons (no input fields) could set the input focus to a button that was not the default button.
  4. If you set more than 39 Arbitrary waveforms in the Sampling configuration, the Play waveform toolbar did not enable/disable the higher-numbered buttons and it was possible for the buttons to have unexpected effects (such as hiding the sampling window).
  5. The x axis Show All command in an XY view with a single data point or with all data points at the same x position had no effect. It now scrolls the x axis to centre it on the data position.
  6. A long stream of NaN (Not a Number) values in a RealWave channel caused the Skip NaN Channel process to stop reading data.
  7. In a script view, using F1 with the mouse over View() did not open the correct help page.
  8. If you right-clicked on a channel and selected Hide Channel, this did not record when Script recording was enabled.
  9. If you changed the x axis draw mode from Time of Day to Seconds, cursor labels displayed the time as Time of Day in seconds, not as seconds from the start of the file. The display was correct on the next update.
  10. The CED 1902 and Axon CyberAmp signal conditioners did not work with COM ports 10 or higher.
  11. The XY Draw mode dialog recorded All Channels as 0, not -1.
  12. The Text importer now lets you set the labels or units lines anywhere up to the first data line. Previously you were limited to the lines deemed to be header information by the initial scan.
  13. In the Text importer, the No Config option left the importer in a non-functioning state until an existing configuration was loaded.
  14. The CFS data importer failed with files holding more than one sweep of data.
  15. The EDF data importer could fail when reading comments. The annotation codes used did not match the documentation.
  16. In the binary file importer, increasing the number of channels resulted in the program becoming stuck in a loop displaying an error.
  1. Using the command HCursorExists(0) (or any impossible cursor number) no longer generates a fatal script error and returns 0.
  2. When processing a Channel specification, if the first character was an illegal single channel, for example, "0,2..4", the error was not reported. Now the error is reported, but parsing continues and reports channels 2, 3 and 4, as previously.
  3. When a file is opened for sampling, MaxTime() returns the time into sampling and returns 0.0 before sampling starts. Previously, if a script wrote data before sampling started, MaxTime() returned the time of the last written item until sampling started, then returned the sample time.
09/2022 9.17 New
  1. There are improvements to the Talker time drift compensation.
  2. You can copy the contents of the Sample menu Talker Info dialog to the Clipboard or to the Log view.
  3. The File Importer tries harder to cope with files with time-stamped data that is out of order and can now import some files that it previously rejected (albeit by ignoring/patching events).
  4. The Micro4 maximum output sequencer step rate has been increased from 100 to 250 kHz.
  1. With a Micro4, when sampling both WaveMark (spike shape) data and Waveform channels, it was possible for Waveform channels to sample from the wrong channel.
  2. In the Sampling configuration, changing the channel used for a WaveMark (Spike shape) away from one also used as a Waveform channel could cause subsequent sampling to fail.
  3. During sampling, setting the Minimum step parameter non-zero in a Measurement process could cause no data to be found.
  4. Setting a very narrow colour band in a Colour scale (used for sonograms and cluster density plots) could cause a crash when the scale was used.
  5. Recording literal strings (such as a channel comment) that included a double quote mark (") omitted the " character.
  6. The integer literal value for the most negative integer (-9223372036854775808) was not accepted by the script compiler, though 0x8000000000000000 (which is the same value in hexadecimal) was accepted.
  7. In a Time view, the Next and Previous display trigger buttons were not disabled when a script disabled X axis changes (for example by allow% in the Toolbar() command).
  8. The Spline2D(const p[][]); script command variant to set positions generated a fatal script error if the positions were not distinct. It now returns -1, as documented.
  9. The Binary file importer could crash if the imported file was an unexpected length for the contained data, did not save individual channel units, did not process the FileConvert$() cmd$ options and did not open the associated Help file.
  10. The MC_Rack (*.mcd) data file importer could crash when opening a data file.
  11. Data file importers that have options to save and load configurations (such as the Text and Binary importers) could crash when reading a previously saved configuration.
  12. The Channel Process option to fill gaps in a waveform channel shifted the data by one point when filling a gap of a single point.
  13. The Neuralynx importer imported only the first channel in each folder.
04/2022 9.16 New
  1. Added support for the Digitimer D360R Programmable Signal Conditioner.
  2. Now attempts to open pre-revision 9 32-bit .smr files that exceed the 2 GB size limit (this allows access to some incorrectly-written files that previously would not open).
  3. The File menu Export As Data file command no longer aborts if any error is found. It now does the best it can and lists problems in the Log view.
  4. In a user-defined dialog it is now possible to include a vertical bar "|" in a prompt by inserting "||". A single vertical bar introduces a tooltip.
  5. The data Import system has been re-engineered to make the importers much smaller (typically reducing them from 2 MB to 1-200 kB). This make the first use of the File menu Import command much faster.
  6. The Text importer is much better at guessing what the column separator is when not comma, Tab or spaces. There is a new option to set the type separator in the configuration dialog.
  7. The Text importer has been reworked to make it cope with a wider range of files and is much less likely to detect a waveform channel as a TextMark due to a small number of non-numeric entries.
  8. Importers that read data as RealWave (e.g. Ponemah) used to scan the data before import to find the data range. This could take a lot of time with large files. We now find the range of the data while transferring it to the output file, which can greatly reduce the time to import huge files. We have also increased the size of the data buffers in an attempt to speed up data import. As an example, the time to import an 80 GB Ponemah 6 file has reduced from 5 hours to under 2.
  9. The Ponemah file importer has been extended to allow data to be filtered by Subject, Channel and time range. For example, you can set it to import all channels that contain ECG in the channel title from 10 hours into the file for 1 hour. With huge files with many channels this can reduce import times from hours to seconds when only sub-sets of the data are required. It may still take a while to locate the wanted data.
  10. Plexon importer: several improvements so it reads a wider range of input files and copes better with files with multiple sections.
  11. TDT importer only appends _1, _2, and so on to the channel titles when there are duplicates.
  12. TMS importer now supports the Poly5 file extension in addition to S00.
  13. XDF (LabStreamingLayer) importer handles RealMark and TextMark signals and waveforms with gaps.
  14. Importer for Allego (NeuroNexus) data files added.
  1. Video frame stepping with the Cursor 0 link could step to the same place twice, which wasted time.
  2. Spike2 would not open .smrx data files in which all strings (channel title, units, comment, file comments) were less than 3 characters long and where a string had been edited.
  3. In a script view, a user-defined Func or Proc with a space between the function name and the opening brace, for example func fred (), was omitted from the function list and did not get a pop-up call tip.
  4. Resizing the Script Bar List and Sample Bar List dialogs did not move the Help button.
  5. The documentation now describes how to associate specific talkers with multiple copies of Spike2 using the command line.
  6. ArrHist() did not allow an integer data array.
  7. When inspecting script values in the script debugger, you could change the value of items marked const.
  8. The PlayWaveCopy() script command did not work in single channel case with a one dimensional array argument.
  9. The error messages generated in the output sequencer message bar were badly formatted when an online sequence update failed due to size issues.
  10. Import of Ponemah files with multiple sections or with the first section of a channel not at time 0 placed the data at the wrong time.
  11. When importing data in Sweeps mode, the file offset of each sweep from the last could increase through the imported file.
  12. The ADI importer could crash when reading files with a large number of sections.
  13. The TMS importer rejected valid input files.
  14. The Igor importer could crash if it was used to import a PXP file holding complex numbers.
  15. The DataPac importer previously assumed all files held float data, so files holding integer data would not import, or read as rubbish.
  16. In the About Spike2 box, both the Micro2 and the Power3A could report that a firmware update was available when it was not.
10/2021 9.15 New
  1. The RasterSet() script command now accepts a zero sized data array to set a raster with no data.
  2. The ArrSort() script command now accepts zero length arrays (which does nothing) to save the user testing for zero length to avoid a script error before calling.
  3. Unmodified array arguments of the ArrStats(), ArrSum(), EditCopy(), PlayWaveCopy(), SampleWaveMark() script commands are now const.
  4. The Yield() script command can return the current allow% state and does not change the allow state if allow% is negative.
  5. The Len() script command can now report the number of elements in a multi-dimensional array.
  1. Level event channels sampled by a Micro1401-4 inverted the input data. There is a script in the Documents/Spike9/Scripts folder called InvertLev.s2s that you can use to invert Level event traces. Backup your files before running the script as it modifies the data.
  2. Passing a zero length sub-array to a function as array[1:0] was allowed, but using array[0:0] was not.
  3. The virtual channel expression Ec() that converts event counts to a waveform could misplace events that fell exactly on the boundary between two waveform points.
  4. EventToWaveform() accuracy improved to more closely match virtual channel event kernel functions.
  5. The script: var Spk[4][2]; Len(spk); failed. It now returns the length of the first dimension.
  6. When Measuring to an XY view or to a data channel with a curve fit measurement and the User check positions option set, the displayed fit line was for the previous step.
  7. In the Output sequencer, a label without white space after the colon was treated as an error, for example "Label:DAC 0,1".
  8. The script compiler gave an error if a resize statement was not terminated by a semicolon, so var y[2]; if 1 then resize y[3] endif was not allowed.
  9. The ArrConv(), ArrCWT(), ArrDot(), ArrFilt(), ArrHist(), ArrSpline() and SerialWrite() script commands did not accept const arrays.
  10. The View menu Multimedia files command failed to open .mp4 files if they held audio only (no video).
  11. In the Spike shape dialogs the visual effect when you clicked in the data area to start dragging the current spike to a template was too fast to be visible.
  12. Stepping backwards by a data point in a virtual channel (for example with the LastTime() script command or an active cursor search in data points mode) stepped by two data points.
  13. The Grid view default column titles skipped over the AA-AZ series when more than 26 columns were set. The sequence was A-Z, BA-BZ, CA-CZ and so on and should have been A-Z, AA-AZ, BA-BZ...
  14. If you wrote data to a non-waveform channel (for example with the ChanSave() script command), then overwrote it (which is allowed with wave-based channels but not event based channels), Spike2 attempted to write the data, resulting in a corrupted data channel.
  15. The script MLPut(500); Proc MLPut(real) MatlabPut("RealVal", real) end; set the Matlab variable RealVal as an integer, not as a floating point value. This was due to over-enthusiastic optimization by the script compiler.
06/2021 9.14 New
  1. Sampling supports Talker specification version 5, which has potentially more efficient data transfers.
  1. Some Font selection dialogs did not set the Font Style field to match the initial font style (Bold, Italic, Regular...).
  2. Event channel searches (as in Active cursors, Measurements to an XY view or Measurements to a data channel) in other than Data points or Expression mode could hang up.
  3. When restoring the Rate and Mean frequency drawing modes from a resource file, ridiculously small Time width values are rejected.
  4. The check box in the Tip of the Day dialog works reliably.
  5. The Add to online dialog marked all arbitrary waveforms except the one added as disabled.
  6. If when sampling data you set a Measurement to an XY view or Measurements to a data channel with a User entered value, this could cause Spike2 to crash.
  7. The context menu item to set a vertical cursor position did not trigger an active cursor search.
  8. The BinomialC(n%, k%) script command did not allow n% or k% to be 0.
  9. In the non-PCA Clustering dialogs (for example, Cluster on Measurements), the command to set the Z axis to be time could clear all filter codes (so coloured dots became black).
  10. Export of XY data to MATLAB exported multiple copies of the first XY point.
  11. The ChanKey(chan%, get%) script command generated an error if get% was not zero.
02/2021 9.13 Fixes
  1. Using the BReadSize(8,...) or BWriteSize(8,...) script commands with an integer array argument could cause Spike2 to crash.
  2. When used with a Micro3, Micro4, Power2 or Power3, the PlayWaveStatus$() script command pos% argument reported the position in bytes, not points. This error was introduced in Spike2 version 7. The Micro2 and Power1 were not affected.
  3. In a script, -1 >> 64 evaluated to 0; it should evaluate to -1.
  4. Sampling data or rerunning with a visible Level event channel in Line drawing mode could cause the mouse pointer to flicker.
  5. When sampling or rerunning, it was possible to cause Spike2 to hang up in Measure to Chan processing in Automatic mode with Update window every set to 0.0 when searching a Waveform channel with a slow sample rate.
  6. A Text dump of the Sampling configuration did not separate digital and DAC channels.
  7. The MinMax() script command used to search a WaveMark channel with n traces could start the search (n-1) times the trace width too soon.
  8. If you have both a CED 1902 and a Micro1401-4, the Conditioner setup dialog reported a spurious "illegal arguments" error after setting up the 1902.
  9. The Create New Buffer allowed you to create a WaveMark channel with fewer than the minimum (6) data points
  10. The SampleWaveMark() script command did not allow you to set multi-trace channels with an odd number of data points.
  11. If there was a disk problem when updating Talker licence information, Spike2 could crash.
  12. The EDF importer now supports asymmetrically-scaled integer data; previously some channels would have incorrect offsets.
  13. When editing text in a grid view cell, the Del key did not delete characters to the right of the text caret.
  14. You are no longer blocked from adding a talker channel to the sampling configuration because the limit on the number of 1401 channels has been reached.
  15. The SampleCalibrate() script command returned double the scale factor that it set when the 1401 was set for 10V input range.
  16. Active cursor Peak search with Amplitude set to 0 could detect two consecutive points with the same data value as a peak.
  17. Drawing a highly magnified Waveform channel could result in data off the bottom of the screen appearing on screen.
  18. Adding and deleting Memory channel Level event items did not cause the display to redraw to the end.
  19. In a Result view, the Raster Draw mode settings Sweeps, Sort and Symbols were not saved and restored when the view was saved to a file.
09/2020 9.12 New
  1. The EDF importer now recognises more types of BDF file. Previously, some specifications were unrecognised and the importer would revert to importing the data as though it were 16 bits long not 24, leading to garbage data.
  2. In a script, you can use DlgValue$() to set X Value fields as text, for example "Cursor(1)". Previously this displayed the position of cursor 1 as a number.
  3. The S2Video program has a new option to set frame time stamps.
  1. The Sample Bar dialog Add... button did not read the label and comment stored in the added file and would accept old-format .s2c files that cannot be used in modern versions of Spike2.
  2. The XY view y axis title was not restored when an XY file opened.
  3. In a Grid view, the F1 key did not open the on-line Help.
  4. Time views ended one pixel before the time of the very last item.
  5. If a script hid or iconised the application window, then used the Message() or DlgShow() commands, the resulting window was hidden and the script would hang up. These commands now make the application window visible.
  6. There was a visual glitch when drawing a level event channel during sampling in timed sampling mode each time sampling was enabled, when the current position was visible and not at the right-hand edge of the time window.
  7. In the output sequencer with a Micro4, the DELAY 0 instruction caused a very long delay (more than 4 billion steps); it should have caused no delay.
  8. In the Sampling Configuration dialog Channels tab when using a file with more than 32 channels, the New... Talker channel command failed when channels 1-29 were all in use and the 'special' channels had not been moved.
  9. The Special channels field of the Sampling Configuration Set maximum channels dialog was always set to 0 when the dialog opened.
  10. The documentation incorrectly listed the dialog expressions CXn as CnX (n = 0-9).
  11. Recording dialogs with X axis positions did not translate CXn to CursorX(n).
  12. The Memory buffer Import channel dialog did not disable OK and Apply if the Size/Level field was invalid.
  13. The FileList() script command did not work for type% set to 12 (XY files) and 17 (Grid files).
  14. The SampleConfig$(3) script command put the TextMark channel comment in the wrong column.
  15. The script compiler did not generate an error if you passed an array to a user-defined function where a non-array, non-reference argument was expected.
  16. The Mean in X and SD in X measurements in a Result view gave results in pixels, not x axis units.
  17. Recording Ctrl+A (or a click below the channel numbers) in Time and Result views generated code that did not work.
  18. If the Line thickness of axes was set to 1 pixel in the Edit menu Preferences Display tab, it was possible for axis scrolling to leave pixel dust behind.
  19. Overdrawn channels drew the background too often resulting in a corrupted display during sideways scroll when a grid was turned on or the top overdrawn channel had the background colour set to override the view colour.
  20. Using FiltApply(-1,...) before creating the temporary filter would crash Spike2.
  21. Changing some options in the S2Video Configuration could cause the video display to vanish.
06/2020 9.11 New
  1. The PlayWavePoints() script command can now report the maximum points in an area.
  2. You can use the ToolbarEnable() script command to detect if an Idle function is set for the toolbar and to count the number of enabled buttons.
  3. Improved the behaviour of slider controls in a user-defined dialog when set to integer mode and arrow keys used.
  1. XY Autoscale, Track with zoom in limit did not work correctly.
  2. An open and modified grid view could grab the input focus once every 5 minutes.
  3. The ChanFit() script command did not accept 1 argument.
  4. When cursors were more than 1 pixel wide, it was possible for them to leave 'pixel dust' when dragging items such as the sonogram key.
  5. Using the New Horizontal cursor button added a cursor to lowest displayed channel with a y axis, even when it was a group member (when the cursor should have been hidden), resulting in an inconsistent visible state. Now, we add the cursor to the head channel of the group.
  6. Recording sampling to a new 32-bit .smr file recorded as sampling to a 64-bit .smrx file unless more than 32 channels were set.
  7. Recording sampling to a new data file did not record negative debounce periods.
  8. Recording sampling a multi-trace WaveMark channel with non-sequential ports recorded as sequential ports.
  9. Recording sampling with Triggering set to Not triggered did not record; Use previous trigger mode was used.
  10. The MousePointer() script command did not return 0 when used to load a .cur or .ani cursor image file that did not exist.
  11. When recording the Marker filter dialog, the MarkTrace() script command set the wrong channel and appeared for non-WaveMark channels.
  12. When the LastTime() and NextTime() script commands were used with multi-trace WaveMark data and the fourth argument was a vector, the returned data was always the first trace, not the trace set by MarkTrace().
  13. The return value of the ToolbarEnable(n%) script command when button n% did not exist was 0, not -1 as documented.
  14. Recording creation of a grid view did not set the grid size.
  15. The DrawMode(), MinMax() and ChanValue() script commands ignored the edge% argument in Time view drawing modes 11 and 12 (the BPM modes).
  16. When the current view was a Grid, the Global Debug window displayed the window type as "Unknown".
  17. In the Graphical output sequencer, simultaneous Digital outputs and Digital Marker inputs were not sequenced correctly.
  18. Grid views were always saved to .s2gx files, even when the user asked for them not to be saved.
  19. When a Grid was loaded from a .s2gx file, the font used to edit grid cells was not updated.
  20. In the Graphical output sequencer, in the Section settings, changing the section comment did not enable the OK button to apply the change.
  21. In the Cursor Values and Cursor Regions dialogs, the first radio button (for C0 and C0-C1) had no effect.
02/2020 9.10 New
  1. Spike2 attempts to create any missing special folders on start up. This may help avoid privilege-related errors on systems used with multiple accounts. Warnings are sent to the log view on start up if missing folders could not be created.
  2. FilePath$(-6) added to report the Program Data file path.
  3. The Help menu About Spike2 dialog Copy button copies file path information for diagnostic purposes.
  4. The BIOPAC importer was modified to cope with old files with missing data at the end.
  5. FileList() supports a type% value of 17 for grid views.
  6. FileName$() can now report multi-media window file names.
  7. MMPosition() is extended to report the cursor 0 link state and if a commanded seek or run to operation has completed.
  8. The ChanProcessAdd() documentation now includes Debounce (PType%=12) and also describes the default argument values for all processes.
  1. If sampling channels used for 1401 input were not consecutive from 1, the Edit WaveMark on-line spike shape dialogs did not adjust any values or display non-triggered data.
  2. The display of background data in on-line spike shape dialogs could vanish if you changed channel.
  3. FileList() type% value of 6 no longer matches *.cfg; only *.cfgx is now matched.
  4. The output sequencer Format command converted the "-" in "WAVEGO code,-,OptLab" to a space, which did not compile.
  5. In the Draw mode dialog, recording RealMark data drawn as a waveform in Dots mode recorded the dot size incorrectly.
  6. If you used the PlayWaveCopy(), PlayWaveKey2$() or PlayWavePoints() script commands when no 1401 was open for sampling, the script stopped with "Interpreter error (call CED): -581". These now generate the correct error message.
  7. When two or more Spike sorting windows were open and resized differently, changing channels could lead to a muddled display.
  8. In an XY view, the ChanColourGet() script command did not get the background override (item% = 0) correctly.
  9. In the text editor, Alt+numeric keypad Up/Down no longer moves the current selection up and down one line; when you released Alt it replaced the moved lines with whatever character the Alt+keypad presses had composed. Use Alt+Up/Down keys to move selected lines.
  1. The ChanDecorate() script command state read back has been changed in an incompatible way; previously you could not read back the mode without setting it.
  2. If you created a sampling configuration from a script that included WaveMark data (spike shapes), and did not use the spike shape setup dialogs to generate templates and set trigger levels, the spike shape detection trigger levels were set to 0. This could result in unexpected capture of very small spikes, triggered by noise. The trigger levels are now set to half full scale in this situation.
  3. The keyboard short cut to format an output sequence has changed from Ctrl+F4 to Shift+F4. This leaves Ctrl+F4 free for the standard Windows function of Close window.
11/2019 9.09a New
  1. We eliminated the 'stickyness' when dragging cursor 0 when linked to a video window.
  1. Removed spurious warning about driver signing during installation on 64-bit Windows 10 version 1909 (19H2).
  1. The MMPosition() script command has changed the step by frame code from 3 to 4.
11/2019 9.09 New
  1. There is a new data file importer for ADInstrument Labchart files.
  2. The Selection$() script command now works in a grid view.
  1. Short reads of WaveMark data (Spike shapes) as a Waveform could fail to get data when the spike was the last item in an internal buffer; typically once every few hundred items.
  2. The graphical sequence editor allowed you to edit the DAC settings values when no DACs were enabled.
  1. When the multimedia window position is linked to Cursor 0, it now waits for screen updates when the user drags the cursor. With the MP4 file format, a multimedia seek operation appears to cancel any ongoing request, so repeated video position requests (such as when dragging the cursor) have no effect until the last request. This change may make cursor dragging feel 'sticky' as it is waiting for the video to catch up.
10/2019 9.08b New
  1. The Micro1401-4 is supported.
09/2019 9.08a Fixes
  1. The MemSetItem() script command generated incorrect results for a WaveMark channel with multiple traces when the code% argument was not an array.
09/2019 9.08 New
  1. The const script statement can initialize simple constants with variable expressions. Previously you could only initialize with values known at compile time.
  2. The TDT file importer can now import data from .sev files referenced by the .tsq file.
  3. The FileConvert$() script command for the Neuralynx file importer will now accept relative paths. Previously it required a full path.
  4. The WAVEGO sequencer command now supports a no flag option ('-') to allow the use of the optional label with no flags set.
  1. Changes to the Digital marker Record data checkbox in the graphical sequence editor were not detected during sampling, so could not be applied.
  2. Changing the text in a toolbar or interact bar caused the application to update the entire screen, which could make some scripted operations very slow.
  3. Recording changes to Titles or Units of RealMark channels from the Channel Information dialog generated incorrect code.
  4. Recording changes to the y axis Title or Units of an XY view generated incorrect code.
  5. Changing the number of sweeps in a result view with the Sweeps() script command did not mark the result document as modified, so it was not automatically saved.
  6. The LastTime() script command failed on a waveform channel with the Interpolate channel process applied.
  1. The ToolbarText() script command no longer forces a screen update; it now waits for Spike2 to have idle time.
08/2019 9.07 New
  1. We improved the speed of MMImage() and MMPosition() for AVI files.
  2. The MMImage() no longer causes the video window to flicker.
  3. The S64Fix button labels and text modified to make it clearer what a user must do to fix a file.
  4. We attempt to survive reading a resource file with a valid header but corrupted contents.
  1. The X Axis Dialog in Time of Day mode treated the Maxtime(), XLow(), XHigh() and Cursor(n) keywords as time offsets from the start of the file without adding on the start time of day. This could result in unexpected displays or the Draw button being disabled due to an impossible time range.
  2. The X Axis Dialog in Time of Day mode rounds the displayed Left and Right times to one more decimal place than the current x axis display uses. This could result in start and end times that exceeded the available time range, resulting in the Draw button being disabled.
  3. Waveforms did not display on some monitors if you repeatedly zoomed in until the gap between waveform samples was many million screen pixels.
  4. If you display many more waveform points than there are pixels on your screen, we draw the data in 'compressed' form to save time. If the pen width was set to be more than 1 pixel, horizontal sections of data displayed as 1 pixel wide rather than the requested pen width.
  5. In the binary importer, channel sample rates set on a channel by channel basis were ignored.
  6. In the binary importer, modifying individual channel information could cause other aspects of channel information to become corrupted.
  7. The WAVEGO output sequencer instruction has always allowed an optional label, but it was not documented.
  8. The EditCopy() script command to copy an array as a bitmap had a resource leak, causing Spike2 to slow down and eventually stop.
  9. (17/8/19) It was possible to crash the Power3 or 3A with a specific sampling configuration (16 waveform channels sampled at ~32 kHz in burst mode). Typical symptoms of this problem are: sampling not starting and the 1401 flashing the DAC 0 and 1 LEDs.
04/2019 9.06 New
  1. The s2video application now uses .mp4 files with improved frame timing and connects to a wider range of video sources. Spike2 multimedia support reads both .mp4 and .avi files.
  2. Added the mp4comp application for off-line compression of .mp4 video files.
  3. Extended the EditPaste() script command to paste a clipboard bitmap into an integer array.
  4. Extended the EditCopy() script command to copy real and integer arrays to the clipboard as bitmaps.
  5. New EditImageSave() script command to save clipboard bitmap images to a file.
  6. The Spline2D() script command can use colour scales to define mapping colours.
  7. The Spline2D() script command can generate a rectangular grid of interpolated values in addition to the integer bitmap-format output.
  8. Improvements to the Colour scale dialog to preview colour scales and record changes.
  9. The ChanKey() script command supports colour scale keys for use with background bitmaps generated by the Spline2D() command.
  10. New HCursorVisible() script command.
  11. If the 1401 becomes disconnected during sampling (cable removed or power loss), sampling stops immediately. Previously, there was a delay of several seconds while the connection timed out.
  1. In Spike2 version 9.00 to 9.05, the output sequencer CHAN Vn,n command returned data from the nth sampled channel, not channel n. Many sampling configurations use sequential channels starting at 1, which works as intended. However, if channel n was above a gap in the list of sampled channels the wrong channel was referenced. For example, if you skipped channel 1 and sampled channels 2 and 3, the CHAN V1,2 command read channel 3, the second sampled channel, not channel 2.
  2. The Spline2D() script command could generate incorrect output when the 2D image array was a sub-set of a larger array.
  3. Backwards searches during sampling for recent sampled events could find events at times before the start of the search time range.
02/2019 9.05 New
  1. Metafile waveform output of large numbers of points with a wide pen no longer uses filled rectangles as this caused several commonly-used programs to collapse when importing the images.
  2. The Overdraw 3D dialog now remembers the state of the Automatic display update check box on a per file basis.
  3. We now allow script functions to have more than 20 arguments.
  4. The Bionic and Ripple importers were revised to cope with importing huge (more than 500 GB) files. The importers now run at about the same speed as copying the files (15 minutes for 500 GB rather than a day).
  5. A Talker licence system is implemented. This allows us to update paid-for Talkers from our web site, but requires users to apply a licence key to their copy of Spike2. Talker licences are tied to the Spike2 serial number.
  1. The channel order of Result view Raster channels was not restored from sampling configurations.
  2. Drawing a histogram that hugely exceeds the y range of the display window could crash Spike2 in Windows 10.
09/2018 9.04b Fixes
  1. If you opened the Channel Process dialog, did not change channel and adjusted a value using a spinner control, the value would be treated as if it were zero.
  2. In the Channel Process dialog, the minimum time change for an event-based channel was 0 and not the time resolution of the data file.
  3. If you used the Analysis menu->Memory Buffer->Create Channel Copy command on a TextMark channel that had a time shift Channel Process, the result could be incorrect and might cause Spike2 to hang up.
09/2018 9.04a New
  1. The File menu Import command now has an Options... sub-command to set the minimum number of channels in an imported file.
  1. If an imported file has 32 or fewer channels, the number of channels in the output file was limited to 32, regardless of the FileConvert$() minCh% argument.
  2. Importing certain Multichannel Systems data files could crash Spike2.
  3. The Edit menu Preferences dialog Display tab option to disable high DPI awareness now works correctly.
  1. In the Sampling Configuration dialog Automation tab, the File size limit is now shown in MB (Megabytes) rather than in kB (kilobytes).
08/2018 9.04 New
  1. FileTime$(), FileDate$() and FileTimeDate() can now be used with views other than Time views.
  2. The Sampling menu has new options to handle Talker Licensing.
  3. Channel selection changes in a Result view are passed on to dialog channel lists.
  4. The script FileName$() command is extended to make the most common file name manipulations easy.
  5. The Channel Process dialog can now clear processes from selected channels. The ChanProcessClear() script command has been extended to allow you to clear channel processes from selected and visible channels.
  6. There is a new event Frequency histogram analysis. This is similar to the Interval Histogram, but it places data in bins based on frequency, not intervals. The script language equivalent of this command is SetFHst().
  7. We allow you to use the Sample menu Change Output Sequence... command when a data file is ready to sample, but sampling has not started.
  8. The time recorded for TextMark data read from a serial line is now the most recent data acquisition time, rather than the data acquisition time for which all data has been received. The difference is typically a few milliseconds.
  9. The Intan importer now imports .rhd and .rhs file formats. It also now extracts digital channel information from .int files.
  10. The two DSI importers were merged into a single importer. There were minor improvements when reading older files.
  11. The C3D importer now imports event markers stored in the file header.
  1. The Measure to XY views dialog Points field could not be set to any value other than 0.
  2. Drawing a TextMark channel with 2000 or more items could hang Spike (requiring Ctrl+Break) to continue.
  3. The MemImport() script command and interactive dialog did not include end time in imported range, contrary to the documentation.
  4. The ChanProcessCopy() script command is documented as clearing channel processes if the source channel is 0. It did not do this before Spike2 version 9.04.
  5. When a data file was ready to sample, but sampling had not started, using the Current command in the sequence editor did not change the current sequence and could remove the buttons from the Sequencer control panel.
  6. In the Automation page of the Sampling Configuration dialog, if the Stop at time flag was set, sampling could stop too early.
  7. The file size limits set in the Automation page of the Sampling Configuration dialog were not being saved.
  8. The Plexon importer could mis-align data in files with multiple sections.
  9. The C3D importer could mis-scale data channel.
  10. The script editor Toggle Comments command no longer includes line after selected lines (which is not usually what you want).
  11. The minCh% argument to the FileConvert$() script command was ignored.
  1. Corrected documentation for PlayWaveCopy(); the copy operation must fit in the current play wave size, even when it is smaller than the area size.
  2. We have limited the maximum number of bins in a result view to 100,000,000 (matching the size limit for script language arrays). The previous limit was more than 2,000,000,000 bins, which worked in a 64-bit build of Spike2, but made the program too slow and unresponsive to be useful.
05/2018 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/2018 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/2018 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/2017 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/2017 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/2017 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: 00972132

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: 85235190

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