I made an example by modifying the "task\runtime v2\8 random dot motion" task.by Jaewon - Questions and Answers
It is not an error. Just click the RUN button. It is written in the manual when "user-defined" is displayed. https://monkeylogic.nimh.nih.gov/docs_MainMenu.html#ConditionsFileby Jaewon - Questions and Answers
It may create a huge data file, as we discussed before. You can either inherit RandomDotMotion or copy its mfile and make your own adapter that does what you want. Add a new property to the adapter and store dot positions in it. Then read the property in the timing script after run_scene() ends.by Jaewon - Questions and Answers
I don't understand what you are talking about. Are you saying that your Arduino sends out information at a high frequency? How high is the high frequency? If you want to read out a few numbers from Arduino, you can install the Arduino support package of MATLAB and do it yourself. But, if signals should be sampled at regular intervals, you need NI boards regardless of the sample rate. httby Jaewon - Questions and Answers
* Changes in 2.2.4 (Dec 15, 2020) + Now the window can be opened from the Pause menu as well as the main menu. + High Frequency and Voice are added to the window. + If "recording signals during ITI" is selected in the main menu, a warning message is displayed while the task is paused, to indicate that data acquisition is still in progress in the background.by Jaewon - News
A codec is a piece of software written to implement a particular compression algorithm, so there can be multiple codecs that work for one algorithm and, of course, their performance is different. Try a different codec if the loading speed is too slow.by Jaewon - Questions and Answers
I am glad that you figured it out. AVI, MKV, MP4, etc. are just container formats. To decode the contents in the container, you still need codecs. So, for encoding, you should choose a codec already installed in the target computer. Matching codecs is an issue in any video playback. Back in the old days, you could easily test the codec compatibility by playing the video on the target computer.by Jaewon - Questions and Answers
TTL is for output. You can use either Button or General Input. Button is for digital input and sampled based on a software clock. General Input is for analog input and uses a hardware clock in the NI board. They are both sampled at 1 kHz. If 1 kHz is not fast enough, you can try High Frequency.by Jaewon - Questions and Answers
See this manual page. https://monkeylogic.nimh.nih.gov/docs_MainMenu.html#DAQSettingsby Jaewon - Questions and Answers
You need many digital lines sufficient enough to represent the code as binary digits. For example, at least 8 digital lines are required to send 170, since 170 is 10101010b. If you have less than 8 lines, the digits on the most significant bit side are ignored. All lines are supposed to be read together when the strobe bit is sent. Look up the manual of your recording system and let me know ifby Jaewon - Questions and Answers
The hotkey is executed asynchronously to the rest of the timing script. Putting the if statement after the hotkey function does not make it executed by the key. Provided that the if statement is already evaluated in the current trial, you will have to wait until the next trial for the new value to make an effect. Anything is possible if you program it right.by Jaewon - Questions and Answers
I don't understand what you are trying to do. Did you make the if statement called by the hotkey or not? If you just put it in the timing script, it is executed when it is executed. If you want to edit as the editable does, use the editable.by Jaewon - Questions and Answers
https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#hotkeyby Jaewon - Questions and Answers
Create two scenes; one with one stimulus and SingleTarget; the other with two stimuli and MultiTarget. Then run only one of them, depending on your need.by Jaewon - Questions and Answers
If you have any solution/suggestion that is not listed in the manual already, please let me know. https://monkeylogic.nimh.nih.gov/docs_MonitorSetup.html#Troubleshootingby Jaewon - Questions and Answers
Just calculate degrees back from the pixel size. degrees = pixels / Screen.PixelsPerDegree; Regarding to the Screen object, see this post. https://monkeylogic.nimh.nih.gov/board/read.php?2,13,13#msg-13by Jaewon - Questions and Answers
There is something you are missing. The scene framework evaluates samples frame by frame, not every millisecond. If you want to trigger something, for example, on the start of a saccade, you need to program in the style of Timing Script v1. https://monkeylogic.nimh.nih.gov/docs_CreatingTask.html#RuntimeVersion2_Background To get approximations that you described, you can retrieve most recentby Jaewon - Questions and Answers
Until we learn how to use magic, we have to code, to display something as we want. The complexity of coding is dependent on the timing script version. v2 is probably easier.by Jaewon - Questions and Answers
Create PIC TaskObjects from the png images and turn them on/off with toggleobject. MGL is a graphics library I wrote to build NIMH ML on. It is a sort of a low level structure and not supposed to be accessed directly in the timing script.by Jaewon - Questions and Answers
I don't understand the problem from your description. You had better explain with your code. You can't run scenes created from previous trials.by Jaewon - Questions and Answers
See my first reply again. I said the object created first is displayed above the other objects. In your script, the background is the first created and therefore covers all the other images. Update your NIMH ML to the latest version and modify the mglsetorigin line as below. From: mglsetorigin(id,) To: mglsetproperty(id,'origin',,'zorder',1);by Jaewon - Questions and Answers
Making a saccade detector is not difficult, but I would rather leave it to individual users for a few reasons. First, there is no single method that works for all situations, especially considering blink detection together. Second, detecting saccades does not work without smoothing and derivative calculations, which are very costly operations to do online. Smoothing also causes variable delby Jaewon - Questions and Answers
It is a matter between your monitor and Windows (or the video card). See the monitor setup manual and try some troubleshooting. https://monkeylogic.nimh.nih.gov/docs_MonitorSetup.html Also refer to this post. https://monkeylogic.nimh.nih.gov/board/read.php?3,524by Jaewon - Questions and Answers
Update your NIMH ML to the latest version that I just uploaded and see the following post. https://monkeylogic.nimh.nih.gov/board/read.php?2,597,597#msg-597by Jaewon - Questions and Answers
If you want to play a sound/music the whole time during the task, turn on the alert_function, as shown in this link, and write your alert_function.m as below. The wav file will be played during the ITI and even while the task is paused. function alert_function(hook,MLConfig,TrialRecord) persistent id filename = 'noise.wav'; % change the filename appropriately switch hookby Jaewon - Tips
* Changes in 2.2.3 (Nov 2, 2020) + MouseTracker (mouse_) can be linked with SingleButton now to detect mouse clicks. + High frequency DAQ can be selected even when only one NI board is available, if the board is not used for normal 1-kHz acquisition. + The labels of error codes used for trialerror() can be replaced with user- defined labels. See the manual page of trialerrby Jaewon - News
This is a general programing question and you are supposed to figure this out yourself. You know where you are presenting the sample, so you can just skip the button response checking when you present the stimulus at a particular position.by Jaewon - Questions and Answers
Yes, you can use PNG or ARGB matrices. https://monkeylogic.nimh.nih.gov/docs_MonkeyLogicGraphicsLibrary.html Basically an object created first is shown up above the other objects, but you can change their z-orders as well. https://monkeylogic.nimh.nih.gov/board/read.php?2,12,12#msg-12by Jaewon - Questions and Answers
I don't think the daqtoolbox is the problem here. Use MATLAB's debug tool and find which line of your userloop causes the error. And post your userloop, please. In many cases, this kind of error is related to MATLAB GUI or the graphics driver. Do not invoke MATLAB GUI in the userloop. You can use editable(), if you have parameters to adjust before running experiments. Sometimes switchinby Jaewon - Questions and Answers
The variables have to be hard-coded. There is no workaround. Of course, you can assign new values to them. But I wonder then what is the point of making them editable. Their values will be reset every session.by Jaewon - Questions and Answers