{"id":17502695,"url":"https://github.com/sruffner/maestro5dev","last_synced_at":"2026-02-18T06:32:00.765Z","repository":{"id":258390412,"uuid":"860126514","full_name":"sruffner/maestro5dev","owner":"sruffner","description":"Maestro: Data Acquisition and Stimulus Control for Vision Neuroscience Research","archived":false,"fork":false,"pushed_at":"2024-12-28T20:20:29.000Z","size":77204,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-21T14:49:36.048Z","etag":null,"topics":["data-acquisition","experiment-control","neuroscience","windows"],"latest_commit_sha":null,"homepage":"https://sites.google.com/a/srscicomp.com/maestro/home","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sruffner.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-19T21:44:03.000Z","updated_at":"2025-09-18T11:21:40.000Z","dependencies_parsed_at":"2025-04-11T01:53:08.090Z","dependency_job_id":null,"html_url":"https://github.com/sruffner/maestro5dev","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.06896551724137934,"last_synced_commit":"0e5fd308f5ceb690d19ed5b6400d4c9c762c9685"},"previous_names":["sruffner/maestro5dev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sruffner/maestro5dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sruffner%2Fmaestro5dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sruffner%2Fmaestro5dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sruffner%2Fmaestro5dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sruffner%2Fmaestro5dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sruffner","download_url":"https://codeload.github.com/sruffner/maestro5dev/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sruffner%2Fmaestro5dev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29570333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T06:19:27.422Z","status":"ssl_error","status_checked_at":"2026-02-18T06:18:44.348Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-acquisition","experiment-control","neuroscience","windows"],"created_at":"2024-10-19T21:16:26.514Z","updated_at":"2026-02-18T06:32:00.742Z","avatar_url":"https://github.com/sruffner.png","language":"C++","readme":"# Maestro\n\n\u003cmark\u003eI have recently ported Maestro to run under Windows 11 Professional (update 23H2) and RTX64 4.5. The new version\nhas been released as Maestro 5.0.0. Releases 5.0.1 and 5.0.2 implemented a number of requested features; these new\nfeatures will not be backported to Maestro 4.x. The source code for the last 4.x release, Maestro 4.2.1, is available at\n`src/maestro4.2.1_codebase`.\u003c/mark\u003e\n\n\u003cmark\u003eNOTE: As of Jan 2025, I will no longer be actively developing **Maestro/RMVideo**. I have made this repo available for \nanyone in the neuroscience community that continues to use the application and might wish to fork the repo to adapt or \nmodify the program for their own purposes.\u003c/mark\u003e\n\n**Maestro** is a Windows® application developed in Stephen G. Lisberger's laboratory at Duke University to conduct a \nwide variety of behavioral and neurophysiological experiments focusing on smooth pursuit eye movements, the vestibular \nocular reflex (VOR), and certain other aspects of the visual system. It provides real-time data acquisition and stimulus \ncontrol to meet the particular research needs of the laboratory, and it is specifically tailored to the experimental \napparatus employed there.\n\n**Maestro** experiments record behavioral and neuronal responses to visual stimuli. Eye movement and neurophysiological\ndata are recorded at 1KHz. Some experimental protocols require the ability to adapt predefined target trajectories \nduring runtime in accordance with the subject’s behavioral response. The potential complexity of experiments that \nanimate multiple targets simultaneously, along with the need to adjust target trajectories during runtime, place a \npremium on efficient communications with the relevant hardware and demand sub-millisecond responsiveness.\n\n**Maestro** was developed to meet these operational demands. Over the years it has evolved from a distributed program \nwith components hosted on a UNIX workstation and two DOS PCs to an all-in-one Windows NT/2000/XP application running on \na single machine. In its latest form, the application is once again distributed in nature, consisting of three \nfunctional modules. The user defines, modifies, and executes experimental protocols via a graphical user interface \n(GUI). The GUI module, acting as the “master”, sends protocol information and issues a variety of commands to the \nexperiment control and hardware interface. The hardware controller is the time-intensive component of **Maestro** and\ndoes most of the heavy lifting: communication with PC peripheral devices, controlling frame-by-frame animation of \nvisual targets during a trial, recording and saving data streams, and providing feedback to the GUI in the form of \nstatus messages, data traces, and current eye and target positions. The controller is spawned by the GUI module at \nstartup and runs as a \"real-time\", kernel-level process within IntervalZero's RealTime Extension (RTX) to \nWindows. The two modules run on a Windows workstation and communicate over interprocess shared memory. A third \nfunctional module, the OpenGL application **RMVideo**, drives the primary visual stimulus display -- a large, \nhigh-performance CRT monitor. This module runs on a separate Linux workstation and communicates with the **Maestro** \nhardware controller over a private, dedicated Ethernet link.\n\n\n## User Guide\nAn [online user's guide](https://sites.google.com/a/srscicomp.com/maestro/home) provides a thorough introduction to the \nprogram, detailed information about system requirements and supported hardware, usage instructions, a complete version \nhistory, and a downloads page where you can get the latest release. The online guide also covers **RMVideo**, which is \n**Maestro**'s workhorse visual stimulus platform (running on a separate Linux workstation); **JMWork**, a Java application\nthat reads and edits **Maestro** data files; and several **Maestro**-related utilities for _Matlab_.\n\n## Installation\nInstalling **Maestro** itself is relatively easy using the self-extracting installer that is available for \n[download](https://sites.google.com/a/srscicomp.com/maestro/downloads) from the online guide. But there's a lot more\nto it than installing software to get a **Maestro** experiment rig up and running with **RMVideo** as the stimulus platform.\nSee the [Installation chapter](https://sites.google.com/a/srscicomp.com/maestro/installation) in the online guide for \nfull details on deploying **Maestro** to a Windows10/RTX64 workstation and **RMVideo** to a Linux 14.x or 18.x machine. \n\n## License\n**Maestro**, **RMVideo**, and the related _Matlab_ tools were created by [Scott Ruffner](mailto:sruffner@srscicomp.com). \nAll of the software is free to use under the terms of the MIT license.\n\n## Credits\n**Maestro** was developed with funding provided by the Stephen G. Lisberger laboratory in the Department of Neurobiology\nat Duke University. It evolved from Dr. Lisberger's UNIX-based **Cntrlx** application.\n\n## Repository Contents\n- `maestro5dev.sln` : The VS 2022 \"solution\" file for coding and building **Maestro** version 5.x.\n- `cxdriver`, `maestroGUI`: The **maestro5dev** solution contains two projects, one for developing/building `cxdriver.rtss` and\none for `maestro.exe`. The VS 2022 project files for these two projects are located in these folders. NOTE that the project\nfiles contain absolute paths, which are based on the fact that the solution folder (also the root folder for the local repo) is\nlocated at `C:\\maestro5dev`.\n- `external/lib` : Contains two files required for **Maestro**'s connection to the _Eyelink_ system from \n[SR Research](https://www.sr-research.com/). These were extracted from the latest version of the _Eyelink_ SDK, supporting\nWindows 10/11:\n  - `eyelink_core64.dll`: The DLL that must be included in the Maestro 5 installer.\n  - `eyelink_core64.lib`: The corresponding library that is required to build `maestro.exe`.\n- `external/includes/eyelink`: _Eyelink_-related header files required to build `maestro.exe`.\n- `external/includes/rmvideo/rmvideo_common.h` : A header file required to build both `maestro.exe` and **RMVideo**. It \ndefines structures and constants that implement the communication interface between **Maestro** and **RMVideo**.\n- `installer`: Files needed to build the self-extracting installer for **Maestro** version 5.x.\n- `sample_experiments`: Sample **Maestro** experiment documents (used for testing).\n- `src`: The root source folder, containing all source code, resource and other supporting files:\n  - `cxdriver`: Source code for building `cxdriver.rtss`, the hardware controller for **Maestro** that runs as a separate \n  RTX64 process. \n  - `gui`: Source code for building `maestro.exe`, the **Maestro** GUI in which user defines and runs experiments.\n  - `rmvideo`: Root folder containing all source code and other files needed to build **RMVideo**.\n    - `Ubuntu14`: For building **RMVideo** to run on Lubuntu 14.04. Includes a `Makefile`. The `versions` folder \n    contains \"readmes\" for the most recent and past versions, indicating **Maestro** version compatibility. See [online \n    guide for more information](https://sites.google.com/a/srscicomp.com/maestro/installation/how-to-install-rmvideo) on \n    building the `rmvideo` executable and configuring the Linux workstation appropriately.\n    - `Ubuntu18`: For building **RMVideo** to run on Lubuntu 18.04. This version has been tested successfully\n    but is not in use in any labs, AFAIK.\n    - `doc`: Contains some sample xorg.conf files and `msimcmds.txt`, a file containing a simulated **Maestro** command\n    sequence. It is used to test **RMVideo** without connecting to **Maestro**.\n    - `media_bup`: Contains some sample image and video files used to test **RMVideo**.\n  - `maestro4.2.1_codebase`: For reference, this contains the state of the **Maestro** codebase for Version 4.2.1 (supporting\n  Win10/RTX64 3.4), before I began porting the code to Windows 11/RTX64 4.5. In addition to the `cxdriver` and `gui` source \n  folders, it includes:\n    - `installer`: Files needed to build the self-extracting installer for **Maestro 4.x**.\n    - `visual_studio` : Project files for building `maestro.exe` and `cxdriver.rtss` for **Maestro 4.x** in Visual Studio 2017.\n  - `utilties_for_matlab`:\n    - `miscellaneous`, `rmvplaid`: _Matlab_ scripts implementing a number of **Maestro/RMVideo**-related tools. All of these\n    are [described](https://sites.google.com/a/srscicomp.com/maestro/data-analysis/supported-matlab-tools/other-functions)\n    in the online guide, but none are actively used AFAIK.\n    - `plexon`: _Matlab_ files implementing the `plexmon()` application, which monitors the event stream of the Plexon\n    Multiacquisition Processor (MAP) and passes timestamp data to a 'trial handler' function. See the `plexmon.m` file for\n    more details. The Plexon MAP has been superceded by the Omniplex system, and AFAIK `plexmon()` is no longer used.\n    - `readcxdata`: C source code files for building the _Matlab_ MEX functions \n    [_readcxdata()_](https://sites.google.com/a/srscicomp.com/maestro/data-analysis/supported-matlab-tools/readcxdata) and\n    [_editcxdata()_](https://sites.google.com/a/srscicomp.com/maestro/data-analysis/supported-matlab-tools/editcxdata). \n    The former is used to load a **Maestro** data file's contents into _Matlab_ for further analysis, while the latter can\n    be used to clear or edit analysis actions that are appended to the data file without altering the original recorded\n    data. See the `releases` directory for readmes on previous versions (the MEX functions were updated each time the\n    **Maestro** data file format changed), as well as instructions for building the MEX functions.\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsruffner%2Fmaestro5dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsruffner%2Fmaestro5dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsruffner%2Fmaestro5dev/lists"}