Release Notes#

Mirrorcle Software Suite

Latest Version:

Last Updated on 01/11/2023

Release Date 2023-01-11

  • Python SDK

  • The Python SDK is now built and shipped with support for 64-bit Python 3.10 versions.

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

Release Date 2021-07-14

  • C++ SDK

  • Clarified STL namespace throughout MTIDataGenerator for stdlib.h and cstdlib 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

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.

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

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

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)

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 will see inclusion of multiple changes as listed above for the C++ SDK, at a later date

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 to use the new MTIDevice.GetAPIVersion command and match MTIDevice-Demo.cpp

  • Inherited all API changes from C++ SDK (see above)

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 update

  • Python SDK

  • Inherited all API changes from C++ SDK (see above)

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

  • supports larger mirrors with lower resonant frequencies

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

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

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

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

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

  • Fixed: Bug where app crashes if Settings opened with no device connected

  • LabView SDK

  • Updated: To to match C++ API

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()

Release Date: 2018-10-29

  • C++ SDK

  • Fixed: MTIDevice::ConnectDevice() force default SyncMode

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

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

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

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

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

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