See the example in the ComplementaryWindow manual. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#ComplementaryWindow You just need to change SingleTarget to MultiTarget in the example. The scene will stop if there is no touch for wth.WaitTime (5000 ms).by Jaewon - Questions and Answers
You can play different sounds from different speakers. You need only one sound card. The number of speakers you can add is dependent on the sound card. If your card supports 5.1 channels, then you can add up to 6 speakers and, if it is a 7.1 channel one, up to 8. To send different sounds, just fill each channel with different sounds. For example, the following code will play a noise only frby Jaewon - Questions and Answers
Re: tobii sdk integration - 5 years agoAs I mentioned above, you need to let me borrow your eye tracker first so that I can test with it. You can use any existing MATLAB function in the ML timing script, so I don't understand why you can't do something you already have done in MATLAB.by Jaewon - Questions and Answers
I fixed it. Please install new packages. Sorry for the inconvenience.by Jaewon - Questions and Answers
* Changes in 2.2.2 (Oct 8, 2020) + The stability of sound playback in WASAPI Exclusive is improved. + A button for reloading the device list is added to the I/O submenu and the Other device settings menu. There is no need to restart NIMH ML when new hardware is plugged in. - The timestamp inserted in the formatted filename is determined when the run button is clicked. (Thaby Jaewon - News
You are right about the timestamp added to the filename. The time should be determined when the run button is clicked. To make it so, add one line of code to Line 816 (or somewhere around it) of monkeylogic.m like the following. Line 816: if ~datafilename_manually_typed, MLPath.DataFile = MLConfig.FormattedName; end Line 817: datafile = ; Line 818: if 2==exist(datafile,'fileby Jaewon - Questions and Answers
Plug them in and see if they show up in the menu. If they don't, they are not supported by NIMH ML. For cameras not supported, I do not know what initialization process is required and how long it takes. So it is entirely up to you how to control the cameras and sync timestamps. ----- See alert_function for placing the initialization code. https://monkeylogic.nimh.nih.gov/board/read.by Jaewon - Questions and Answers
It is the manual of your recording system that you should check. Find out what kind of input your recording system requires first. You shouldn't just try all strobe options. You did not mention what your recording system is. And this does not make any sense to me: "By lab legacy recommendation, I have strobes A/B wired together. "by Jaewon - Questions and Answers
* Update on Mar 28, 2025 When monkeylogic_cfg2.mat exists, certain I/O settings are always loaded from and saved to this file, starting with version 2.2.50 (March 28, 2025). Previously, this file was not read if a task-specific configuration file already exists, making it ineffective for updating existing config files with new hardware settings. A green bar displayed on the I/O menu indicatesby Jaewon - Tips
It is not that modifying the original code is going to cause huge problems, but, when you do it, you are responsible for your own modifications. That's only fair.by Jaewon - Questions and Answers
I don't see the relevance of "Total # of trials to run" to what you want to do. Please explain what you are trying to do.by Jaewon - Questions and Answers
If you interpret my words as an indication that the control screen and the subject screen should have the same refresh rate, it is a misunderstanding. Although NIMH ML renders the same graphic on both screens, only the subject screen is updated in synchrony with the refresh rate. The control screen is not. Therefore, they do not need to have the same refresh rate. The reason that your currentby Jaewon - Questions and Answers
data.AnalogData.Eye is transformed by the calibration and represented in degrees. When calibration is needed, the "raw data" from the eye tracker is usually meaningless numbers with an arbitrary origin, so there is no point of storing the raw data. I am not going to explain my code, just because it is not understood. I don't have time for that. You are on your own, if you want tby Jaewon - Questions and Answers
Sorry. That does not give me much to test with. Try a different video resolution or the latest NIMH ML.by Jaewon - Questions and Answers
This is the new version that supports Windows 10 and 64-bit MATLAB only. If you don't see new links in the "Download" page, please reload/refresh the page. * Changes in 2.2.1 (Aug 28, 2020) + Codes for old MATLAB versions and 32-bit libraries are removed for better performance. + Visual feedback is automatically disabled when touching the screen. + The minimum buby Jaewon - News
Thanks for letting me know this. It will be fixed soon.by Jaewon - Questions and Answers
MonkeyLogic Graphics Library (MGL), as well as NIMH DAQ Toolbox, is the backbone of NIMH ML and certainly able to present graphic objects on only one screen or both, by changing the device (or screen) number. However, NIMH ML is hard-coded to use both screens, so there is no way to present "TaskObjects" on the control screen only. It is up to you to call MGL functions directly to add yoby Jaewon - Questions and Answers
You cannot use a variable name in the function string which is a char array. Replace sdmMatrix with its value, like sprintf('SDMM_port(%d)',sdmMatrix), as shown in the example. Please describe every single detail, as I asked above, from the first time.by Jaewon - Questions and Answers
What is (***)? Did you see the example 2 in the MovieGraphic manual? Your question is already covered in it. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#MovieGraphicby Jaewon - Questions and Answers
If you want to change the width and height respectively with different ratios, it is a very costly operation, which NIMH ML does not support, and you may as well just create another movie with the size you want. If you want to increase/decrease both width and height in the same proportion (i.e., keep the aspect ratio), use the rescale_object function. https://monkeylogic.nimh.nih.gov/docs_Runby Jaewon - Questions and Answers
* Changes in NIMH MonkeyLogic 2 (Aug 25, 2020) + The IO Test screen is movable now. * Changes in NIMH MonkeyLogic 2 (Aug 17, 2020) + AudioSound, ImageChanger, ImageGraphic, MovieGraphic and Stimulator take functions (char arrays that contains a function name and its arguments) as input, instead of numeric matrices that those functions produce. This will help with the redby Jaewon - News
I uploaded the new packages. Now you can use a function string, instead of a matrix. See the manual for details. Reload the page in the web browser, if you don't see the updated contents. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#MovieGraphicby Jaewon - Questions and Answers
reward_dur is one of the things I inherited from the original ML. I also thought of removing the variable, but I learned one of the labs that contributed to the original ML was using it heavily, so, in respect for their initiative, I decided to keep it. I don't recommend removing it. Then you will have to make the change every time a new version comes out.by Jaewon - Questions and Answers
Thanks for the explanation. All public properties of adapters that can be assigned by users are saved in the data file to reconstruct initial conditions of scenes later. In your case, you assigned a 4-D matrix to MovieGraphic so the 4-D matrix was stored to the data file, which I believe is the reason of the large file size. If you have a function that generates the movie out of a few paramby Jaewon - Questions and Answers
Of course, I don't. You should explain every single detail so that I can understand what you did. Otherwise, it is just like you are asking me to guess what you ate for breakfast. You said you saved the dot positions in each frame. Then how can the size of the matrix be just 500*3 per trial? If you presented 100 dots for 3 s at 60 Hz, that alone requires 100*3*60*2 numbers each trial (sinby Jaewon - Questions and Answers
I agree that this default behavior of uigetfile is not convenient. Modify run_trial.m like the following. I will update the packages later. Line 764 of run_trial.m From: 'callback',sprintf('p = uigetfile; ... To: 'callback',sprintf('p = uigetfile(''*.*''); ...by Jaewon - Questions and Answers
Update your NIMH ML and you will be able to use GIF as a movie source. Use MOV, instead of PIC. https://monkeylogic.nimh.nih.gov/docs_TaskObjects.htmlby Jaewon - Questions and Answers
You are mistaken. The error occurred because you did something wrong with create_scene(), not because you set the position [0 0]. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#create_sceneby Jaewon - Questions and Answers
The error message was suppressed. Try the example task in the "task\runtime v1\9 editable demo" directory. If it works, you might type something wrong.by Jaewon - Questions and Answers
Animated GIFs are not supported. Make it as a movie. ImageGraphic is not doing anything in your script. You may as well remove it.by Jaewon - Questions and Answers