MWorks 0.4.4 released

May 28, 2010 Posted by Christopher Stawarz


MWorks 0.4.4 is now available. For a summary of what’s new, see the release notes below.

Release Notes


  • Project name changed from “MonkeyWorks” to “MWorks” in recognition of its successful application to non-monkey experimental subjects
  • MWorks now requires Mac OS X 10.6 (Snow Leopard) and won’t run on earlier versions of Mac OS X
  • Source repositories now hosted on GitHub
  • Support files (configuration, plugins, Python and MATLAB interfaces, examples, development headers and libraries) are now stored in /Library/Application Support/MWorks
  • Data files and saved variables are now stored in the user’s home directory (in ~/Documents/MWorks)
  • Applications’ “About” dialogs now show both the release version number and a git commit ID
  • Installer now offers to back up existing installation; “Uninstall MWorks” script can remove new installation and restore old one


  • Streamlined IODevice base class. Old base class still available as LegacyIODevice.
  • Fixed bug that could cause client’s memory usage to steadily grow over time
  • Properly exit full-screen mode when releasing displays
  • Support both user-level and system-level MWorks config file
  • Fixed various memory bugs
  • Fix for external display flicker under OS X 10.6.3
  • Reduced excess state announcements during spinning transitions
  • FIXED: Selection variables were being assigned incorrect (and already used) codec codes
  • Handle mangled incoming codec data safely
  • Event-handling refactoring; new object hierarchy allows for less code duplication and more flexibility
  • Widespread naming and factoring changes
  • Name change: task_mode -> state_system_mode
  • Changes to ensure that setup variables are correctly loaded from the correct component registry
  • More intelligent parsing of report strings with variable substitutions
  • Greatly speeded up experiment parsing for very large experiments
  • Added basic deferred stimulus loading capabilities
  • Fixed a problem where the server would crash if a stimulus group name was not found
  • Fixed problem with alpha_multiplier not working
  • Better parser error handling
  • Fixed a problem where objects weren’t being looked up ever by their tag names – caused problems for replicated stimuli with replicate-wise tag names


  • Croak if more than one plugin tries to define a factory with the same XML signature
  • Tag console messages with time interval since server startup
  • “Scroll to bottom on message” now actually scrolls console window all the way to the bottom


  • Improved experiment file selector
  • List recent experiments from most to least recent
  • Don’t crash when “Load” is pressed with no experiment selected


  • Added deferred property to image stimuli
  • Added custom inspectors for Start/Stop IO and Report actions

Core Plugins

  • Improved performance of DriftingGratingStimulus (no longer spawns 60 threads per second)
  • MovieStimulus: Prevent crash when attempting to stop an already-stopped movie
  • FIXED: MSSWGamepad was reporting left trigger presses via the trigger_right variable (and vice versa)
  • NEW: Xcode project template for core plugin

Python Tools

  • NEW: Python bindings for data file indexer/reader
  • NEW: Python bridge client plugin


  • Client window and data tools now support both 32- and 64-bit MATLAB
  • Client window now displays MATLAB console output (contributed by Mark Histed)