Recent technical history of Spike2 version 5 for Windows


Freely down-loadable for version 5 users.

Date Version Summary
04/09 5.21 New
  1. The signal conditioner support has been extended to support up to 80 waveform channels.
Fixes
  1. The ScriptRun() script command accepted 0 or 1 arguments, it now accepts 1 or 2, as documented.
  2. Assigning a double with the most negative possible integer value to an integer gave an error.
  3. Virtual channels with a channel process applied or with base channels with a channel process did not invalidate correctly, leading to drawing artefacts online.
  4. If the fitting dialog was open, adding keyboard or TextMark markers reset the fitting dialog parameters.
  5. In the graphical sequencer, Single pulse amplitude change on repeat DAC pulses did not generate output changes if the Change field was negative.
  6. Typing the Esc key in another application could cause a Spike2 script to stop.
  7. Within thresholds and Outside thresholds searches did not work on event channels drawn as rate or frequency.
  8. NaN (not a number) and INF (infinity) values in RealWave channels could cause some graphics cards with acceleration enabled to generate corrupted images or behave erratically.
  9. The FileSaveAs() script command did not check for illegal or non-existent paths, resulting in a message box with an error instead of returning a negative error code.
  10. In the graphical editor, ramping a DAC from any value to the DAC full scale value did not work.
  11. Adding a virtual channel caused an unnecessary screen update.
05/08 5.20 New
  1. 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.
Fixes
  1. 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.
  2. 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.
  3. If you stopped sampling with writing to disk disabled on one or more channels, it was possible to generate a data file with a format error. Specifically, the last data block of a channel could hold a pointer to a following block that did not exist. The SonFix utility will repair such files and there is no data loss. A file with this error may behave strangely in Spike2 until repaired.
  4. The ViewTrigger(-5) command did not return the cursor 0 action.
  5. The Sampling menu Offline waveform output and the PlayOffline() script commands did not work when the output device was a Power1401 mk II.
  6. If a script had more than 32767 lines, you could set break points, but the stepping marker did not appear, nor did the script scroll to the correct line.
  7. You could crash Spike2 by renumbering horizontal cursors if the horizontal cursors didn't have consecutive numbers starting with 1.
  8. Deleting the topmost channel of a group of overdrawn channels with locked Y axes and a horizontal cursor could crash Spike2.
  9. The Print(), Print$() and PrintLog() script commands could produce garbled output if they printed more that 255 characters.
09/07 5.19 New
  1. You can now sample with the Power1401 mk II interface.
Fixes
  1. In the graphical sequencer, the commands that wait for a channel to be over/below/outside/inside limits could scale the limits incorrectly.
  2. Changing the waveform channel in the FIR filter dialog did not update the frequency axis in the response view.
  3. When the text editor opened a file, and the 32767th character in the file was CR (Carriage Return) and the next character was LF (Line Feed), it changed the CR LF character pair to CR CR.
07/07 5.18 New
  1. 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".
  2. 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.
  3. Biopac importer: Now handles version 45 format files.
  4. 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.
  5. Axon importer: This now accepts files created with the version 2 library used in PClamp 10.
  6. CED CFS importer: Now correctly scales files holding data channels stored as double precision floating point.
Fixes
  1. If you used Measure to XY view with All channels use same X, and then Copy As Text, it was possible for the x axis value to be omitted from the output if a data point for the first channel was not visible.
  2. 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.
  3. 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.
03/07 5.17 New
  1. The memory buffer Add Item and Delete Item dialog boxes do a better job of guessing what to offer for the time field when you open the dialogs.
Fixes
  1. Histograms with locked and offset y axes and more than 1 bin per pixel now draw correctly.
  2. The YAxisLock() script command repainted the window. It now just invalidates it.
  3. It was possible to generate a spurious "error reading data" when creating a virtual channel from an existing channel with a script.
  4. It was possible to crash Spike2 by taking the waveform correlation of WaveMark channels or waveform channels with gaps.
  5. Virtual channels did not always redraw when a channel that they depended on was created or deleted.
  6. Virtual channels that used the RM() command did not invalidate correctly when the RealMark channel changed.
  7. Recording of vertical cursor movement in a result view used positions in place of bin numbers.
  8. Recording of horizontal cursor movement set the wrong channel number.
  9. Backward searches in channels with a marker filter sometimes failed. The most common symptom was RealMark data being drawn incorrectly.
  10. 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 did not always update for the next play of the area.
  11. Changing the trigger channel of a Raster display in a time view did not cause a screen update.
  12. You can now set the sampling time base for a Micro1401 mk II to less than 2 microseconds.
  13. 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.
  14. You can now read a sampling configuration from a data file that has a time base that is not 1 microsecond. Previously this imported as if the timebase was 1 microsecond.
  15. Using a script to close a cursor regions or cursor values dialog could crash Spike2.
09/06 5.16 New
  1. Uses standard system mouse pointers wherever possible. This allows the user to choose their preferred mouse pointers.
  2. You can now read waveform average result views saved by Spike2 version 6 that use the new item counts per bin option. The saved item counts are ignored in version 5.
Fixes
  1. You could crash an XY view by changing a channel from extendable to a fixed size, then adding more data.
  2. In the Draw mode dialog, if you clicked the Draw button before changing a Level channel edge, the default level edges were applied.
  3. The File menu->Resources->Apply Resource file command now deletes all virtual channels before applying the resource file. Previously, it was possible to get multiple copies of virtual channels, all with the same channel number.
  4. You could crash Spike2 by typing a bad channel specification string into the draw mode dialog.
  5. 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.
  6. The ChanSave() script command now records correctly.
  7. You can now use VirtualChan(chan%, 0) to test if a channel is a virtual channel. Previously this stopped the script with an error if the channel was not a virtual channel.
  8. When averaging waveforms with gaps in mean display mode, sections of the average that corresponded to truncated sweeps due to gaps were weighted too highly.
  9. You can now use Alt+Mouse drag to measure a time width with the x axis in time of day mode. Previously the displayed time difference had the file start time added to it.
Changes
  1. The waveform average now aligns data to the nearest point to the trigger, rather than to the next point after the trigger. This reduces the average misalignment of trigger and data from 0.5 of a sample to 0.25 of a sample. The Edit menu Preferences Compatibility page has an option to use the old behaviour.
05/06 5.15 New
  1. Active cursors can now search backwards in data point mode on virtual channels.
  2. Cubic splined waveforms that are clipped in the y directions now export to enhanced metafiles as curves. Previously they were exported as lines.
  3. Literal strings in a script are no longer limited to 255 characters.
  4. The script command Help(0, fileName$) is now implemented as documented. Also, Help(0) now closes any open help file.
  5. In exponential fits, you can now set time constant ranges that cross zero. Previously, they had to be entirely positive or entirely negative.
  6. If you create n-trodes from multiple waveform channels with different channel scale factors, Spike2 now attempts to preserve the channel scales. You can disable this (to match the old behaviour) in the Edit menu Preferences Compatibility dialog. Previously, all channels were assumed to have the same scaling as the first selected channel.
  7. The signal conditioner support for the 1902 has been extended to support the new features in the 1902 Mk IV. The CondXXXX() family of commands has also been extended.
  8. The DSI file importer now creates a text marker channel from DSI log files.
  9. The EDF importer now handles the EDF+ file format for both continuous and episodic data.
  10. The Plexon DDT importer has been extended to correctly label channels from files that have channels switched off.
  11. The MC_Rack WaveMark channel name now includes the channel sorter ID and the amplifier ID.
  12. There is a preliminary version of a Grass-Telefactor Polyview binary format importer.
  13. The specification of the Listener (a separate program that registers itself with Spike2 and which is informed of data sampling events) is included on the installation disk, together with example code. This is the same specification that we used to write the S2Video application.
  14. The SON filing system has changed version to allow Spike2 version 5 to read files with up to 400 channels generated by the file import system and by the next major release of Spike2. Spike2 version 5 will create files with up to 256 channels.
Fixes
  1. ChanFit() and related script commands could crash if you requested a channel that did not exist.
  2. The SSClassify(1, ...) script command did not trigger a fast classify pass through the data.
  3. Selecting a rectangle in for zoom in/out or for measurements could leave a mess behind on the screen if the selection caused the window to scroll.
  4. You can now type numbers in to the "%" and "Steps" field of the Clustering dialog, previously you could only use the spin boxes. As number keys are also used to set the class of events in the currently selected ellipse, the selection marks are now greyed when the number keys are not available for setting the event classes.
  5. The LastTime() script command did not work on a virtual channel that depended only on event channels.
  6. The graphical sequencer no longer generates keys and buttons for unused segments.
  7. The graphical sequencer sets the limits for "Delay" and "Wait until time" correctly and displays times better.
  8. The graphical sequencer disables the "then" field for the main control track more appropriately.
  9. If you set the line width for axes more than 1 pixel in size, the XY view key window border (set by the axis thickness) no longer messes up the display when you drag the key.
  10. XY view display optimise commands no longer include invisible channels when calculating the display range.
  11. The graphical sequence editor could display and generate incorrect digital outputs when the initial state of a digital line was set high.
  12. The graphical sequence editor no longer treats the Enter key as a request to close the dialog when editing a numeric field.
  13. You can now clear flags with ExportChanList(0).
  14. ExportRectFormat() no longer overwrites the string delimiter if you do not set an item separator.
  15. The File menu "Export As Spreadsheet text" and the Edit menu "Copy for Spreadsheet output" could have blank cells that should have contained data.
  16. The title used when printing spike templates displayed the channel number - 1.
  17. When the FileConvert$() script command was used in automatic data type recognition mode, it could fail due to a problem in the ASCII (text file) importer.
  18. The Process() command in gated mode now records correctly.
  19. It was possible to crash Spike2 with the Close All command on a time view (Ctrl+File menu Close) if the active cursors were set to process to a channel.
  20. In the clustering dialogs, the commands to view along the X, Y and Z axes did not set the rotation slider positions.
  21. If you used the script language IIR filters to filter an array, you would get incorrect results for Chebyshev type 2 filters of orders 2 and 3.
Changes
  1. The IIRLp(), IIRHp(), IIRBp() and IIRBs() filter commands no longer allow you to omit the filter order% argument. The preferred method to set backwards filtering is to set the flags% argument to 1, not -1 (but -1 is still accepted). These changes allow Spike2 version 6 to enhance these commands without breaking old scripts.
01/06 5.14 New
  1. The importer for Axon files now recognises TextMark data channels.
  2. The importer for Plexon files now recognises library version 105 files and has been extended to import RealMark and Keyboard channels.
  3. The BIOPAC file importer now recognises version 43 files.
  4. The Alpha Omega file importer now imports .MAP files.
  5. There is a new file importer for .HLR version 3 and 4 files.
Fixes
  1. The XY view did not always respect view and application background colours.
  2. The Marker Filter dialog scroller in the list of codes did not track the selected item when you changed layer. We have changed the behaviour so that changing layer does not change the list position as this feels more natural and seems to be more useful.
  3. In the interactive curve fitting, the initial coefficient guess now works correctly when the start of data is different from the reference point.
  4. In the cluster dialogs, the accelerator keys 0 to 9 and Ctrl+Shift+0 to 9 now work, as does the "Clear all visible codes" menu item.
  5. Forced axis spacing with an inverted y axis (axis values decrease as you go up) now works.
  6. The Rm() command in a virtual channel expression was very inefficient if there were a large number of RealMark data points. It is now much faster.
  7. It was possible to crash Spike2 if you opened an XY view file that had an associated resource file that was set for sorted data when the XY file held non-sorted data.
  8. Using the debugger to step to a line near the end of a very large script could crash Spike2. The script that hit this had more than 18,000 lines and compiled to more than 111,000 instructions.
  9. DlgShow() did not detect use of an integer variable or array with a real field. Previously no data was transferred. Now this is reported as an error.
  10. DlgShow() did not deal correctly with a real array used with an integer field. This now works.
  11. Cursor measurements on WaveMark channels drawn as mean frequency, instantaneous frequency or rate are no longer forced to treat the channel as if it were drawn as dots.
  12. It was possible to crash Spike2 by deleting the data channel that the Principal Component Analysis dialog was using.
09/05 5.13 New
  1. Scripts now run a little faster than version 5.12. Up to 10% improvement is possible.
  2. The FileSaveAs() script command now accepts a type% argument of -2 for result and XY views This allows the user to choose the file type to save as.
  3. The output sequencer table commands are now supported by the 1401plus.
  4. There is a new FitData() command that mirrors the ChanFit() command.
  5. You can now fit a sinusoid to your data interactively and with the ChanFit() and FitData() commands.
  6. In the Marker Filter dialog you can now choose the display format for marker codes. Also, clicking on a marker mask now scrolls the list to the mask element where you clicked.
  7. The DSI file importer now handles data with multiple parameter files.
Fixes
  1. It was possible to crash Spike2 by setting up a user dialog with a change function, then setting field values from within the change function.
  2. In a user dialog, you could not set the dialog focus with DlgEnable() from a change or button press function.
  3. Resizing channel areas whilst the time view scrolls (e.g. during sampling) no longer causes a mess on the screen.
  4. In an XY view, if the FileSaveAs() script command opened a File Save dialog using -1 as the type% argument, the user could change the file type, and this changed the file extension used, but it did not change the file format. Now, the file type cannot be changed.
  5. If you deleted XY view items in a channel that was sorted by X or by Y, the sort order was not updated correctly.
  6. The graphical sequence editor no longer lets you specify pulses of zero length.
  7. The BurstRevise() script command now pays attention to any marker filter that is set for a channel.
  8. The ChanSave() script command would only accept an integer as the argument for a source channel. It now accepts a channel specification, as documented.
  9. If you had an event at the maximum possible time in a file, it was possible to hang up Spike2 in some drawing modes.
  10. Script recording of MeasureToXY() and MeasureToChan() in points mode has been improved.
  11. If a sampling configuration creates duplicated views, the duplicate views no longer duplicate horizontal cursors from the original view.
  12. You can no longer crash Spike2 by using the Edit WaveMark on a WaveMark channel with less that 6 data points per trace.
  13. If you read a sampling configuration from a data file, ADC channels were only accepted if they had a port number of 0-15 and ports 8-15 were mapped to 0-7.
  14. If you used the ChanWriteWave() script command to replace data at the start of a channel, then created or deleted a different channel, it was sometimes possible to read the old waveform data.
  15. If you set a waveform for output using the Play Waveform feature of the Sampling Configuration or with the PlayWaveAdd() script command, if the number of channels and points were both odd, an extra point was output.
  16. If you used the Power spectrum command on a channel that had the down-sample channel process attached, it was possible to get a spurious error if the data area selected for analysis was an exact multiple of the FFT block size.
  17. XYSetChan() did not work correctly when used with multiple channels. The return value was incorrectly documented when used with multiple channels.
  18. In the spike shape dialogs, the load and save template option did not list templates for duplicate channels.
  19. The XYInRect() and XYInCircle() commands did not work correctly if the rectangle or circle was less than 1 pixel in size on the screen.
  20. It was possible to crash Spike2 by changing the channel of a dragged horizontal channel from a script within a toolbar or dialog idle routine.
  21. The FileSaveAs() script command always queried file overwrite if the command caused the File Save dialog to open, regardless of the yes% argument.
  22. The number of bytes displayed in the Output Waveform dialog could be wrong by 2 and the byte sizes displayed in the Sampling configuration dialog Play Waveform tab could be wrong by 1. This was a cosmetic problem; Spike2 used the correct sizes internally.
Changes
  1. The XYInRect() script command treats inside a rectangle as being from the low co-ordinate up to, but not including, the high co-ordinate. Previously, the high co-ordinate was included.
05/05 5.12 New
  1. We have eliminated much of the flicker that happens with frequently updated windows, for example during sampling. The new drawing method may be slower with your hardware; you can disable flicker-free drawing in the Edit Preferences Compatibility page.
  2. There is a new Edit Preferences Scheduler page that lets you control how Spike2 allocates time for background processing. We have stopped Spike2 being a CPU time hog when sampling.
  3. The maximum allowed number of duplicates of a channel has been increased from 26 to 52. The first 26 duplicates display channel numbers using a to z. The second 26 duplicates use A to Z.
  4. The maximum size of a compiled script has been increased by a factor of 16.
  5. The new YieldSystem() command lets you sleep the Spike2 user thread from a script.
  6. There is a new PlayOffline() script command to match the Sample menu Play Offline dialog.
  7. Copy Spreadsheet in a time view now allows you to set any time interval; previously it was constrained to integer multiples of the file time resolution.
  8. The ChanList()and the new Chan$() script functions support symbolic channel names (for example, m1a).
  9. When sampling with automatic file naming, Spike2 now remembers the number of the last file used, which saves time when searching for a free name in a large number of files. Spike2 now displays a message box if it runs out of file names.
  10. There were several dialogs that delayed numeric error checking until you moved the input focus to another item. We now do the error checking as you type and reject rubbish characters.
  11. The graphical sequence editor has additional explanations of error conditions. Also, items that can only be dropped on the control track now always show the insertion point on the control track regardless of the mouse vertical position.
  12. The graphical sequence editor now allows you to copy the current sequence section to a range of sections to make it easier to prepare a list of similar stimuli.
  13. When you drop an arbitrary waveform in the graphical sequence editor, if there are waveforms defined in the sampling configuration you are prompted to choose one. You can double-click the arbitrary waveform icon on the control track to change the associated waveform.
  14. You can now undo colour changes made to views and channels. You cannot undo colour palette or application colour changes as these are application wide and the undo system is based on changes to views.
  15. The cursor values dialog and the ChanValue() script command now return interpolated values (based on the drawing mode) for waveform channels in a time view. You can disable this behaviour with the Edit Preferences Compatibility page.
  16. We have improved the algorithm that sets the number of decimal places used to represent time when exporting data as text.
  17. DlgEnable() now allows you to set which dialog item has the input focus.
  18. You can now use cursor up/down to change the value in a user dialog field that has a spin control.
  19. The text file importer has been revised so it can import a wider range of input formats.
  20. The fitting dialog now displays error messages if the input fields are illegal.
Fixes
  1. Time and result view data drawn in waveform, skyline or cubic spline mode with thick lines did not always draw perfectly when scrolled.
  2. When the Set Marker codes dialog was opened with a right-click, it did not automatically select the clicked channel.
  3. The Edit WaveMark dialog always started with the first marker code highlighted, regardless of the layer set for use in the configuration. It now highlights the marker code that will be used.
  4. You could crash Spike2 if you closed a data file with both the Edit WaveMark and the WaveMark clustering dialogs open.
  5. KMeans and Normal Mixtures dialogs now activate the clustering dialog when they close.
  6. The KMeans dialog now reports the user weighting values correctly.
  7. Recording the Virtual channel dialog omitted a closing bracket.
  8. The View menu Standard Display command cleared the selected set of channels, but did not tell the channel numbers, so the channels still looked as if they were selected.
  9. The "Add to online" button in the Output Waveform dialog is now disabled if the selected waveform is larger than the 32 MB limit. Previously the maximum size limit was not enforced until you tried to load the waveform into the 1401 for sampling. If your 1401 does not have enough memory to load the waveform, you will still get a message at sample time.
  10. The cursor values, cursor regions and spike shape dialogs snap to sizes that are multiple of a fixed column width. If such a size change caused the entire dialog to be off-screen, it was difficult to restore it. Now, when you ask to display these dialogs they centre themselves if they are entirely off the screen.
  11. The graphical sequence editor now correctly generates: branch on response with timeout, branch on time comparisons and variable/time arithmetic. All were using sequencer ticks instead of file ticks in value conversion.
  12. The graphical sequence editor can now handle overlapped arbitrary outputs.
  13. If you opened the Fitting dialog from the menu bar, and channel 1 did not exist or was unsuitable, the fitting dialog did not operate correctly until you changed the channel selector.
  14. Copy Spreadsheet output for event channels drawn in dots or lines mode no longer uses 6 decimal places to display integers.
  15. In the New WaveMark dialog, when the data source is a waveform channel, the template width is now restored from the saved settings. Previously it was limited to a maximum of 28 points.
  16. The MeasureToChan() script command now allows both types 2 and 3 for event channels.
  17. The SetWaveCrl() script command set a limit of 30000 bins, but the interactive version did not. The number of bins is now limited by the length of the data file or to 10000000, whichever is smaller.
  18. The SetWaveCrlDC() script command was not recorded correctly.
  19. Undo of a y axis range change did not work in version 5.11.
  20. In versions 5.10 and 5.11 in the PCA cluster dialog, you could not right-click and place an ellipse.
  21. If you set a channel background colour with a grid enabled, the grid was not visible.
  22. If you superimpose channels with individual background colours, only the background colour for the first channel in a group is used. Previously, all background colours were drawn, which would obscure data.
  23. SampleMode(-1) and SampleMode(-2) did not convert the for and every values from minutes to seconds when they were set as minutes in the dialog.
  24. The PlayWaveLink$() script command always returned an empty string.
  25. The ToolbarEnable() script command now works on buttons with no label.
  26. In a script, if you open a user-defined dialog from inside the change, idle or button-pressed function of a user dialog, the original dialog is disabled while the new dialog is in use.
  27. It was possible to crash Spike2 if you set a change function for a user-defined dialog and the change function caused a script error.
  28. If you created a user-defined dialog within the idle routine or change function of a user-defined dialog, it was possible for the dialogs to become muddled, which could crash Spike2.
  29. The script compiler now flags an error if you define a func or a proc with an array argument and give an array size, for example func fred(myArr[23]) is illegal. Previously, this error was not detected, leading to bad code generation.
Changes
  1. Spike2 is now much friendlier to other applications when it is sampling and when idling with a script running. If you have an on-line script that depends on the previous behaviour you may need to change the settings in the Edit Preferences Scheduler. To emulate (not quite exactly) the previous settings, set all the fields to their minimum values (1, 0, 0). This is not recommended.
  2. If you used the Analysis menu Calibration command or ChanCalibrate() script command in "Set scale from mean of time range" or "Square wave amplitude (Size) only" modes, this preserved the channel offset, which led to unexpected results when the offset was not zero. These modes now preserve the user y axis zero, which will change the channel offset if the original channel offset was not zero. You will see no change in behaviour if the channel offset is zero.
  3. We now allow 52 channel duplicates (see above). We don't think that this will cause any problems with existing scripts.
  4. If you use automatic file naming to sample a sequence of files (with a non-zero repeat count), we have speeded up the search for an unused file name by starting the search from the last used number plus 1. This will affect you if you used a separate application to move sampled files elsewhere and relied on Spike2 re-using the old names as they came free.
  5. The ChanValue() script command when used on a waveform-based channel in a time view now pays attention to the drawing mode. To get the old value set the mode% argument to 1 or disable the new behaviour in the Edit Preferences Compatibility page.
02/05 5.11 Fixes
  1. In revision 5.10, if you sampled with duplicated time windows, the data file was deleted when you closed the last data window.
  2. The SampleUsPerTime() script command did not allow the same range of microseconds as the interactive dialog.
  3. A saved sampling configuration (.s2c) file was sometimes larger than it needed to be. If you suspect that you have such a file, load it and save it to a new file.
  4. If you scrolled a displayed data window with a grid displayed, thick grid lines could be drawn one pixel too thin.
  5. Data drawn in SkyLine mode with thick lines now has neater-looking corners. It also draws better when scrolled sideways in a time view.
  6. Spike monitor time range and spike count fields could be adjusted with the spinners but could not be edited.
  7. If you change a line thickness in the Edit menu Preferences and click OK, the new settings are applied immediately.
Changes
  1. The colours used for buttons in the Spike Monitor have been changed as yellow was difficult to see with some Windows XP colour schemes.
01/05 5.10 New
  1. The new spike monitor window displays all WaveMark (spike shape) channels in a data file.
  2. You can set the background colour of the spike shape and spike monitoring windows independently of the background colour of time views.
  3. The New WaveMark dialog preserves the cursor 0 position when you create a New Channel in fast mode.
  4. The Edit WaveMark dialog preserves the cursor 0 position (where possible) when you reclassify channels in fast mode.
  5. Cursor measurements and ChanValue() return value for RealMark data drawn as a waveform now linearly interpolate between data values.
  6. Spike2 now adjusts the foreground colours of items if they are the same as the background colour to keep them visible. This is particularly useful in the spike shape dialogs.
  7. Added buttons for a symmetric y axis range to the y axis dialog.
  8. In a script view, the F4 key compiles the script and the F5 key runs it. In an output sequence view, the F4 key checks the sequence syntax.
  9. The channel number display area in time and result views now sizes itself so that all channel numbers are visible.
  10. Channel numbers for virtual channels and memory channels now display as symbolic names (for example v1, v2, m1, m2 rather than 701, 702, 401, 402). Duplicate channels already display as symbolic names, for example the first duplicate of channel 20 displays as 20a. Duplicates of virtual and memory channels display as v1a, m2c, for example.
  11. In dialogs and in channel specifications given to script commands as strings, you can now use symbolic names as well as channel numbers. In addition, we now accept 8a..8j, or 8..8c to mean a list of the duplicates of channel 8.
  12. The virtual channel dialog now accepts symbolic names for channels, for example you can use Ch(m1) in place of Ch(401).
  13. The DupChan() script command now accepts -2 as the second argument to get the duplicate number that corresponds to a channel.
  14. In the script editor, if you use the F1 key after typing the opening bracket of a built-in function, this opens the help page for the function. Previously you had to type the opening bracket, then move the text caret back into the function name for this to work.
  15. The new BRWEndian() script command lets you read and write binary files in big-endian as well as the PC standard little-endian format.
  16. If Spike2 is sampling or running a script, it will attempt to stop the system suspending itself due to lack of user activity. It now commits any sampling data file if there is a battery low condition or if it receives a system powering down now signal.
  17. If Spike2 is the active application and it is sampling or running a script, it attempts to stop screen savers from starting.
Fixes
  1. Time and result view data drawn in waveform, skyline or cubic spline mode with thick lines did not always draw perfectly when scrolled.
  2. When the Set Marker codes dialog was opened with a right-click, it did not automatically select the clicked channel.
  3. The Edit WaveMark dialog always started with the first marker code highlighted, regardless of the layer set for use in the configuration. It now highlights the marker code that will be used.
  4. You could crash Spike2 if you closed a data file with both the Edit WaveMark and the WaveMark clustering dialogs open.
  5. KMeans and Normal Mixtures dialogs now activate the clustering dialog when they close.
  6. The KMeans dialog now reports the user weighting values correctly.
  7. Recording the Virtual channel dialog omitted a closing bracket.
  8. The View menu Standard Display command cleared the selected set of channels, but did not tell the channel numbers, so the channels still looked as if they were selected.
  9. The "Add to online" button in the Output Waveform dialog is now disabled if the selected waveform is larger than the 32 MB limit. Previously the maximum size limit was not enforced until you tried to load the waveform into the 1401 for sampling. If your 1401 does not have enough memory to load the waveform, you will still get a message at sample time.
  10. The cursor values, cursor regions and spike shape dialogs snap to sizes that are multiple of a fixed column width. If such a size change caused the entire dialog to be off-screen, it was difficult to restore it. Now, when you ask to display these dialogs they centre themselves if they are entirely off the screen.
  11. The graphical sequence editor now correctly generates: branch on response with timeout, branch on time comparisons and variable/time arithmetic. All were using sequencer ticks instead of file ticks in value conversion.
  12. The graphical sequence editor can now handle overlapped arbitrary outputs.
  13. If you opened the Fitting dialog from the menu bar, and channel 1 did not exist or was unsuitable, the fitting dialog did not operate correctly until you changed the channel selector.
  14. Copy Spreadsheet output for event channels drawn in dots or lines mode no longer uses 6 decimal places to display integers.
  15. In the New WaveMark dialog, when the data source is a waveform channel, the template width is now restored from the saved settings. Previously it was limited to a maximum of 28 points.
  16. The MeasureToChan() script command now allows both types 2 and 3 for event channels.
  17. The SetWaveCrl() script command set a limit of 30000 bins, but the interactive version did not. The number of bins is now limited by the length of the data file or to 10000000, whichever is smaller.
  18. The SetWaveCrlDC() script command was not recorded correctly.
  19. Undo of a y axis range change did not work in version 5.11.
  20. In versions 5.10 and 5.11 in the PCA cluster dialog, you could not right-click and place an ellipse.
  21. If you set a channel background colour with a grid enabled, the grid was not visible.
  22. If you superimpose channels with individual background colours, only the background colour for the first channel in a group is used. Previously, all background colours were drawn, which would obscure data.
  23. SampleMode(-1) and SampleMode(-2) did not convert the for and every values from minutes to seconds when they were set as minutes in the dialog.
  24. The PlayWaveLink$() script command always returned an empty string.
  25. The ToolbarEnable() script command now works on buttons with no label.
  26. In a script, if you open a user-defined dialog from inside the change, idle or button-pressed function of a user dialog, the original dialog is disabled while the new dialog is in use.
  27. It was possible to crash Spike2 if you set a change function for a user-defined dialog and the change function caused a script error.
  28. If you created a user-defined dialog within the idle routine or change function of a user-defined dialog, it was possible for the dialogs to become muddled, which could crash Spike2.
  29. The script compiler now flags an error if you define a func or a proc with an array argument and give an array size, for example func fred(myArr[23]) is illegal. Previously, this error was not detected, leading to bad code generation.
Changes
  1. Spike2 is now much friendlier to other applications when it is sampling and when idling with a script running. If you have an on-line script that depends on the previous behaviour you may need to change the settings in the Edit Preferences Scheduler. To emulate (not quite exactly) the previous settings, set all the fields to their minimum values (1, 0, 0). This is not recommended.
  2. If you used the Analysis menu Calibration command or ChanCalibrate() script command in "Set scale from mean of time range" or "Square wave amplitude (Size) only" modes, this preserved the channel offset, which led to unexpected results when the offset was not zero. These modes now preserve the user y axis zero, which will change the channel offset if the original channel offset was not zero. You will see no change in behaviour if the channel offset is zero.
  3. We now allow 52 channel duplicates (see above). We don't think that this will cause any problems with existing scripts.
  4. If you use automatic file naming to sample a sequence of files (with a non-zero repeat count), we have speeded up the search for an unused file name by starting the search from the last used number plus 1. This will affect you if you used a separate application to move sampled files elsewhere and relied on Spike2 re-using the old names as they came free.
  5. The ChanValue() script command when used on a waveform-based channel in a time view now pays attention to the drawing mode. To get the old value set the mode% argument to 1 or disable the new behaviour in the Edit Preferences Compatibility page.
11/04 5.09 New
  1. Dialog buttons created by DlgButton() in user-defined dialogs can now have hot keys.
  2. In user-defined dialogs, buttons, prompts, checkboxes and static text can have pop-up tooltips.
  3. ProcessAuto() and ProcessTriggered() can now be used in a time view when processing to a channel.
  4. The graphical sequence editor now takes advantage of sine output on 4 DACs in the Power1401.
  5. The graphical sequence editor now uses the RAMP instruction, when possible.
  6. The channel secondary colour now sets the colour of horizontal lines used to draw events as lines and for the centre line in Raster line mode.
  7. The script debugging windows for local and global variables and the call stack now maintain their screen positions between Spike2 sessions.
  8. The SampleOptimise() script command can now set the lower limit of the microseconds per time unit to 1 microsecond, matching the Resolution tab of the Sampling Configuration dialog.
  9. There are new script commands for IIR filtering of data arrays: IIRLp(), IIRHp(), IIRBp(), IIRBs(), IIRReson() and IIRNotch().
  10. The maximum number of duplicates of a time view that can be created from a script has been increased from 20 to 64.
  11. You can copy the differences between horizontal cursors to the clipboard by right-clicking a horizontal cursors and selecting options from the context menu.
  12. The Alt+Drag method of making measurements now lets you save the measurement. While dragging, release the Alt key and then use the C or L keys to copy or log the displayed values.
  13. You can now overdraw spike shape channels drawn in the Overdraw WM display mode.
  14. If you drag spike shape channels between the Overdraw area and the normal display area, they automatically change drawing mode between Overdraw WM and Waveform mode.
  15. The Edit menu Preferences command has a new option in the General tab to ignore the x axis range last used in data files larger than 10 MB. This can save a lot of time when opening very large data files.
  16. You can now choose which principal components to display in the clustering window.
  17. You can now set the 3D clustering windows to "jitter" to aid visualisation of the clusters.
  18. You can set the background colour of the clustering window from the colour palette. Ellipses are now easier to see against dark backgrounds and the clustering window no longer flickers when resized.
  19. There are new cluster window commands to rotate the window so that the x, y or z axis point at the user.
  20. The K Means and Normal Mixture clustering methods now allow you to view the clustering process and also let you to cancel a long clustering operation.
  21. The Axon file importer is updated to version 1.83 of the Axon library.
  22. The Data Sciences International (DSI) file importer now works better with frame-based files.
  23. The Plexon file importer now accepts library version 104 files.
  24. The FileSaveAs() script command can now save time, result and XY views as a bitmap.
Fixes
  1. The active cursor iteration of cursor 0 in points mode now detects a point at time 0.
  2. The active cursor system did not invalidate cursor 0 when a seek failed, which could cause spurious measurements at the end of a Process command.
  3. All the output sequencer branch instructions using the table (Bxx Vn,[Vm+offset],lb) except BEQ tested the value of Vm and not the table value.
  4. The output sequencer expressions sTicks(), msTicks() and usTicks() now work correctly when a Power1401 or Micro1401 is using a time resolution that is not an integer number of microseconds.
  5. In the graphical sequence editor, a section that contained only a delay followed by a branch did not generate any code.
  6. When a sampling configuration contained processes that added measurements to a time view channel, the processes were not always created when you opened a new data file for sampling.
  7. ChanSave() did not preserve the initial level of a level event channel when it created a new level event channel and copied data into it.
  8. The ChanSave() script command could fail to save a waveform channel if it had an attached channel process that increased the channel sample rate.
  9. The Spike2 Video application deleted the .avi file if the temporary file location used during sampling and the final file location were the same.
  10. A split script window appeared twice in the Script menu Run Script list.
  11. If you set Triggered display mode and set the x axis to be zero at the trigger point, any change to the display layout caused the x axis to display the original time axis.
  12. The Print Visible command is now only enabled when it can be used.
  13. If you aborted sampling while waiting for a triggered start when using a 1401 with a USB 2 interface, you had to restart the system to use the 1401 again.
  14. The 1902 signal conditioner support for unity gain rectification did not work correctly.
  15. Changes made online in the 1902 conditioner control panel for AC coupling and the notch filter were not passed on to the 1902 until the next file was sampled.
  16. The text file importer produced incorrect y offsets for data that was asymmetric about the y axis zero.
  17. The Igor file importer no longer crashes when reading a channel that is held in blocks of different data types.
  18. The DataWave file importer copes better with EWB files.
  19. Interactive curve fits now always draw relative to the correct axis when axes are locked.
  20. The interactive curve fitting dialog is now useable online with an active cursor process running. Previously, the dialog was too busy tracking cursor changes to be responsive.
  21. Passing a waveform with a negative or zero area to EventToWaveform() is now reported as an error and no longer hangs Spike2.
  22. The enhanced metafile image export set the image size based on the nominal pixels per inch value reported by the system, resulting in an inaccurate size. It now calculates it more accurately.
  23. Cosine output on DACs 2 and 3 generated by the graphical sequence editor did not stop.
Changes
  1. The Resolution tab of the Sampling Configuration dialog and the SampleOptimise() script command now have separate settings for all 1401 types. Previously, the micro1401 and the 1401plus shared a common setting. Now, the micro1401 has its own setting so we can differentiate between the number of DAC outputs. This should not cause any problems with old sampling configurations.
  2. In a time view, if you set the x axis to Time of Day mode, this stops the x axis displaying 0 at a trigger point in Display trigger mode. Likewise, setting Display trigger mode to show the x axis as 0 at the trigger point will change Time of Day mode into Hours, Minutes and Seconds mode.
  3. The slowest allowed clock tick when sampling, which sets the file resolution, has been changed from 1000 us (1 ms) to 10000 us (10 ms). This increases the maximum possible sample time from 24 to 240 days. This is to allow very slow sample rates for very long time periods.
  4. The maximum size of an arbitrary wave has been increased from 2 MB to 32 MB as a couple of users found this limit too restricting. You still must leave at least 256 kB free in the 1401 for sampling space.
  5. In the clustering window, the shortcut keys to set event codes inside selected ellipses have been changed from Ctrl+0...Ctrl+9 to 0...9. This allows you to drag an ellipse with the mouse and set codes simultaneously.
  6. The State drawing mode now omits the vertical line between states if the state is less than a few pixels wide.
09/04 5.08 New
  1. New output sequencer instructions DIV and RECIP implement variable division and reciprocals.
  2. You can now create a virtual channel by interpolating RealMark data values.
  3. The Channels tab of the Sampling configuration dialog now displays the range of data ports used by WaveMark channels with multiple traces.
  4. The Optimise() script command used in an XY view now pays attention to the start and finish arguments. Previously it ignored them and optimised the entire view.
  5. The Y Axis dialog can now optimise an individual channel in an XY view. It now optimises data over the displayed x axis range, not all the data. This behaviour matches time and result views.
  6. The new Speak() script command allows users of systems with text to speech support to output speech from text strings.
  7. The new ArrSort() script command sorts arrays of any type.
  8. The Edit menu Undo command displays the next undo operation in Time, Result and XY views.
  9. You can now change the colours of TextMark dots with the channel primary colour in the colour palette. You can also set the colour of text in Text drawing mode with the channel secondary colour.
  10. The File Menu Print Screen dialog now allows you to select landscape or portrait mode printing and you can include the current date and time in the heading. The dialog also remembers your settings between sessions. If script recording is enabled, all dialog settings are now recorded.
Fixes
  1. If you invalidated data drawn in Overdraw WM mode, for example by changing marker codes, the full time range of the invalidated data was added to the display. Now only invalid displayed data is redrawn.
  2. If you used the Channel process Down-sample command on a waveform channel, data after a short gap might not display.
  3. If you selected the "Power1401 625" in the Resolution tab of the Sampling configuration dialog, you could not sample WaveMark data with more than 1 trace.
  4. The XYAddData(chan%, y[], xInc, xOff) command would add incorrect data if y and xInc were not the same type (both real or both integer).
  5. If your script contains a runtime error in a VAR statement, for example VAR arr[100/n%]; and n% is 0, the error is now reported on the correct line.
  6. The SampleWaveMark() script command did not allow you to set the number of traces.
  7. The DIBEQ sequencer instruction in the 1401plus did not work.
  8. If you print a data view that spans multiple pages and you have set left or right printer margins, the pages now join together correctly.
  9. The Print Screen command now pays attention to printer margins.
  10. Curve fits in XY views now print correctly.
  11. In the graphical sequence editor, "branch outside levels" and "branch within levels" operations now work correctly.
  12. The recording of active cursor settings is now correct for all active cursor modes.
  13. Processes that can use auxiliary values, such as the PSTH, no longer include sweeps in the sweep count that were rejected by the auxiliary value.
  14. When a data file is loaded that contains a fit, the fit dialog now displays the residual values.
  15. The ChanSave() script command could hang up Spike2 when interpolating waveform data.
  16. If you checked the "User check positions" box in the trend plot setup dialog, you were prompted to adjust the cursor positions, but you could not move the cursors.
  17. If you change the drawing mode of multiple WaveMark channels to or from Overdraw WM, they now keep the same relative screen positions. Previously this operation would reverse the vertical order.
  18. If you dragged channels on top of each other and then hid the y axes, it was possible for a hidden y axis to draw on top of the data area.
  19. You could crash Spike2 by creating a result view with multiple channels and raster displays, then going back to the Process Settings dialog and reducing the number of channels.
  20. The FocusHandle() script command returned 0 if the active view was a minimized time, result, XY or text-based window or if the focus was on a button in a script or sequence window.
  21. High-numbered primary, secondary and background channel colours were not preserved when the view was saved and restored or when a time view was duplicated.
  22. In the Spike shape setup dialog with multiple spike channels and channels with multiple traces, if you set up a channel with multiple traces, changed to another channel, then returned to the first channel, the template position and any previously created templates were corrupted.
  23. If you exported a TextMark file with a maximum count of characters per item that was not a multiple of 4, the exported channel was corrupted. Spike2 itself does not create such channels, but you can import such data from third-party programs.
Changes
  1. If you have a non-scrolling Overdraw WM channel, it now redraws completely whenever the view scrolls by half the view width or more. It also redraws completely for each trigger in triggered display mode.
  2. The channel background colour is now settable in State drawing mode. State code 00 is now drawn in the channel background colour, not in white.
07/04 5.07 New
  1. You can now create virtual RealWave channels, which are arithmetic combinations of waveform and event channels. Event channels are converted to waveforms using smoothing functions including raised cosines and Gaussians.
  2. FocusHandle() added to return the view handle of the view with the focus. Unlike FrontView(), this can return multimedia and spike shape windows.
  3. The new ReadSetup() script command now allows you to set the separators and delimiters used by Read() and ReadStr().
  4. You are now warned if you try to sample with automatic file naming with the file name path pointing to a directory that is read-only or missing.
  5. The EventToWaveform() script command can now apply additional smoothing functions (including Gaussian) and allows you to supply an asymmetric function.
  6. The ChanSave() script command copies one or more channels from one file to the same or a different file with an optional time shift.
  7. The ChanNew() script command now accepts a channel number of 0, meaning the first unused channel.
  8. The BIOPAC file importer now supports file formats up to version 3.7.3.
  9. If you use the Profile() script command to modify the registry values for Editor settings or print margins, the changes are now applied immediately. Previously you had to restart Spike2.
Fixes
  1. Waveforms with gaps were not handled properly by the Match to channel and Interpolate channel process methods.
  2. Waveforms with a channel process that used interpolation could cause Spike2 to hang if they were drawn in dots mode and a singe dot required repainting.
  3. Active cursor backward searches by data point on waveforms with channel processes that alter the time base or position of points (for example, time shift, down sample and interpolate), now work correctly.
  4. Waveform and event data drawn as large dots or with wide lines did not always refresh properly when an object was dragged over the window.
  5. Time view raster displays did not draw if the y axis was reversed.
  6. The DrawMode() command is no longer allowed to set a rising or falling edge when working on non-level data.
  7. Waveform correlations could produce incorrect results in some circumstances. If this happened, the returned values were huge numbers (not in the range -1 to 1).
  8. The output sequencer RAMP instruction would not ramp to a negative value in DAC units.
  9. The Sampling configuration changed indicator (the * added to the sampling configuration dialog title) is no longer set spuriously.
  10. If the last event in a channel drawn in Mean Frequency mode was within the mean frequency bin size of the end of the file, the mean frequency was not drawn after the last event.
  11. Timed sampling would sample continuously when the start time of the next block passed the maximum possible sampling time for the file.
  12. If you clicked the right-hand mouse button in an XY view and selected the context menu item Process Settings, the Process dialog opened instead of the Process Settings dialog.
  13. The documented return value for the ChanNew() script command was incorrect.
  14. The CED CFS file importer now correctly converts multiple frame files with Y scales that change between frames. Previously it assumed all frames had the same scaling.
  15. If you changed the primary colour of a channel, any fitted data also changed to the primary colour.
  16. If you used Rerun on a data file from which result views were being generated, and the Rerun command did not start at time 0, a subsequent Rerun command would not process data until the rerun time passed the time reached by the previous rerun.
  17. In a script, using %E as a print format to print a real number caused a crash, but %e was OK.
Changes
  1. The new virtual channels occupy channels 701 to 800. This has reduced the space allowed for memory channels from 400 to 300 channels.
04/04 5.06 New
  1. Channel Process now includes a median filter.
  2. Support for multiple monitors added. The System() command can now return monitor information. The WindowVisible() command allows you to maximise the application over the entire desktop. You can position windows relative to a monitor with the Window() command.
  3. The interactive measurement system (hold down Alt and left click, then drag) now displays the mouse position if you don't drag. The display now includes the measurement units.
  4. The TextMark and Channel information dialogs now disable their editable fields if the channel is part of a read-only file. Memory channels can always be edited.
  5. All active cursor peak, trough and threshold searches now support a time width. You can now (optionally) reject peaks and troughs that are too wide and level crossings that are too short. The script language supports this through the width argument of ChanSearch() and CursorActive().
  6. You can now take measurements between cursors from RealMark channels and channels drawn in mean and instantaneous frequency mode.
  7. The output sequencer now supports continuously ramped DACs (not 1401plus).
  8. In the output sequencer, the Power1401 can now generate sinusoids on DACs 0 to 3 (previously only DACs 0 and 1 were supported).
  9. The output sequencer now supports a table of user-defined size that can be used to transfer large quantities of information rapidly between a script and the sequence. This feature is not supported by the 1401plus.
  10. Spike2 now releases more time to the operating system during sampling.
  11. You can now apply a Global Resource file automatically to data files. This makes it much easier to analyse lists of similar files and files stored on read-only media. Script users can access this with the FileGlobalResource() command.
  12. The Edit menu Preferences has a new Compatibility tab. This includes a new option for backwards compatibility of measurements from event channels drawn in mean and instantaneous frequency mode.
  13. The array arithmetic routines have been optimised to run faster.
Fixes
  1. SSOpen() can now be used with no arguments, as documented.
  2. If you edited the Measurement to a data channel settings for a memory channel, and the target channel was not 401, the destination channel was deleted.
  3. The Measure to XY dialog will preserve XY data, if possible, when settings change.
  4. If you right clicked on a channel in a duplicated time window and opened the marker filter or a memory channel dialog, the correct channel was not selected automatically.
  5. Backwards searches on RealWave channels now work correctly.
  6. The process count returned by ChanProcessInfo() was 1 too large. Also, the type codes returned for match to channel, interpolate and down-sample processes were incorrect. These three processes were not saved and restored when you closed and opened a data file.
  7. The Sonfix application, which checks and repairs data files, could list the "lost blocks" in a damaged waveform channel in the wrong order, which would limit data recovery.
  8. Closing the Log window when it is maximised (which hides it), now displays the next window in maximised mode.
  9. With a 1401plus, the output sequencer command DELAY 0 or DELAY Vn with Vn equal to zero set a very long delay.
  10. Opening the Edit WaveMark dialog during sampling set a trigger level to 0 and then restored the correct level. This could cause unwanted spikes to be sampled.
  11. In the File menu Print Screen command, waveforms could print outside their channel space.
  12. XY views created by Measure to XY now correctly size to match the font.
  13. PlayWaveStatus$() returned the pos% argument as the point offset into the channel area, not as the point offset per channel into the area. This made no difference for a single channel area, but if there were n channels, the value of pos% was n times too large.
  14. In the graphical sequence editor, the wait for Cosine phase 0 command generated incorrect code and a sequence using this would not load.
  15. If you made changes to the last item in a TextMark channel drawn in Text or State mode, the channel did not redraw correctly.
  16. In version 5.05, if you imported events into a memory channel from a waveform in peak detect mode, and the peaks did not have a positive y axis value, the peak position was set at the waveform sample before the peak. The same was true for trough searches if the troughs had positive values.
  17. The MemSetItem() script command did not invalidate the display if a new item replaced an existing item.
  18. Searches for a slope trough always succeeded, even if the data was rising.
  19. Channels drawn in sonogram mode ignored the Lock Y axis flag in the Y Axis Dialog.
  20. The sizes of the text buttons in the Toolbar and Interact bars is now calculated more accurately from the text passed in.
  21. Slope inflexion searches and slope percentage searches now use the minimum step time.
  22. In a time view, the Cursor menu Delete option now includes cursor 0 if it is visible. If you choose cursor 0, the cursor is hidden as cursor 0 always exists in a time view.
  23. The Cursor menu Display All command now includes cursor 0 if it is visible.
Changes
  1. The measurement mouse pointer (hold down Alt and left click in a time, result or XY view) has changed to make the display look less cluttered.
  2. Measurements between cursors and the ChanMeasure() script command now pay attention to the drawing mode of events. In particular, channels drawn in mean and instantaneous frequency mode now report results as frequency where previously they returned an event count. Because this might cause old scripts to fail, you can disable this with a new Edit Preferences option in the Compatibility tab.
  3. The list of recent files in the File menu no longer includes files opened by scripts. However, it does now include files exported as .smr or .txt so you can open them to check the contents.
01/04 5.05 New
  1. There is a new Fit Data command in the Analysis menu that fits Exponential, Polynomial, Gaussian and Sine curves to channel data in time, result or XY views.
  2. There are new script commands for curve fitting: ChanFit(), ChanFitCoef(), ChanFitShow() and ChanFitValue().
  3. The Analysis menu Measurements system can now access fit coefficients. If you have selected a fit coefficient, a fit is done after each cursor 0 iteration. MeasureX() and MeasureY() script commands have been extended to match.
  4. The MeasureX() and MeasureY() commands now accept values as well as strings for the expr1 and expr2 arguments.
  5. There is a new Analysis menu Measurements option to create a data channel based on active cursor measurements. This can be used on-line or off-line. For example, this allows you to generate a Heart Rate display from a blood pressure channel in real time during sampling. There is a new MeasureToChan() script command.
  6. Channel measurements now include ratio and product of values as well as value differences.
  7. The active cursor Data Points iterator now allows you to set the number of points between each measurement. This gives you an easy way to step through data 1000 events at a time, for example.
  8. The active cursors system and the ChanSearch() script command now allow you to search for values inside or outside two thresholds.
  9. The RasterGet() script command can now return the number of sweeps stored for a channel.
  10. The new ViewKind() script command now accepts a negative argument to test the type of the window that a result or XY view was created from. This allows a script to test for a parent window before using View(-1). This avoids a fatal error if the window does not exist.
  11. The new ViewLink() script command allows a script to find their parent view. This is not the same as View(-n), which returns the nth duplicate of the parent.
  12. RealMark, waveform and RealWave channels in a time view can now be set to Skyline draw mode. The DrawMode() script command has been extended to match.
  13. The Sequencer tab of the Sampling configuration dialog has a new option to prevent an accidental user keypress causing sequencer jumps. There is a new SampleSeqCtrl() script command.
  14. Several dialogs that prompt you for time ranges and single times now try harder to make their initial suggested positions more likely to be useful.
  15. The new ArrSpline() script command uses cubic splines to resample one array to another.
  16. The spike shape parameter dialog now includes cubic splines as an interpolation method.
  17. The MarkMask() script command can now get and set the state of the mask using an array.
  18. In Overdraw WM drawing mode you can now right click on a spike and choose the "Find with cursor 0" option to move cursor 0 to the spike that is nearest to the cursor position.
  19. The New WaveMark and Edit WaveMark script windows are now recordable and scriptable. There is a new family of SSxxxx() script commands and several other commands will now work with a spike shape window as the current view. This gives a script access to spike shape templates.
  20. The clustering dialogs now allow you to display x, y and z axes for the data.
  21. The Spike2 Video application now allows you to define a maximum frame rate in addition to a slow frame rate. This is for cameras with a fixed frame rate.
  22. The Analysis menu Memory Buffer Import channel option now uses cubic spline interpolation when calculating the positions of peaks and level crossings.
  23. You can now omit empty square brackets when passing an entire matrix or vector to a function. For example, given var A[10][3], v[4]; and a user-defined Proc Fred(m[][], vec[]), you can use the proc as Fred(A, v) rather than Fred(A[][], v[]).
  24. There are two new operators that work on matrices: diag(M) and trans(M), where M is a matrix. These generate the diagonal and transpose of a matrix. You can also use the ` character (back-quote) as shorthand for trans(). For example, if you have var A[4][4]; you can write PrintLog(trans(A)), or PrintLog(A`) or PrintLog(A[][]`) to pass the transpose of the matrix to PrintLog(). PrintLog(diag(M)) passes the diagonal of the matrix to PrintLog().
  25. The script language now supports the cosh(), sinh() and tanh() functions.
  26. The maximum number of lines in a user-defined dialog has been increased to 40.
  27. The ArrSum() and MatMul() script commands now accept both vectors (1-dimensional arrays) and matrices (2-dimensional arrays) as arguments.
  28. The off-line process command now supports "gated" analysis. The Process() script command has been extended to match.
  29. This release supports the higher sampling rates available with the latest version of the Power1401. To enable the higher rates, select "Power1401 625 kHz" in the Type of 1401 field of the Resolution tab of the Sampling Configuration dialog.
Fixes
  1. View(-1).Cursor(1) was not accepted in a dialog expression when there were no duplicate views.
  2. If you ran Interact() or Toolbar() script commands and did not enable the Cursor menu, you could still add a new horizontal cursor by clicking the button to the left of the x axis scroll bar.
  3. If you created a waveform channel by duplicating a channel or as a memory channel and then set sonogram drawing mode, Spike2 could freeze during drawing.
  4. The Copy As Text output from a RealMark channel formatted the real values incorrectly.
  5. Online processing no longer unnecessarily clears result bins or sets the start time for processing to the current time when settings for online processing are adjusted.
  6. If you used FilePathSet("") in a script and selected the root folder of a drive, it selected the current folder on the selected drive.
  7. It was possible for data sampling to shutdown early due to buffer overflow in the 1401 (usually caused by the host PC not being able to keep up with the data rate) with no reason displayed.
  8. It was possible to get a "Thread termination failed" message when sampling stopped if the 1401 sampling rate was too high.
  9. If you saved the spike shape configuration manually, the saved values for trigger levels were not the most recent.
  10. The graphical sequence editor gives a more realistic display of ramp output.
  11. While dragging something with the mouse, if another application grabs the input focus (for example to display an error message) or you use Alt+Tab to change application(!), the mouse operation is now aborted. Previously Spike could get confused about the drag/non-drag state.
  12. Channel searches on WaveMark data now honour the drawing mode, as documented. If you use the Data points mode, this always treats WaveMark data as events.
  13. A backwards search on an event channel drawn in mean frequency mode could stick at one position.
  14. In the graphical sequence editor, a key character at the start of a segment was omitted if a control item was set at time zero.
  15. DrawMode(ch%,-2) did not return the correct value of the horizontal line flag when used on event channels drawn in line mode.
  16. The file time displayed in the View menu File Information dialog changed with the system time zone and did not match the time returned by the FileTimeDate() script function.
  17. The text importer no longer gets confused about channel scaling if you change the number of header lines.
Changes
  1. If you recorded your use of the Process dialog, and used expressions like Cursor(1) that referred to the time view, Cursor(1) was recorded instead of View(-1).Cursor(1). Now, if you are recording your actions, the Process dialog drop-down lists display times as View(-1).Cursor(1). As this looks clumsy, we don't use this format if you are not recording.
  2. Scripts that use trans and diag as names for variables or user-defined functions will no longer work. To fix such scripts, replace your use of these names with other names.
10/03 5.04 New
  1. You can now record and review video and audio multimedia files.
  2. You can lock overdrawn channels so that the y axis scales them all. You can also apply a per-channel vertical display offset to space out channels that would otherwise draw one top of each other. Script users use ChanOrder() and the new YAxisLock() command to support the new capabilities.
  3. There is a new preferences option "Enter debug on script error". This allows you to view script variable values after an error.
  4. More checks are now done on a Spike2 data file when you open it. SONFix has been extended to repair files that fail the new checks.
  5. The XYAddData() script command has been extended to make it easier to copy waveform data into an XY view.
  6. The SampleKey() script command now returns the time of the added marker.
  7. We now allow MaxTime(n) as well as MaxTime() in dialog expressions. This can be used with active cursors in expression mode to find the last data item in a channel.
  8. The text importer has been made easier to use and you can now choose to import waveform channels as RealWave or waveform and event channels as Event-, Event+ or Level.
  9. The Cursor menu now has commands to iterate active cursor 0 right and left.
  10. The BinError() script command now supports array access to result view errors.
  11. The System$() script command can now read and write environment variables.
  12. You can now use the Analysis menu memory buffer Add items on waveform and RealWave data. This allows you to edit waveforms interactively.
  13. DlgVisible() and DlgEnable() now allow you to use arrays of dialog items in addition to dialog items.
  14. If a text file fails to open because it contains illegal characters you now get an explanatory message.
  15. We now save the colour palette and application colours in the registry and not in sampling configuration files. There is a checkbox in the Edit menu Preferences (normally clear) to enable the old behaviour.
  16. There are new pages in the Colour dialog that allow you to override the background colours of individual views and of individual channels. ChanColour() has been extended and there is a new ViewColour() script command.
  17. We have changed the way that lines are drawn in XY views so that there is a much better chance that they will appear as a grouped object when exported via a metafile into a drawing program.
  18. MemSave() has a new argument that allows you to override the standard disk block size used when saving data. If you save a memory channel that holds many small sections of data, setting a small disk block size can reduce the size of the data file.
  19. The DlgText() script command has an additional argument to set the field width.
  20. The ChanKind() script command returns 0 if you use it in the wrong type of view; it no longer gives a fatal error. This saves you testing the view type before using it.
  21. Auxiliary measurements in histogram generation ignore the trigger event at time 0. This allows you to display a marker if the next sweep encroaches on the current one.
  22. The ChanMeasure() script command now supports type% values of 16-19.
  23. The ToolbarSet() and Interact() commands can set tool tips for the buttons.
  24. The Alt+Shift+Left/Right key combination can now be used to step to the next and previous display trigger.
  25. The file importer now supports the Bionic NSx format.
  26. PlayWaveSpeed() has an optional extra argument to report the rate that will be used.
Fixes
  1. If you split a line in the script editor, the new line could lose characters and the line indent of the new line was often incorrect.
  2. The PlayWaveCopy() script command had problems with transfers that wrapped around the end of the target area and that started at an offset that was not a multiple of 4 samples.
  3. If you attempt to run the cluster dialog with no events to cluster, you now get an explanatory message. Previously nothing happened, which was disconcerting.
  4. Changing the process settings when processing to an XY view no longer causes the XY key to appear or disappear.
  5. Changing the last bin of a result view from the script did not cause it to redraw.
  6. In a result view, ChanMeasure() and the cursor regions dialog did not allow you to process the last bin and the Mean in X value was incorrect.
  7. If you used a programmable signal conditioner, for example the CED 1902, the conditioner settings saved in the Spike2 configuration were not always applied the first time you sampled data after starting Spike2.
  8. It was possible to set 3 traces for WaveMark data in the Create Memory buffer dialog.
  9. You could crash Spike2 by importing a WaveMark channel to a memory buffer WaveMark channel if the number of data points and pre-trigger points did not match.
  10. WaveMark data with a single waveform point is no longer invisible when drawn as a waveform.
  11. The BinError() script command did not allow access to the error information if the errors were not displayed.
  12. The Channel Process options for cubic spline interpolation of RealWave data produced no data after a gap.
  13. When the DupChan() script command returned values that were not channel numbers, they were 1 too small.
  14. Text expressions entered into a DlgXValue() field in a user-defined dialog are now preserved during the life of the dialog.
  15. A change function set by DlgAllow() was not called if you tabbed to the Cancel button after editing a field.
  16. If you change the drawing mode of a channel that is part of a group so that it no longer has a y axis, the channel drops out of the group.
  17. MarkInfo() did not return 0 when used on a marker channel.
  18. The FileSaveAs() script command no longer forces a time view to be visible before saving it.
  19. WaveMark events in time views with codes greater than 8 were drawn in the wrong colours.
  20. Changes to the signal conditioner settings during sampling cause marker code 02 to be added to the TextMark channel or to the keyboard marker channel if there is no TextMark channel.
  21. Changes made to the signal conditioner during sampling are now saved in the sampling configuration and are applied if you sample again.
  22. The ScriptBar() and SampleBar() script commands did not accept all documented argument combinations.
  23. The Debug(msg$) script command writes msg$ to the script source window, as documented.
  24. The DrawMode() command with mode% set to 0 now sets the standard drawing mode for the channel, as documented. Previously it did nothing.
  25. The Neuralynx file importer for continuous waveforms now ignores the sample rate in the data blocks. The sample rate is estimated from the data block time stamps.
  26. The covariance matrix returned by the fitting routines FitLinear() and FitPoly() was incorrectly scaled.
Changes
  1. In a result view, ChanMeasure() in slope mode included the end bin in the calculation. This was different from all other modes. It no longer includes the end bin.
  2. The script language MaxTime(chan%) command now returns -1 if the channel does not hold any data. Previously it returned 0 (which could have meant that there was data at time 0).
  3. The interactive keyboard commands to centre the display on the next/last event in the selected event channels has changed from Ctrl+Shift+Right/Left (which was also used for active cursor iteration) to Alt+Right/Left.
  4. When you import a WaveMark channel to a memory buffer WaveMark channel with a different number of waveform points or pre-trigger points, the trigger points of the output and input are now aligned. Previously, the first point of the output and input were aligned.
  5. The default palette has been altered to provide a wider range of colours and to remove duplicated colours. The default application colour lookup table has been altered to change the default grid colour and to counteract the effect of the duplicate removal. This will not affect you unless you click the Reset All button in the colour dialog.
  6. The FitExp() script command now fits y = A0 * exp(-x/A1) + A2 * exp(-x/A3)... and not y = A0 * exp(-A1*x) + A2 * exp(-A3*x)... as previously.
07/03 5.03 New
  1. The right-click context menu in all text-based windows now includes "Select All" and "Clear" options.
  2. The cursor menu Fetch command now includes "All cursors".
  3. The Optimise() script command now uses the start and finish bins in a result view. Previously these arguments worked for time views only. They are still ignored in an XY view.
  4. Previously, imported data files had 32 channels or the number of channels in the input file, whichever was greater. Now, if the input file has n channels, the imported file has the greater of n*1.25 or 32 channels to make room to save processed data.
  5. The Edit menu Preferences option now leads to a tabbed dialog. This makes more room to extend the preferences menu; it was getting very crowded.
  6. There is a new Edit menu Preferences option in the General tab to save modified scripts when they are run.
  7. You can now set the signal conditioner COM port in the range 1 to 8 in the Conditioner tab of the Preferences dialog. Previously you could select ports 1 to 4.
  8. The DOS script converter now uses Yield() to translate the Delay command.
  9. There is a new File menu Apply resource file command that applies a resource file to the current time view. There is also a FileApplyResource() script command. You can use this to apply a complex view state quickly.
  10. The Set Marker Codes dialog is now modeless. This means you can move cursors in the associated time view while the dialog is open.
  11. When result views with error information are drawn as lines, cubic spline or as dots, the errors are drawn first so the data values are always on top. This improves the appearance when the errors have a different colour.
  12. If you start Spike2 with a command line that specifies a file or if the file startup.s2s is found, the display of warning message boxes that require user actions to close them is suppressed.
  13. There is a new command line option, /Q, that suppresses all initial message boxes and the Spike2 start up information window.
  14. There is a new Channel Process option for RMS amplitude. The ChanProcessAdd() script command has been extended to match.
  15. The Error$() script command now knows about error codes associated with the 1401.
  16. If you hold down the Alt key and click and drag in a time, result or XY view, the size of the dragged rectangle appears on the screen.
  17. The Status bar now displays the mouse pointer position for time, result and XY views.
  18. Modified text, time, result and XY views now have a * appended to the view title. The view title returned by WindowTitle$() is not affected.
Fixes
  1. The script FileSave() command no longer asks if it is OK to overwrite its own data file when used with text, result and XY views.
  2. The Process dialogs could display times to 15 decimal places if the associated data file had a time base that was not an exact multiple of microseconds. This made them difficult to edit.
  3. Points mode active cursor searches on event channels no longer ignore the minimum step value.
  4. If you used the script ChanKind() function in an XY view, it always reported an XY channel, even if the channel number did not exist. It now returns 0 if the channel does not exist.
  5. If you use the Edit WaveMark dialog on-line and change the trigger levels, but do not use the Online Update button, the levels are now remembered.
  6. If you sampled a sequence of files automatically, it was possible to crash Spike2 if the Abort or Reset dialog was active when sampling reached the end of a file and started the next. Now, the next file will not open until you close the dialog.
  7. TextMark data read from a serial line during sampling no longer includes characters that were received before sampling started.
  8. If you use the script language Optimise() command in an XY view, the result is now exactly the same as using the Optimise button in the y axis dialog.
  9. It was possible for the cluster dialogs to appear at a very large size.
  10. Toolbar buttons linked to the characters A-Z with ToolbarSet() are no longer activated if the Ctrl key is down. For example a button linked to the C key was also linked to Ctrl+C.
  11. If the MinMax() script command was used on RealMark data, it searched from one data point before the start of the time range.
  12. If you used the Read() script command with no arguments to read from a text window, it did not skip a text line as the documentation stated it should.
  13. The Draw() script command did not update a text-based view.
  14. In Windows 95/98/Me, data drawn in rate mode did not display correctly if you zoomed in so that the x axis displayed a small fraction of a bin.
  15. The MeasureToXY() script command now pays attention to a request for user checks of cursor positions.
  16. The cubic spline interpolation Channel Process options produced no data after a gap.
  17. FileConvert$() no longer ignores the flag% parameter.
  18. The script compiler did not complain if you passed an idle function with an argument to the DlgAllow() script command.
Changes
  1. The Process dialogs now remove trailing 0s before displaying times. Previously, with a data file with 10-microsecond time resolution, 0.1 seconds was displayed as 0.10000 seconds.
  2. Previously, when sampling stopped and a data file held no data, Spike2 deleted the file. This could lead to problems with files vanishing unexpectedly. As an experiment, we now preserve such files and add a file comment (unless file comment 4 is already used) stating how long sampling actually ran for.
  3. Vertical cursors are no longer added in the centre of each view. Now, they are added at positions based on the cursor number.
  4. Time view channel units are now read back from the displayed channel, not the underlying data file. This means that event channels displayed as frequency have units of Hz.
  5. The Optimise() script command now operates on the list of channels you pass in (even if they are hidden). Previously it did not optimise hidden channels.
06/03 5.02 New
  1. If you move the mouse pointer over a .smr (data) file in Windows Explorer, you will now get pop-up information about the file. This includes the file time resolution and duration, the number of channels and any file comment.
  2. If you move the mouse pointer over a .s2s (script) file in Windows Explorer, and you have set a script file comment in the first line, the comment appears in the pop-up information.
  3. If you are running Windows NT2000 or XP, you can now display the comments associated with a spike2 data file (.smr) and script file (.s2s) in the details view.
  4. The Spike shape and cluster window now have a size box in the bottom right hand corner.
  5. The spike shape dialog template windows now display the number of matched spikes in addition to the number of spikes added to each template. The Template menu Initialize counters command sets the matched count to zero.
  6. The following new script commands support curve fitting: FitExp(), FitGauss(), FitSin(), FitPoly(), FitLinear(), FitNLUser().
  7. The following new script commands calculate the Gamma function: GammaP(), GammaQ(), LnGamma(). These commands are useful when working with Normal and Poisson distributions.
  8. There are new script functions MATInv(), MATMul(), MATDet(), MATSolve(), MATTrans() that support matrix operations with two dimensional arrays.
  9. The following script functions now support two dimensional arrays: Abs(), ArrAdd(), ArrConst(), ArrDiv(), ArrDivR(), ArrMul(), ArrSub(), ArrSubR(), ATan(), Cos(), Exp(), Frac(), Ln(), Log(), Pow(), Round(), Sin(), Tan(), Trunc().
  10. File importers try harder to create files that are compatible with older versions of Spike2.
  11. The Rand() script command has been extended to allow you to set the range of random number and to fill arrays with random numbers.
  12. There are new script functions RandExp() and RandNorm() that produce random numbers with exponential and normal density functions. You can use RandExp() to produce lists of event times with Poisson statistics. You can use RandNorm() to add normally distributed noise to waveforms.
  13. Channel Process has been extended to include cubic spline interpolation of channels to any sampling rate and alignment. ChanProcessAdd() is also extended to match.
  14. The new PCA() script command performs Principal Component Analysis.
  15. You can now use ChanSelect() in a result view.
Fixes
  1. It was possible to crash Spike2 by printing a very large number in %f format. For example: PrintLog("%8.0f", 1e300);
  2. There was no error reported if you used SetResult() with the chans% argument and without the xU$ argument.
  3. Scrolling a waveform drawn in Cubic Spline mode could cause imperfect data display.
  4. Using the clustering dialogs cancelled circular replay in the Spike shape dialog.
  5. If you used FitLine() in a result view and the finish bin number was beyond the end of the result view, the results were incorrect.
  6. If you exported a file created by a very old version of Spike2 to a new data file, it was possible to crash the program.
  7. Sequences set by the SampleSequencer() script command did not always appear in the sampling configuration.
  8. The Process() script command changed the result view contents but did not cause a screen update.
  9. Modifications to a result view bin did not cause duplicates of the channel to update.
Changes
  1. The size of a script-created dialog is now limited to 180 characters wide and 30 characters high.
  2. If you output a 2D array using Print(), PrintLog(), Print$() or Message(), the output now uses the first index as the rows and the second as the columns. This matches standard notation for matrices.
  3. The close button at the top right of script-created dialogs has been removed, as it did nothing.
04/03 5.01 New
  1. In a result view, drawing data as lines when there are many points per pixel now looks less "chunky".
  2. There is a new Normal Mixtures method for clustering data.
  3. There is a new accelerator key (Ctrl+Shift+K) for the "KMeans from existing" command in the clustering dialog.
  4. When debugging, you can now step over the Interact(), Toolbar() and DlgShow() functions.
  5. If you set the channel title for an XY view, the Show/Hide channels dialog now uses it.
  6. Spike2 now supports Windows XP visual styles on windows and buttons.
  7. The EDF file import has been extended to support BDF format.
  8. The Plexon file importer now supports multiple frame data file formats.
  9. There is now a file importer for Multi Channel Systems data files. You must obtain and install an up to date MCStream library (version 2,4,0,0 or later) to use this importer.
Fixes
  1. The maximum allowed width of user-defined dialogs has been increased.
  2. The y axis title and units of a result view channel now track changes between raster and non-raster drawing modes.
  3. The script DrawMode() command only causes a redraw if the drawing mode changes. Previously it always caused a redraw.
  4. In a result view, line drawing with many points per pixel could occasionally miss a point.
  5. In a time view, waveform data draw as lines with many points per pixel could sometimes show a very narrow feature as 1 pixel wider than it should have been drawn.
  6. You no longer get the "Could not open file" error message if you use the File menu Open command to select a file that is already open in Spike2.
  7. Off-line waveform replay and on-line arbitrary waveform output now deal correctly with data files with a time base that is not one microsecond.
  8. If you dragged a cursor over a screen area that was updating, the cursor did not always draw correctly.
  9. A 1401plus with a fast ADC samples up to 8 channels of WaveMark data, but on-line template matching worked for the first channel only. Now it works for all WaveMark channels.
  10. It was possible for a dialog positioned by a script to appear in the previous dialog position rather than the position set by the script.
  11. When sampling spike shape data with more than one spike shape channel, you could not set the trigger levels correctly.
  12. You could crash Spike2 if you used the File menu Export command to dump a memory channel in text format.
  13. There is a new version of the 1401 device driver that fixes a data transfer problem for 1401plus users with PCI interface cards and long (more than 2 metres) interface cables and a fast PC. There is also a new release information.
  14. Script-created dialogs that use DlgInteger() to input a value less than zero now work correctly.
  15. The MinMax() function will not cause Spike2 to crash when the mode% argument is inappropriate for the type of channel, or when parameters needed for that mode are not provided.

Cambridge Electronic Design Limited

Registered in England: 972132

Registered office:

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

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
CAGE/NCAGE: KB797
NAICS: 423490
Commodity codes
Hardware: 84716070
Software: 85234945
×

By email:

info@ced.co.uk

By post:
  • Cambridge Electronic Design Limited,
  • Technical Centre,
  • 139 Cambridge Road,
  • Milton,
  • Cambridge CB24 6AZ
  • ENGLAND.
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.

Cookies

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. ×