- FilePrintScreen() now has an extra parameter to scale text in text views, to match more recent software.
- Running without sufficient privilege to increase the working set size no longer causes a crash.
- Peri-trigger levels now work correctly with a negative channel scale factor.
- Hiding a maximised view will now cause the next view to become maximised immediately.
- FilePath$() will now work correctly with an argument of 3 (the auto filing path).
- Fast sweeps with more than 50000 data points now work reliably.
- Online processing now resets next frame to process on sampling reset.
- The grid is now redrawn if the axis big tick spacing or small ticks are changed.
- Enhanced metafiles are now scaled much better.
- Cursor searches for percentage slope, max and min slopes are now more reliable.
- Renumbering of cursors no longer confuses cursor information.
- Using "Append Average" now works correctly when error bars are enabled.
- The covariance calculation in the linear fits is now correctly scaled.
- On-line amplitude histograms are now restored from the sampling configuration on subsequent runs.
- Changing the number of frames per average in an Auto-Average then re-processing no longer crashes Signal.
- Changing the number of channels in a power spectrum or amplitude histogram no longer crashes Signal.
- Inter-channel multiplication and division have been added to the analysis menu.
- "Enlarge view" now works again in an XY view.
- It is no longer possible to become "trapped" in the telegraph set-up by entering erroneous information on two channels at the same time.
- The ChanAdd() and ChanSub() script commands are now documented.
- ChanMult() and ChanDiv() script commands have been added.
- The "SetXXX" commands no longer give random behaviour to option parameters that are not provided or produce error bars when there are not required.
- The documentation for FitPoly() has been changed to correctly describe the way coefficients are returned.
- Attempting to open a file with enormously long sweeps (millions of points) will no longer crash Signal.
- The auto-indenting of text in the script editor no longer sometimes causes characters to be deleted.
- FitExp() now returns the correct covariance array.
- Changing the settings for an Auto-Average no longer crashes Signal.
- On-line Leak Subtraction with "Count excluded frames" turned on now works past the first cycle of the P/N protocol.
- The Draw() command now works in a text view.
- Some of the links in the help were jumping to the wrong pages. This has now been fixed.
- The Sampling Configuration dialog now correctly sets the text indicating the trigger channel for peri-triggered data.
- The status bar now has more space in which to display the current frame number.
- A bug introduced in version 2.12 which caused attempts to printout XY views to crash Signal has been fixed.
- It was possible to crash Signal by printing a very large number in %f format. For example: PrintLog("%8.0f", 1e300);
- If you used FitLine(), and the finish time was beyond the end of the view, the results were incorrect.
- FileConvert$() no longer ignores the flag% parameter.
- Any conditioner is now initialised correctly to match the configuration when Signal is run. Before the conditioner dialog could get out of sync with the conditioner itself.
- The conditioner dialog now displays floating point values correctly. Before it could sometimes loose the eXXX part from the end of some numbers.
- The "Apply" button in the conditioner dialog now disables the first time it is pressed. Before it needed pressing twice to disable it.
- The Port setup page of the sampling configuration dialog now correctly updates itself after using the conditioner dialog.
- Sampling synchronised with outputs when all outputs are disabled no longer halts the sampling.
- The "Customise Display" dialog now displays correct channel names when used in an XY view.
- Support for a mouse wheel has been added to text views and their derivatives.
- The mouse wheel works in file, memory and XY views. Press Shift to scroll faster, CTRL to scroll by half the displayed width and both CTRL and Shift to scroll by the full displayed width.
- A single click on the numbers of the x-axis is an XY view no longer causes the axis to re-scale slightly.
- Bits of cursor are no longer left behind if a cursor is moved while a script changes the display.
- Leak subtraction could sometimes fail by chance. This has been fixed.
- Using the File menu to open a file that is already open will now bring the existing view to the front. Version 2.12 was accidentally changed so it attempted to open the file again.
- Leak subtraction is now recorded correctly by the script compiler.
- XY views no longer leave small portions undrawn when revealing from under another window.
- When drawing very large numbers of points on a waveform, Signal no longer drops the occasional point from the display.
- The Amplitude histogram and Auto-average settings dialogs and the Customise Display dialog now give the correct help when pressing F1.Leak subtraction and Auto-averaging now cope much better with imported files containing data sampled at different rates.
- Pasting multiple components into a text view which are terminated with LF rather than CR LF no longer crashes Signal.
- Signal is now more likely to survive an attempt to open a corrupted XY file without crashing.
- A bug introduced in version 2.11 as part of the fix for coping with very long sweeps meant that very large result views would no longer save correctly. This has now been fixed.
- Rate histograms are now drawn correctly on-line.
- Markers are no longer sometimes lost from the display during sampling.
- WindowGetPos() now returns left, top, right and bottom positions for a window rather than left, top, width and height.
- Using FilePrintVisible() for a text view when there is no text selected no longer causes Signal to crash.
- The Optimise() script command now correctly uses the start and end times for the time range to be optimised.
- The ChanKind() script command now correctly returns -1 for a bad channel number. Before it would halt the script with an error or always return 3 if in an XY view.
- Extra tabs are no longer added to the end of text copied from the cursor values and cursor regions dialogs. These were causing neighbouring cells to be erased when pasted into a spreadsheet.
- The MRU file list has been extended to handle up to 10 files.
- The script recorder no longer inserts spaces after the commas when recording amplitude histogram settings.
- FilePrint() and FilePrintVisible() now have an extra optional parameter to allow the page orientation to be set.
- FilePrintScreen() has a new default for page orientation. Previously the default was landscape, now it uses the last orientation set.
- The Idle% function inside a script is now called much more frequently.
- Exporting data to another cfs file now exports any error information attached to the exported channels.
- Auto-averaging now has the option of error bars.
- Frame comments are now displayed at the top of printouts.
- There is a new preferences option to choose the way in which the start time of a frame is displayed in the status bar or in printouts.
- The file import system has been extended to support Neuralynx NTT, NCS, NEV, NSE and NST files.
- Putting up the "About" box while sampling no longer kills sampling.
- The first horizontal cursor created in a particular view will now have the same label mode as that reported in the cursor menus as being the current label mode for that view.
- In the pulse definition dialog, the drawing of the selection rectangle for arbitrary waveforms would sometimes select a preceding pulse in addition to the waveform. This has now been fixed.
- It is no longer possible to crash Signal by dragging a pulse in the Pulses dialog which is beyond the end of an outputs frame.
- Inverting the y-axis no longer causes a fitted curve to become hidden.
- Single stepping in the script debugger will now correctly step over endifstatements.
- The second parameter of FileClose() now always overrides the preferences for prompting for a memory or XY view being saved on closing.
- If the "X Zero" or "Y Zero" boxes are checked in either the cursor values or cursor regions window then the selected cursor is deleted the other cursor values will now update to reflect this.
- The CursorMode() command now longer sets the mode to 15 when attempting to set modes higher than this.
- "Area" measurements are now referred to as "Curve area".
- "Area/0" measurements are now simply referred to as "Area". This brings Signal into line with Spike2 to use consistent terminology.
- The file open dialog has been enhanced so it will now remember the last file type to be opened and present the user with that as the default type next time the dialog is used. It is also possible now to open a file with a different extension to the default one for the selected type.
- The file import dialog now remembers the file type last imported andpresents this as the default type to import next time.
- Right clicking on a channel and then choosing one of the waveform draw mode dialogs will now initialise the dialog with the channel clicked on.
- Exporting data to another .cfs or .txt file with a time range set with anend time less than the start time will now swap the times over to give a meaningful time range. Before it would generate an empty file.
- Axes have been greatly enhanced to allow more control over their appearance.
- New script commands to allow script control of the new axes features. These are: XAxisMode(), XAxisStyle(), YAxisMode() and YAxisStyle().
- You can import RC Electronics data files. You need both the *.DAT and *.PRM files. *.INX files are optional. *.DIS files are not used.
- You can import Run Technologies DATAPAC files: *.PAR, *.PBR and *.PCR files are supported.
- There is a preliminary version of a binary file importer. This reads interleaved channels of similar integer and floating point binary data.
- You can import Plexon data files: *.PLX, *.DDT and *.NEX files are supported.
- The Yield() command has been added to allow a script to pause and the system to have idle time.
- There is now a ChanNumbers() command to show/hide channel numbers.
- Creating a waveform average now has the option of error bars.
- The BinError() command has been added to allow you to read error bars from an average.
- The DrawMode() command has been extended to allow control of error bar display.
- A FrameMean() command has been added to determine if the displayed data is a mean or a total.
- It is now possible to set another script to run automatically on completion of the current script using the ScriptRun() command.
- The initial guess used by single exponential fits could sometimes cause a "divide by zero" error. This has now been fixed.
- Arbitrary waveform output now works for fast sweeps modes.
- Changing the settings for a trend plot by deleting an XY channel no longer causes Signal to hang.
- Script errors which previously referred to time and result views now refer to file and memory views.
- HCursorDelete() is no longer recorded in error by the script recorder when closing a file or memory view.
- Memory views saved from within a script now also have their configurations saved.
- Resizing the Pulse Configuration dialog while the "Push back" check box is visible now correctly moves the check box along with all the other controls.
- Functions requiring a channel list are now recorded correctly.
- Cursor movements are now recorded in the correct units.
- Modified very long sweeps are now written back to the file correctly.
- The "Semi-random" state ordering option has now been documented.
- The Globals window in the script debugger now talks of File and Memory view types rather than Time and Result views.
- Small sections of waveform could sometimes be missed by the drawing code. This has now been fixed.
- Multiple calls to FiltApply() no longer operate on any frames already filtered by previous calls.
- Calling FiltApply() on a non-existent channel no longer crashes Signal.
- Using Error$() with an unknown error code no longer crashes Signal.
- SetLeak() now always interprets times in seconds.
- New memory view commands now record correctly with the script recorder.
- Digital filtering with very large numbers of coefficients no longer crashes Signal.
- Starting up Signal with a Standard 1401 no longer gives an empty warning message.
- Context menus are now correctly enabled for individual channel views
- Auto-averaging a sub-set of channels now analyses the correct sub-set.
- Using SetXXX() commands in a memory view could sometimes cause data to be taken from the original file view instead. This was undocumented but has been changed to take data from the memory view instead.
- Creating a trend plot now records correctly in the script recorder.
- The MarkTime() command has been fixed so it can set marker times.
- Using ArrConst() to set marker times now correctly invalidates the whole marker channel.
- Optimise(n) now correctly works in an XY view.
- Optimising the buffer now works correctly.
- The current frame data is now always drawn on top if there is overdrawn data.
- The buffer is always drawn in the waveform colour even if there is an overdraw display list option set.
- The "Show mean" check box is correctly restored for both type of average dialogs.
- The Sweeps() command can now be used in a file view.
- The documentation for SampleMode() has been corrected.
- Rate displays no longer fail to draw the last bin.
- Changes to the registry using the Profile() command will now alter the preferences without the need to restart the program.
- SampleStop() has been extended to allow sampling to be stopped without finishing. This allows SampleSweep() to then be used to continue sampling.
- The idling has been enhanced to make the system more responsive.
- Frames tagged automatically while sampling in a fast sweeps mode are no longer redrawn.
- Tab sizes in the editor preferences are now restricted to the range 1 to 20.
- Signal is now shipped with the documentation available as .pdf files.
- The FileCopy() command has been added.
- There is a new Profile() command which allows direct access to data stored in the Signal registry.
- SampleBar() and ScriptBar() commands have been added to allow the script to control the content of these toolbars.
- FiltApply() can now be used in a memory view.
- Dotted lines drawn in an XY view could sometimes appear with a black background if a cursor was in the same view. This has now been fixed.
- A waveform output defined to continue past the end of the frame no longer cause drawing problems in the pulses configuration dialog.
- Changing a pulse definition on one DAC then clicking on another now correctly redraws the pulse preview.
- Dragging a multiple DAC arbitrary waveform output from one start time to another now correctly redraws the waveforms for all the DACs.
- Using SampleState() to set an illegal state no longer causes Signal to crash.Imported files now have the same file and data section variables as native files sampled by Signal. This allows frame comments to be stored.
- Bits of the cursor label could sometimes be left behind when the label mode was "Number". This has now been fixed.
- Digitally filtering data across multiple frames of a memory view no longer only filters the first frame.
- System$() will now return more meaningful strings describing the version of Windows being used.
- The PulseXXX() commands now use -1 to select digital outputs rather than 4 which would now mean DAC 4 on an 8 DAC 1401.
- The CursorActiveGet() and CursorActiveSet() commands now have an extra parameter for the default position..
- Artefact rejection is now available in fast sweeps modes.
- Artefact rejection will now take a percentage of the ADC range as a level outside which sweeps will be treated as having an artefact.
- Changes to the active cursor modes are now recorded by the script recorder.
- A problem that could cause Signal to hang in the Pulses dialog when defining an arbitrary waveform output has been fixed.
- A bug introduced in version 2.07 which prevented peri-trigger levels from being adjusted using the cursors has been fixed.
- The SampleArtefactSet() and SampleArtefactGet() commands now match the documentation in terms of which parameters are optional.
- The mouse pointer is now correct in Print Preview.
- Version 2.07 introduced a problem with some cursor operations not using the preferred units. This has been fixed.
- FileConvert$() will now take an empty string or wild cards as a file name and present the user with a file selection dialog.
- SerialRead() and SerialWrite() can now handle binary data.
- A problem which could cause active cursors to sometimes fail to find a peak or trough has been fixed.
- Memory views could sometimes have automatic reprocessing turned on when set up from a script. This is now always turned off.
- Calls to ExportFrameList() are no longer cumulative. Each call will now replace the previous frame list.
- SerialRead() will now read arrays of strings.
- The ChanSearch() function now correctly returns -1 if a search fails.
- Backward searches no longer start one point too late in the frame.
- Having invalid text inside the () after Cursor inside a dialog no longer causes Signal to crash.
- Active cursors will now correctly go to the default position if a search fails.
- The "New Cursor" item of the context menu is now greyed out if there are the maximum number of cursors in the view already.
- Selecting "New Cursor" in the context menu is now recorded correctly by the script recorder.
- The Digital Filtering dialog now initialises axes correctly. It could sometimes produce an incorrect display range for the data before.
- When a cursor is dropped on top of another the most recently moved cursor now remains on top.
- The "About Signal" option now displays the 1401 interface type (ISA, PCI or USB) being used.
- The Frame Comment dialog now comes up with the focus in the edit field.
- This version will work with the Micro1401 mk II.
- There are new import filters for European Data Format (.edf) and BIOPAC (.acq) files. The File menu Import option also now supports Dataquest A.R.T. format files from Data Sciences International. This format uses multiple data files for each sampling session; the file name is constant, the file extension indicates the channel and sequence number. Select one file and the import system will locate all files in the folder that match the file name.
- The "fast triggers" and "fast fixed interval" sampling modes have been added. These give minimal time between sweeps.
- Amplitude histograms are now available as a memory view type.
- Digital filtering has been added.
- An option to "count excluded frames" has been added to auto-averaging and leak subtraction.
- Inter-channel arithmetic has been added to the Modify Channel options.
- Monitor ROM revision level is now checked and reported in the About box.
- Signal now checks on start-up to see if there was a power failure during sampling and offers to recover any lost data.
- Optimising the display while sampling may now be deferred to the end of the sweep.
- A ChanSearch() command has been added.
- "Repolarisation %", "Slope percentage" and "turning point" are now search modes for active cursors.
- An expression may now be entered as an active cursor position.
- Enhanced metafile output no longer clips the image to too small a rectangle.
- "Standard Display" for an XY view no longer makes a space for a scroll bar at the base of the view.
- The frame step buttons will now be greyed out if there is no frame to step to.
- The Sound() command has been made to work with .wav files again.
- The SampleArtefactSet() command now correctly sets its time range.
- Keys attached to toolbar buttons by a script are disabled when a dialog is active. Where possible, the toolbar is greyed out when a modal dialog is active.
- Reducing the number of states on a system with a conditioner attached could sometimes cause a crash. This has now been fixed.
- If when using the auto-name facility you choose to sample a second file before saving the first, Signal no longer refuses to continue.
- The window title is now correctly set when using the auto-name facility for sampling.
- XY view limits no longer "creep" when the view is re-sized.
- The script recorder now records axis dragging in the correct units.
- Buttons on the toolbar will now be disabled from within a script when the allow% parameter in Toolbar() or Interact() is used to disable the corresponding menu.
- The Send Mail? option is no longer available in the File menu if no file is selected.
- Scrolling left while fully zoomed out no longer causes the scroll bar thumb to appear.
- Creating an empty XY view is now recorded correctly by the script recorder.
- Power1401's with very old monitor ROMs no longer cause Signal to complain that there are no ADC ports.
- Dragging a toolbar while sampling within a script could sometimes cause a crash. This has now been fixed.
- The ProgStatus() script command will now close a program handle if it finds the program is no longer there.
- The ToolbarSet() function will now take more information in the label$ to allow more hot-keys to be defined.
- The cursor for the active cursor dialog is now selected within the dialog rather than by the menu item.
- Active cursors may now search backwards by setting the start time of the search later than the end time.
- "Maximum excursion" replaces "Absolute max." as a search mode for active cursors. This mode has a base level from which the data is measured.
- The y-axis title is now saved and restored in an XY view.
- The period of a sinewave output no longer needs to be a multiple of the time resolution.
- The Print Screen? option will now work even if a view is maximised.
- Context menus have been extended to include several more options. It is now possible to place a cursor at a particular time, for example, by right clicking at the point where the cursor is wanted.
- The Cursor Mode dialog now hides all unused fields when static cursor mode is selected.
- The SampleOutClock() command now allows a clock interval as low as 10 microseconds for use with the Power1401. This command also has an extra parameter to synchronise pulse output with sampling and this is now documented.
- Stimulus pulse heights are now limited by the DAC scaling and not just 10000.
- Burst mode sampling with just a single channel on a Power1401 no longer causes an error.
- Cursor positions and label modes are now saved correctly when a file is closed.
- The WindowVisible() command could sometimes produce extra sets of buttons on the toolbar. This has now been fixed.
- The SampleStates() command no longer causes unreliable behaviour.
- File importing has been extended and improved.
- The number of ADC's and DAC's are now checked on newer 1401's.
- It is now possible to control editor settings for text and script files.
- Enhanced metafile output is now possible.
- You can place the channels in any order by clicking on a channel number and dragging the channel number to a new position. You drag multiple channels by selecting the channels to drag. The new script language command ChanOrder()supports this.
- You can make channels with a Y axis share the same display space by dragging channel numbers and dropping them on top of other channels.
- X and Y axes can now be used to shift and scale the data. Click and drag on the axes to use this new feature.
- You can change the space allocated to any channel. Hold down Shift and click the mouse between two channels. Keep holding down Shift and move the mouse to change the spacing between the channel and the one above. Hold down Ctrl and release Shift (after clicking) to squeeze/stretch all channels. Hold down Ctrl+Shift to squeeze/stretch only channels with y axes. This is supported by the ChanWeight() script command.
- ProgRun(), ProgStatus() and ProgKill() script commands have been added to allow other programs to be run from within a script.
- Access to the CED web site is now available directly from the Help menu.
- There is now a preference to prevent Signal from prompting to save unsaved memory and XY views.
- File import filters to read non-Signal files (see file menu).
- The SetAutoAv() script command now works with more than three parameters.
- The SetLeak() script command now always uses seconds as time units. Before it would use x-axis units.
- Leak subtraction now uses the "width" parameter to measure the stimulus during leak formation rather than just during the subtraction phase.
- HCursorNew() now places the cursor at the middle of the y axis in an XY view by default. Before it would place it at 0.
- Deleting an XY channel with the data points joined sometimes caused a crash. This has now been fixed.
- ReadStr() no longer treats numbers with leading zeros as base eight.
- System$() now recognises Windows 98.
- A hysteresis of more than half the full ADC range is now possible for peri-triggered sampling with an analogue trigger.
- The Preferences dialog is now a tabbed dialog.
- The Undo system now knows about many more things, for example: file view draw modes, channel selections, channel ordering, channel visibility, channel weights.
- There are now up to 10 horizontal and vertical cursors per view.
- The "Send Mail." option has been disabled for file views. CFS files are held open by Signal so cannot be copied by the e-mail system.
- Text copied from the help system no longer has text appended quoting the source.
- If a channel in the Trend Plot dialog is deleted then all channels with a higher channel number whose names have not been changed from the form "Channel n" will be renamed to "Channel n-1" to fill the gap left by the deleted channel.
- The CursorNew() script command now has an extra optional parameter to specify the number of the cursor to create.
- The Sound() command can now be used to play .WAV files.
- The maximum line width in an XY view is now 10.
- The default point size in an XY view is now 5. The maximum is now 100.
- The variables windows contents no longer jump to the top while stepping in the debugger.
- The text file save dialog now has the correct title.
- The external digital states part of the sample configuration dialog now redraws correctly after being partially covered.
- Drop down boxes in all dialogs are now less likely to need scrolling.
- The 1902 controller now allows for filters for frequencies bellow 0.5 Hz.
- Differentiation and integration now scale for the sample interval; previously it would just calculate simple sums or differences.
- Channel differentiation is now recorded correctly by the script recorder.
- Appending frames to a memory view works again.
- App(-1) now returns the full version number.
- The ShowFunc() script command is now documented in the help.
- It is no longer possible to delete frames from an on-line AutoAverage or Leak Subtraction memory view while sampling as this could cause undefined behaviour.
- A growing exponential no longer causes strange drawing effects when it becomes very large.
- SetTrend() and SetTrendChan() now allow the coefficient index to be specified when plotting fit coefficients.
- Recalling the AutoAverage process dialog while looking at a frame of the memory view other than Frame 1 will no longer crash the program.
- Doing a second AutoAverage on the end of an existing one no longer causes the existing averages to be further divided down by the number of sweeps they contain.
- Changing the size of an array inside a script function could cause a crash. This has now been fixed.
- Pressing a button on the toolbar created by a script while the text of the button is changed will now work.
- Optimising all visible channels now correctly optimises across the whole displayed x-range. Previously it would optimise from the first marker onwards.
- Rate displays now optimise correctly.
- Rectifying integer data which goes to negative full scale no longer causes scaling to become corrupted.
- The MarkEdit() and MarkTime() script commands now cause the relevant portion of the display to be invalidated.
- The Save As menu command now presents a dialog for all file types.
- Append buffer copy now works. Previously it would just append a copy of the frame.
- Appending multiple frames of integer data no longer causes scaling information to be lost.
- Includes the latest W2K and NT drivers.