* Changes in NIMH MonkeyLogic 2 (Nov 8, 2019) + A new adapter, AnalogInputMonitor, is added for online analog input monitoring. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#AnalogInputMonitor + During the I/O Test, the voltage range of each General Input in the display can be adjusted. To change the range, click one General Input panel and then click the currenby Jaewon - News
You can use WaitThenHold but make its HoldTime 0. Then, when the WaitThenHold succeeds, run another scene that just shows the sample image without checking any behavior. Does it make sense?by Jaewon - Questions and Answers
Use the userloop function. https://monkeylogic.nimh.nih.gov/docs_CreatingTask.html#Userloop There are a few example tasks under the task\userloop directory, too.by Jaewon - Questions and Answers
I built the scene framework (timing script v2) for this kind of purpose. https://monkeylogic.nimh.nih.gov/docs_CreatingTask.html#RuntimeVersion2 Take a look at the following examples in the task directory. They are not exactly the same as what you described but do something similar. task\runtime v2\10 pursuit eye movement task\runtime v2\11 curve trace If you explain how you are going toby Jaewon - Questions and Answers
The "confirmation" on the command window just tells you that the software did what it was supposed to do and did not detect any error in doing it. It does not necessarily mean that you should be able to see some changes on your "neural recording monitor", since it is not a test for your hardware. It seems that you did some tests on your hardware, but you need to describe thby Jaewon - Questions and Answers
I added a property (OnsetTime) to ImageChanger so that you can tell when the "correct" image was presented. The OnsetTime (an n-by-1 vector) is NaN for the images not presented during the scene. I think the easiest way to retrieve the eye trace is to use get_analog_data(). correct_image = 10; onset = img.OnsetTime(correct_image); if isnan(onset) % The correct image was noby Jaewon - Questions and Answers
I should mention that there is an option to send out the TTL as a second analog output, IF you have two analog output channels AND program with the scene framework. I thought we might need a new adapter but the Stimulator adapter is already doing it. In that way, two pulses can start and stop exactly at the same time.by Jaewon - Questions and Answers
I cannot update the download packages at the moment. Please overwrite your mlconfig and mlread with the attached files and see if you can read the task.by Jaewon - Questions and Answers
Please see the following link. https://monkeylogic.nimh.nih.gov/docs_GettingStarted.html#FormatsSupported Also these commands may help. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#behaviorsummaryby Jaewon - Questions and Answers
I can examine why the conversion failed, if you send me the config file. I think you can use Private Messages.by Jaewon - Questions and Answers
Thank, Mitch. Please give me some time to take a look at the files.by Jaewon - Questions and Answers
Delete the configuration file of the task (*_cfg2.mat) and try again. Some fields in the MLConfig struct have changed to store information of two eye trackers. NIMH ML is supposed to convert the format seamlessly when loading old config files, but it doesn't seem to have gone well somehow.by Jaewon - Questions and Answers
toggleobject does not know how long the stimulations will last. If you call two toggleobjects in a row, you are just turning them off as soon as they are on. Try inserting "idle(2000);" or "pause(2);" between them and see if it works for you. The latter is more precise in timing but it won't update the screens for 2 s. If they are not precise enough, we can make an adaby Jaewon - Questions and Answers
There is not so much that I can tell without seeing the hardware configuration and the code. Maybe the port failed to reopen because it was still in use in the next trial. Try opening it again immediately after closing at the end of the timing script. If it doesn't have to be opened and closed every trial, you may want to initialize it in the alert_function. https://monkeylogic.nimh.nih.by Jaewon - Questions and Answers
It seems that this model is a standalone camera, not a kind that we call "webcams". Usually webcams have to be connected to computers to take pictures and cannot function independently. When connected, the computer should be able to control the webcam. If the connection is just for file transfer, it won't work. Can you record videos on Windows Camera app or do video-chatting witby Jaewon - Questions and Answers
Did you restart MATLAB after plugging in the webcams? If you did, what kind of webcams are they? Do you know their manufacturers and model names? Yes, the video is recorded, once a webcam is selected in the Non-DAQ device settings. The ITI period is not recorded, unless you check on the ITI recording on the main menu.by Jaewon - Questions and Answers
There are a few more things you can try. Windows keeps all previous monitor configurations and restores them when the same monitors are connected again. Sometimes this prevents you from starting a new, fresh configuration. So I would delete all previous configurations from the registry first, although it may not solve the problem. To do so, open regedit, go to \HKEY_LOCAL_MACHINE\SYSTEM\CurrentCoby Jaewon - Questions and Answers
Can you explain the details more? What is the purpose of getting the time during the trial? Eventmarker times usually become available after a trial via the TrialRecord structure.by Jaewon - Questions and Answers
You can set eventmarkers in each row of the image list. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#ImageChangerby Jaewon - Questions and Answers
You should check if your webcam really captures 30 frames per second first. Many webcams work at 15 fps, although they say 30 fps. Maybe they are using the interlaced mode. Each frame captured in NIMH ML has a timestamp, so you can compare it with your trial length. MAT compresses data. BHV2 doesn't. There is no time to compress video during experiments.by Jaewon - Questions and Answers
There is nothing in the error report that indicates NIMH ML. It is a problem of your mat file and MATLAB. You can see it for yourself with the following commands. who('-file','fixate_reward_userloop_cfg2.mat','test') load('fixate_reward_userloop_cfg2.mat')by Jaewon - Questions and Answers
I ran your task on a slow computer with a slow HDD over 6,000 trials but failed to replicate the problem you mentioned. I begin to think that you should look for the source of the problem somewhere else. Have you tried updating video codecs?by Jaewon - Questions and Answers
* Changes in NIMH MonkeyLogic 2 (Oct 4, 2019) + Now double/logical variables with 5 or less elements can be editable. - Two errors in mltaskobject.m due to mistyped object and property names are fixed. (Thanks to aboharbf from the ML forum) - An error that occurred when the userloop returned the timing filename as a cell scalar is fixed. (Thanks to Soo Hyun Park)by Jaewon - News
Did you test different resolutions and refresh rates? You can also try switching the main display or plugging in a third display. It seems related to how the graphics board controls multiple monitors, but I don't have a definitive answer yet.by Jaewon - Questions and Answers
What are the screen resolution of both of your monitors and the size of video memory of the computers? Have you tried increasing "Vsync spinlock", like to 2 or 3 msec? It shouldn't be a problem that your monitors support various refresh rates, but, if they support any sort of "Free Sync" technology, you may want to disable it.by Jaewon - Questions and Answers
Maybe I can consider it if I don't do mk research anymore, but now both NIH policy and my limited time do not allow me to do so.by Jaewon - Questions and Answers
You need to download the entire package, not just the adapter. Sorry for the inconvenience. I think I designed Sequential for too special cases previously so tried to make it work more generally this time.by Jaewon - Questions and Answers
A block change means that the set of available conditions is switched, so it is not an intention but just a natural consequence of the design that the 'error logic' is applied within a block. For example, Block 1 should run only Condition 1, 2, and 3 in the following setting, so, if you switch from Block 2 to Block 1, Condition 4, 5 or 6 cannot be repeated in the new block. Conditiby Jaewon - Questions and Answers
I don't know. I was told that I should use our NIH-based IT resource, to provide service in my working time, which is the reason that we moved the forum website to here. And I don't see why GitHub is better. I don't use Git.by Jaewon - Questions and Answers
Please explain why you think it is a bug and what is the correct behavior. From the information you posted, I don't see a particular problem. You set to play only one trial, whether it is correct or not. So a block change (to the same block, since you selected only one block) occurs after each trial, which increases the number of blocks completed. To make "repeat immediately" meby Jaewon - Questions and Answers