Version 2.7

Version 2.7.0, released 13 Jul 2011

***** This is the last version of Maestro to be supported on Windows XP and RTX 6.5.1. *****

    • Bug fix: The implementation of the XYScope Oriented Bar/Line target was incorrect as it failed to take into account a non-unity aspect ratio (screen width not equal to screen height). The rotation of the bar was done in the device coordinates, where the grid is 65536x65536, regardless of the display geometry. With the fix, the rotation is now done in screen coordinates in mm, then the display geometry is used to convert screen coordinates to pixels. You can calculate the actual drift axis angle θ' prior to the fix using this formula: θ' = atan2(H, -W*tanθ) - π/2, where W and H are the display width and height in mm, and θ is the requested drift axis angle in the target's definition.

    • Bug fix: The implementation of target pattern motion for the XYScope Noisy Dots (Direction) and Noisy Dots (Speed) targets was incorrect on two accounts: (1) Polar coordinate transformation was done in device pixels instead of screen coordinates, failing to account for a non-unity aspect ratio. (2) Conversion from polar coordinates back to Cartesian is done with scaled integer arithmetic in the XYScope controller, and that results in an integer truncation error that is quite significant at lower pattern velocities. To fix: The per-frame pattern displacement vector is sent in polar screen coordinates, with amplitude in scaled millimeters. The transformation back to Cartesian coordinates is thus done in screen coordinates onboard the XYScope controller, and these are converted to device pixels using the display geometry. All of the calculations use scaled integer arithmetic, and now the controller keeps track of the integer truncation error in both the x- and y-coordinate of each dot's position (scaled by 16), and adds that error back in during the next update to maintain precision of motion.

    • For XYScope targets possessing a dot pattern distinct from the target window, pattern velocity is now specified with respect to the target window instead of the XYScope display screen. This brings the XYScope random-dot pattern targets into line with RMVideo's Random-Dot Patch target, which has always behaved this way. Velocity stabilization of these XYScope targets is simpler as well: we just adjust the target window displacement on each frame update by the change in eye position during that frame. Before this change, we had to adjust both the target window and target pattern per-frame displacement vectors -- which, in fact, was problematic for the Noisy Dots target types, leading to the discovery of the bugs described above.

      • IMPORTANT: This change has an impact on trials created prior to Maestro 2.7.0. If your existing trials use any XYScope target other than Optical Flow Field or Spot/RectDot Array, those trials will behave differently in Maestro 2.7.0 because pattern velocity is now specified with respect to the target window rather than the display. You will need to adjust such trials prior to running them in Maestro 2.7.0.

    • Introduced a "sliding-window average" of horizontal and vertical eye position to smooth out the effects of signal noise on the velocity stabilization feature in Trial mode. User can specify the length of the sliding window in milliseconds in the Other Params tab on the mode control panel. Allowed range is 1 (no averaging) to 20 ms. The sliding window's width is stored in the trial data file. Data file version = 18.

    • Updates to readcxdata(): (1) Updated to handle new data file version = 18. (2) Accounts for the "sliding-window average" when calculating trial target trajectories with velocity stabilization in effect. (3) New feature - Emulation of individual dot trajectories for the XYScope Noisy Dots (Direction) and Noisy Dots (Speed) targets. For files generated prior to Maestro 2.7.0, emulates the erroneous implementation of these targets that was in use at the time. For files generated by Maestro 2.7.0 or later versions, emulates the improved implementation described above. Added two new fields to the output structure to hold the per-frame, per-dot velocities, xynoisy and xynoisytimes. (4) Tweaked the code used to compensate computed trial target trajectories when velocity stablization is in effect. In prior versions, recorded eye velocity (HEVEL, VEVEL) was used to adjust the velocity of non-video targets. We no longer do this, since Maestro never did it that way. In addition, in order to emulate individual dot trajectories for the XYScope Noisy Dots targets accurately, we needed to take into account certain adjustments to the pattern motion vector that Maestro (pre 2.7.0) made at segment boundaries and during velocity stablization.