Release Notes#
Mirrorcle Software Suite
Latest Version: 11.0.4.0b
Last Updated on 01/11/2023
11.0.4.0b#
Release Date 2023-01-11
Python SDK
The Python SDK is now built and shipped with support for 64-bit Python 3.10 versions.
11.0.4.0#
Release Date 2022-01-14
MirrorcleDraw
Fixed bug causing the Animation Time scrollbar to be positioned incorrectly when changing sample rates
Fixed bug where the Animation Time scrollbar bounds did not display full precision (steps of 0.5s are allowed) and were not updated correctly
MTICamera-App
UI improvements to several demos
Fixed issue causing crashing when switching between Person Detection Demo and Bouncing Lines Demo
C++ SDK
MTIDevice::GetPhotoDetectorValue has been removed from the API. This deprecated command no longer has function in commmunication with USB MEMS Controllers, and users of DEMO-01 and/or the Laser Tracking Bundle should continue to use GetAnalogInputValue, GetAnalogInputBuffer, and GetAnalogInputStream
Linux SDK
Fixed issue causing pre-built executables in the SDK to have linking errors. Pre-built Debug/Release folder is no longer included in the Linux SDK delivery. Users should now build the Linux SDK by following the Linux Quickstart Guide: Compiling the Linux SDK Examples
Decreased example project CMake minimum requirement from 3.10 to 3.1 and require CMAKE_CXX_STANDARD 11
11.0.3.1#
Release Date 2021-07-14
C++ SDK
Clarified STL namespace throughout MTIDataGenerator for
stdlib.h
andcstdlib
conflicting functions for improved compatibility with Linux
Linux SDK
Fixed bug affecting behavior of MTIDataGenerator functions: AffineTransformData, InitProjectiveTransformMatrix, ProjectiveTransformData, InitRadialTransformMult, and TransformData
Fixed bug preventing offsetting or otherwise transforming the scan in MTILinearRaster application
11.0.3.0#
Release Date 2021-06-30
MirrorcleDraw
Fixed bug causing MirrorcleDraw slideshow animation to not use atime
Fixed bug causing Unicode (UTF) characters to not display correctly within the window
Fixed FreqMin setting (mirrorcledraw.ini), FreqMin parameter is now applied immediately to frequency sliders
MirrorcleShow
Added color entry option within the MShow file to allow color transitions for RGB
Added “number of substeps” entry option within the MShow file as an alternative to substeps by increment
C++ SDK (Windows and Linux)
Fixed bug within MTIDataGenerator::SetupSoftwareFilter preventing single channel filtering
Improved safety and encapsulation of SyMPL 3D Lidar units from standard Mirrorcle Software Suite connections. Applications built from MTIDevice will no longer connect to SyMPL 3D Lidar devices. Applications built from MTILidar will no longer list standard MEMS Controllers.
Improved COM port restoration following unsuccessful connects.
Added increased device and laser safety to MTIDevice::SaveToFlash. New approach shuts off digital output and reduces waveform amplitudes during the flash memory writing which disrupts normal output sampling.
Python SDK
Added alternate build of the Python SDK with support for 64-bit Python 3.7 versions
Inherited all API improvements from C++ SDK (see full list above).
Matlab SDK
Added new demo, MTIDevice_Software_Filter_Example.m
Improved safety and encapsulation of SyMPL 3D Lidar units from standard Matlab SDK connections. The Matlab SDK will no longer connect to SyMPL 3D Lidar devices.
Improved COM port restoration following unsuccessful connects which previously required Matlab restart.
11.0.2.0#
Release Date 2021-01-14
MirrorcleDraw
Fixed bug preventing mtidevice.ini from correctly applying the RGBColor parameter to the data
MirrorcleShow
Significantly improved the UI
C++ SDK (Windows and Linux)
Added RGBJet coloring to non-RGB ILDA files in RGBExamples.cpp
Fixed BaudRate used in MTIDevice::GetAvailableDevices
Fixed bug in MTIDevice::SetRGBData(unsigned int rgbColor, unsigned int numSamples) that prevented certain colors from being applied to the data
11.0.1.0#
Major Release - C++ API update to C++11/C++14
Release Date 2020-11-27
The 11.0 release is intended to allow support for C++11 and C++14 core features (previously limited to C++98). Much of the APIs functionality will remain the same, but users upgrading from 10.x versions to 11.0 should carefully read the release notes to ensure compatibility.
MirrorcleDraw
Fixed bug in Vector Graphics > Lissajous starting phase values
Fixed - allow Scan Patterns > Raster and Imaging to choose odd number of lines
MirrorcleLinearRaster
Added data stream plotting to allow users to visualize the data stream that was sent to the Controller
Changed - keep driver enabled during session
MirrorcleDemo
Added LissajousDemo demonstrating lissajous waveforms
C++ SDK (Windows and Linux)
Transitioned from C++98 -> C++11/C++14. On Windows, this requires usage of Visual C++ 2017 v141 compiler toolset.
Added HersheyTextDemo - demonstrates usage of MTIDataGenerator’s text to content generation features.
Added HersheyTextDemoRGB - a full-color RGB variant of MTIDevice-Demo HersheyTextDemo for users of RGB Playzer
Added ModulationType::ModulationAmplUnipolar for use with MTIDatGenerator::LissajousCurve
Added MTI_DEGTORAD and MTI_RADTODEG to MTIDefinitions.h macros for convenience
Added MTIDataGenerator::LissajousWaveform which conforms to literal interpretation of X/Y channel frequencies as opposed to MTIDataGenerator::LissajousCurve
Added MTIDataGeneartor::LissajousCurve function overload for differing xAmplitude, yAmplitude
Changed usage of OpenCV waitKey: when accepting return value, utilize cvWaitKey in place of waitKey.
Changed AnalogInputToOutputDemo, adding more detailed comments and fixing an issue where laser was not toggled on during demo
Changed AnalogInputToOutputDemo, added option to flash settings to the Controller
Changed ScanningDemo to stop after 8 patterns
Changed RQWaveform - replaced float numPeriods param with unsigned int type.
Changed MTIDataGenerator::LinearRasterPattern digital output number (M) bit definitions - bit 3 does not/will not reflect any features of the scan pattern
Fixed digital output (M) value off by one sample with respect to X,Y in SendDataStream
Fixed MTIDataGenerator::LinearRasterPattern discontinuity issues in unidirectional and bidirectional scans causing improper connection segments
Linux SDK
Added hershey.dat file for use with generating text data
Removed source code for MTILinearRaster from Mirrorcle Sofware Suite for Linux C++ SDK
10.7.3.0#
Highlight: Redefined and improved DOut for digital triggering/synchronization within LinearRasterPattern for raster scanning applications
Release Date 2020-10-22
MirrorcleDraw
Fixed erratic behavior of spirograph cycles and stopped supporting negative parameter values
MirrorcleListDevices
MirrorcleDemo
MTIDevice-Demo
UI improvements, primarily in tracking/imaging sections
C++ SDK
Redefined DOut during LinearRasterPattern and LinearRasterPatternImaging - now bit 3 is high during raster and low during retrace at end of frame
LinearRasterPattern and LinearRasterPatternImaging changed upper bits of M for MONO8 brightness while keeping lower bits in compliance with standard LinearRasterPattern M bit-mapping.
Consolidated SelectIODevice in MTIDevice-Demo and increased buffer size
TrackingExamples: increased the M value used to mark “ON” status from 1 -> 255
Linux SDK
Mirrorcle Software Suite for Linux will no longer ship with prebuilt bin folder in the SDK-Cpp folder (the bin folder for all applications remains unaltered)
10.7.2.0#
Release Date 2020-08-05
MirrorcleDraw
Fixed issue in MirrorcleDraw tracking/imaging feature where multiple imaging windows would open unpredictably
Fixed MirrorcleDraw tracking/imaging memory leak
C++ SDK
Removed MTIDevice::GetAPIVersion due to sensitivity to MSVC toolset version and frequent imcompatibility with C runtimes
Improved the performance of SinglePointTracking_Raster and removed issue where raster pattern frequency was several factors too high
Added source code for MultiPointTracking as previously seen only in the MirrorcleDemo application
Added GUI window displays for DataMode7Raster and SinglePointTracking_Raster for better visualization of tracking
Matlab SDK
The Matlab SDK will not see a removal of MTIDevice.GetAPIVersion as it is not disposed to the same issues as in C++/Python
Python SDK
Added support for functions required for RGB Playzer such as MTIDevice.SetRGBData and new function MTIDevice.SetRGBData_array (required for forwarding NumPy arrays to C++)
Inherited all API changes from C++ SDK, including the removal of MTIDevice.GetAPIVersion
Python SDK 10.7.2.0b will see inclusion of multiple TrackingExamples.py changes as listed above for the C++ SDK, at a later date
10.7.1.0#
Release Date 2020-06-19
C++ SDK
Fixed memory leaks within MTIDataGenerator and increased memory performance
Removed MTIDataGenerator::GetAPIVersion method which was redundant to MTIDevice::GetAPIVersion
Python SDK
Updated MTIDevice-Demo.py to use the new MTIDevice.GetAPIVersion command and match MTIDevice-Demo.cpp
Inherited all API changes from C++ SDK (see above)
10.7.0.0#
Highlight: SyMPL 3D Lidar support and broad memory performance improvements
Release Date 2020-06-15
C++ SDK
Added MTIDevice::GetAPIVersion method which returns std::string with API version number in format “X.X.X.X”
Added MTIDataGenerator::GetAPIVersion method which returns std::string with API version number in format “X.X.X.X”
Added MTIDataMode::Sample_And_SyMPL1_Stream for SyMPL 3D LiDAR and support the MTILidar API
Added compatibility with both analog-input and digital-input SyMPL 3D LiDAR devices within MTIDataMode::Sample_And_SyMPL1_Stream
Added overloads to all params calls that return pointers in favor of providing a params object to the function to be modified in-place
Improved Linux compatibility
Revised all examples to implement preferred method of params calls
Fixed multiple memory leaks throughout the API and increased memory performance
Matlab SDK
Added MTIDevice.GetAPIVersion method which returns a string with API version number in format “X.X.X.X”
Added a call to MTIDevice.GetAPIVersion in MTIDevice_Demo.m to demonstrate use of the new function
LabView SDK
The LabView SDK did not receive the 10.7.0.0 update
Python SDK
Inherited all API changes from C++ SDK (see above)
10.6.0.0#
Highlight: API improvements/enhancements for tracking/imaging, Playzer, and applications using analog input streaming
Release Date 2019-12-17
MirrorcleDraw
“Enable Digital Output / Laser” disabled by default
C++ SDK
Added private function CheckConnectDevice() that improves GetAvailableDevices and ConnectDevice calls when a Controller is stuck in a streaming MTIDataMode
Added MTIDevice::LaserBoostEnable for Playzer Modules to boost laser power (not compatible with MZDK Controllers)
Removed Get/SetRGBDriverParameters from MTIDevice
MTIDataGenerator::AllocInterpData called within MTIDataGenerator::InterpolateDataTrapezoidal and MTIDataGenerator::InterpolateDataLinear to allow individual function calls
TrackingExamples.cpp now supports larger mirrors with lower resonant frequencies
Matlab SDK
Added private function CheckConnectDevice() that improves GetAvailableDevices and ConnectDevice calls when a Controller is stuck in a streaming MTIDataMode
MirrorcleTrack.m now supports larger mirrors with lower resonant frequencies
Python SDK
Inherited all API changes from C++ SDK (see above)
Added support for MTIDataGenerator::FilterData
Added support for MTIDataGenerator::IldaDataStream
TrackingExamples.py supports larger mirrors with lower resonant frequencies
10.5.0.0#
Highlight: Greatly improved performance options for applications with strict speed requirements
Release Date 2019-07-12
MirrorcleDraw
Added Spiral Time definition box to Vector Graphics > Scan Patterns > Spiral mode. This fixes the lost functionality of this mode.
Fixed stacking of filters when disconnecting/reconnecting devices
Fixed “Animation Time” slider behavior when auto-adjusting based on the Sample Rate
C++ SDK
Added confirmOnComplete flag to MTIDevice::StartDataStream command to free the thread in specific applications
Updated and reorganized documentation for TrackingExamples.cpp (laser tracking bundle)
Fixed memory leak in MTIDataGenerator::InterpolateDataOptimized
Fixed memory leak in MTIDataGenerator::OptimizeKeypoints
Matlab SDK
Added confirmOnComplete flag to MTIDevice.StartDataStream command to free the thread in specific applications
MirrorcleShow
Fixed memory leak in MirrorcleShow for long sessions
10.4.0.2#
Highlight: Improved optimization and decimation for vector display applications
Release date: 2019-03-08
MirrorcleDraw
Added RGBGradientJet and RGBGradientCustom to MirrorcleDraw - enabled via the mirrorcledraw.ini
Improved Sketching, Import File, Hershey/TTF Text, and Clock display modes with the new OptimizeKeypoints function for higher performance
MirrorcleShow
Fixed issue where single frame content would be skipped
Fixed memory leak
C++ SDK
Added new parameter
unsigned int targetNumKeyPoints
to MTIDataGenerator::OptimizeKeypoints()Added lossy compression algorithm to OptimizeKeypoints which reduces the number of keypoints to the targetNumKeyPoints
Fixed memory leak in MTIDataGenerator::LoadIldaFile()
Fixed the error in returned samples from InterpolateDataOptimized being much more than requested
Linux SDK
Updated RGBExamples.cpp for Linux compatibility
Python SDK
Added MTIDataFormat to mtidevice module
Added complete Linux support
Fixed tabs to spaces according to PEP-0008
Fixed folder structure for better Linux system support
10.4.0.1#
Release Date: 2018-12-21
MirrorcleDraw
Added: Autodetect RGB Scan Modules and enable appropriate DataFormat for output to RGB Controllers
Added: Gradient color feature: set two different color values in mirrorcledraw.ini for gradient color output to RGB Controllers
Fixed: Import ILDA File - detecting RGB vs Monochrome improved.
C++ SDK
Added: SetRGBDriverParameters to manipulate the gain and offset of the R/G/B laser diodes
Added: SetRGBGamma to manipulate the gamma of the R/G/B laser diodes
Added: InterpolateDataOptimized for MTIDataGenerator::GenerateClockData
Fixed: Removed unnecessary x64 folder in the SDK-Cpp folder
10.4.0.0#
Highlight: Vector display optimization and RGB Playzer compatibility
Release Date: 2018-12-06
MirrorcleDraw
Added: New interpolation algorithm for optimizing challenging, high-bandwidth content for Mirrorcle MEMS Mirrors
Added: “Enable Digital Output” checkbox to manage digital output from the Controller
Added: “Disconnect device” option in the list devices drop down list.
Added: Optimized font lettering for the characters “o”, “O”, and “0”
Added: RGB compatibility for Controllers with RGB Firmware + RGB Scan Module
Added: “Flash” checkbox now reflects the state of the Controller’s BootSetting
Fixed: Allow for offsetting sketches drawn in Sketching mode
Fixed: Memory overflow bug when importing abnormally large ILDA files
Fixed: Import ILDA dialogue displaying incorrect total number of points
Fixed: Animation time slider starting in wrong position and not allowing full range of animation times
Fixed: Sample rate changing when IIR Filter enabled
Fixed: GUI misalignment
MirrorcleListDevices
Added: Allow for information about devices at COM port numbers greater than COM65
Added: List the specified device’s DataFormat
C++ SDK
Added: MTIDataGenerator::InterpolateDataOptimized() algorithm to optimize and interpolate user’s keypoints for Mirrorcle MEMS
Added: RGBExamples.cpp to the SDK containing examples of how to interact with a Controller with RGB firmware
Added: MTIDevice::GoToDevicePosition() now allows for step time of 0ms for fastest step (note: this parameter is potentially dangerous)
Added: DataFormat to MTIDeviceParams. DataFormat allows specification of the format of data that will be sent by SendDataStream to the Controller
Added: MTIDevice::SetRGBData and MTIDevice::GetRGBData for Controllers with RGB firmware
Added: More detailed and descriptive documentation for API functions in MTIDevice.h
Added: More detailed function descriptions in MTIDevice-Demo
Fixed: Misleading comment for MTIDevice::GetIStop()
Matlab SDK
Added: RGB functionality for Controllers with RGB firmware + RGB Scan Module
Added: MTIDevice_ListDevices.m demo to demonstrate MTIDevice.GetAvailableDevice and MTIDevice.ListAvailableDevices
Added: RGB examples in MTIDevice_Demo to demonstrate the use of new RGB Controller API commands
Added: MTIDevice.GoToDevicePosition() now allows for step time of 0ms for fastest step (note: this parameter is potentially dangerous)
Added: Additional example in MTIDevice_GoToPosition.m to demonstrate updated GoToDevicePosition
Fixed: SendDataStream crash when delaySamples = numSamples
Python SDK
Added: Definition/summary to every demo in MTIDevice-Demo
Added: All functions and changes implemented in the C++ SDK
Fixed: ArrowKeysDemo in MTIDevice-Demo
LabView SDK
Added: MTIConnectDeviceAuto() to connect to the first available Controller at a COM port
Added: MTIConnectDeviceSocket() to connect to a specific MTISerialIO socket
Added: More extensive function comments in MTILabViewAPI.h
Added: DataFormat functionality to specify the format of data sent to the Controller via SendDataStream
Added: MTISetRGBData, MTISetRGBDataMonochrome, and MTIGetRGBData for Controllers with RGB firmware
Fixed: MTIGetMStop returning GetIStop()
Fixed: MTIGetMStop returning unsigned int instead of unsigned char
10.3.4.0#
Highlight: Announcing the Python SDK
Release Date: 2018-10-29
Python SDK
Announced new API language - Python
Mirrorcle Software Suite
Added: Built-in software suite updating functionality. In MirrorcleDraw > Help > Check for Updates
MirrorcleDraw
Added: Check for Updates option in Help menu
Added: DOutScale editbox for real-time digital output manipulation when AdvancedMenu is enabled
Added: Customizable content drawing in mirrorcledraw.ini: draw keylines, keypoints, samplelines, and/or samplepoints
Updated: Colors and sizes of content drawing
C++ SDK
Added: MTIDevice::ConnectDevice() overload where 0 arguments autoconnects to first available COM port
Updated: Cleaned up and revised TrackingExamples.cpp
Updated and Fixed: MTIDevice.h comments/documentation
Fixed: MTIDevice-Demo Follow WASD keys - support upper/lower case WASD
Matlab SDK
Added: MTIDevice.ConnectDevice() autoconnect when 0 arguments are passed
Added: MTIDevice.ImportPointFile(filename) to import x/y/m points and/or sample rate from file to Matlab environment
Updated: All included demos’ code and comments
Fixed: MTIDevice.IsDeviceResponding() to return accurate responses
Fixed: Bug in setting the DataRotation param
Android Development Kit
Added: DOutScale edit field in MirrorcleDraw app settings menu
Updated: Java API to match C++ API 10.3.4.0
Fixed: Bug where app crashes if Settings opened with no device connected
LabView SDK
Updated: To to match C++ API 10.3.4.0
10.3.3.2#
Post release fixes
Release Date: 2018-10-01
MirrorcleDraw
“No devices found”: Fixed text formatting and Ok/Cancel dialog box
C++ SDK
Fixed: MTIDevice::IsDeviceConnected() returning reliable true/false state
Fixed: Handling MTIDevice object upon DisconnectDevice()
10.3.3.1#
Release Date: 2018-10-29
C++ SDK
Fixed: MTIDevice::ConnectDevice() force default SyncMode
10.3.3.0#
Release Date: 2018-09-25
MirrorcleDraw
Added: MessageBox to notify save flash checkbox callback
Added: “Search for available devices” if none are initially found
Updated: Links in MirrorcleDraw
C++ SDK
Updated: Comments in MTIDevice-Demo
Fixed: Redundant and misleading code in MTIDevice-Demo
MirrorcleLinearRaster
Fixed: Bug causing MirrorcleLinearRaster to close immediately
10.3.2.1#
Release Date: 2018-08-06
MirrorcleDraw
Fixed: Misleading refresh rate on ILDA Sample/User Sample import
Fixed: Missing support for ILDA type 1 files
Fixed: Missing support for ILDAs with Color Tables
10.3.2.0#
Release Date: 2018-08-02
MirrorcleDraw
Added: Drawing hardware filter on “Show Filtered” checkbox in MirrorcleView
Added: Message box on ILDA Keypoint import with maximum points and total points in loaded file
Added: Lower-end engine support for RGB ILDA files and RGB samples
Added: Parsing for ILDA Type 5 files
C++ SDK
Added: More detail to AnalogInputToOutputDemo in C++ SDK
Fixed: Grammatical errors in SDK examples
Fixed: Printing in ScanningDemo in C++ SDK
C++ SDK (Linux Add-on)
Added: Write polling and timeout for Linux for Bluetooth
10.3.1.0#
Highlight: Improved x64 Support
Release Date: 2018-06-25
C++ SDK
Added: x64 MirrorcleDraw build configuration
Changed: Updated the documentation for building to x64 platforms (see slides 9 and 10 in SDK for C++ User Guide)
Fixed: SDK-Cpp Reorganized DLLs into secluded x86/x64 folders
Fixed: SDK-Cpp x64 build configurations
10.3.0.1#
Release Date: 2018-06-15
MirrorcleDraw
Added: Sample rate backend control
Fixed: Sample point memory pre-allocation is now a fixed size, and sufficiently large
10.3.0.0#
Highlight: Unicode support for vector graphics display content
Release Date: 2018-05-31
MirrorcleDraw
Added: Solution-wide support for unicode characters
Added: Drawing characters from unicode-supported language via TrueType Font
Fixed: Fixed uncontrolled incoming VBias and VDifferenceMax such that VDifferenceMax should never exceed VBias*2
C++ SDK (Linux Add-on)
Fixed: Baud rate problem for Linux platforms