Your OnOffMarkers are not included in the chains. See below. Also note that SingleTarget does not succeed until the tracker signal stays in the threshold window at least for one entire frame, while the Time property of SingleTarget indicates the time of the signal crossing the threshold. Therefore, the timestamp of OnOffMarker's eventcode is always later than the Time of SingleTarget. Seeby Jaewon - Questions and Answers
Neither. NIMH ML has the waveform ready for immediate play, before the scene starts. However, there is still an internal delay in Windows audio architecture that cannot be avoided. My paper about this is in review. The actual delay is dependent on many factors, but, if you are using XAudio2, it is usually about 37 ms. https://monkeylogic.nimh.nih.gov/docs_AudioEngine.html AudioSound ends the sby Jaewon - Questions and Answers
The version 2.2.42 (Dec 15, 2023) supports the polynomial transformation in the [2-D Spatial Transformation] calibration tool. https://monkeylogic.nimh.nih.gov/board/file.php?2,file=358,filename=geometric_projection.png While a linear transformation (e.g., projective transformation) fails when the voltage points (red circles) are not on straight lines, the polynomial transformation works wellby Jaewon - Tips
* Changes in 2.2.42 (Dec 15, 2023) + The polynomial transform is supported in the [2-D Spatial Transformation] calibration tool. This transform allows mapping a curved voltage space to a rectangular eye space. https://monkeylogic.nimh.nih.gov/board/read.php?2,1775 - Minor fixes.by Jaewon - News
Please answer my questions in your previous post. I need the information to fix your problem. https://monkeylogic.nimh.nih.gov/board/read.php?3,1664,1689#msg-1689by Jaewon - Questions and Answers
Use WaitThenHold, instead of TimeCounter, like the following. leave_fix = SingleTarget(eye_); not_fixing = NotAdapter(leave_fix); leave_timer = WaitThenHold(not_fixing); leave_timer.WaitTime = target_wait_time; leave_timer.HoldTime = target_limit_time; By adding NotAdapter, not_fixing succeeds when the eye is not on the target. Therefore, what leave_timer does is to await the fixationby Jaewon - Questions and Answers
The digital lines of NI boards are basically TTLs. So you are using TTLs by setting up Behavioral Codes and Strobe Bit. Not just one, but so many of them.by Jaewon - Questions and Answers
I think you misunderstood something. Behavioral Codes and Strobe Bit are there exactly for timestamping the electrophysiology data. NIMH ML always records eventmarkers, whether you set them up or not. When you read time from a TTL signal, what matters is when it goes HI (rising edge) or LO (falling edge), not its duration. See the manual of your Blockrock device (and the following link) andby Jaewon - Questions and Answers
You can choose a lower sample rate in the menu, but it does not change NIMH ML's internal sample rate. It can just reduce the amount of data stored in the data file. This option is not available though, if ITI recording is turned on. https://monkeylogic.nimh.nih.gov/docs_MainMenu.html#AISampleRate If you are not using SSDs, I suggest getting one. You do not need to touch any existing compby Jaewon - Questions and Answers
* Changes in 2.2.41 (Nov 29, 2023) + A new timing script fuction, include(), is added. It includes other script files into the current script. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#includeby Jaewon - News
The TTLOutput manual explains how to turn off a TTL in an arbitrary time. However, you may not want to use the method for an eventmarker, since the onset time of the TTL can vary slightly as mentioned in the remark. Is there a reason for using a TTL, instead of the Behavioral Codes and Strobe Bit? You didn't say why a 10-ms pulse is okay, but a 16-ms pulse is not. The difference doesnby Jaewon - Questions and Answers
Your figure shows 3 columns. Because of the timestamps, the saved LSL data is supposed to have one more column than what you choose in the LSL menu of NIMH ML. Is that the case in your data file? Did you choose 2 LSL streams to save? No. What I said above is still applied and it is possible to get a different number of samples. However, the difference should be 1 or 2 samples at most. If youby Jaewon - Questions and Answers
That is how the scene framework is designed. https://monkeylogic.nimh.nih.gov/docs_CreatingTask.html#RuntimeVersion2_Background What is the purpose of this TTL output? Why is 16 ms not acceptable? Did you read the TTLOutput manual for the changes that I mentioned above? https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#TTLOutputby Jaewon - Questions and Answers
First of all, the code 9 is not the trial start time. https://monkeylogic.nimh.nih.gov/board/read.php?2,1551,1551#msg-1551 Your 1st column does not look like timestamps. The unit of the timestamp is supposed to be milliseconds. What is the sample rate of the LSL data? Are you using the latest NIMH ML?by Jaewon - Questions and Answers
It is the Bioplux acquisition system that collects samples from the sensor and sends to LSL. NIMH ML simply imports data stored in LSL when a trial ends. Considering the clock difference and the network speed, there is no guarantee that you get the same number of samples from both streams. NIMH ML clears LSL when starting each trial (or when starting the 1st trial if using ITI recording), so thby Jaewon - Questions and Answers
There are so many different ways to program it. For the code you posted, I would count the number like this, for example. tbl = tabulate(conditions(find(0==TrialRecord.TrialErrors),1)) You need to keep the history of played conditions somewhere, to do this calculation. You are using TrialRecord.NextCondition to store the next trial number redundantly, but that variable is supposed to indicby Jaewon - Questions and Answers
I made a new function for it. Download the NIMH ML package again. Then you will be able to use include(). https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#include You can define the wrapper in the timing script.by Jaewon - Questions and Answers
Read the manual. https://monkeylogic.nimh.nih.gov/docs_ScriptingScenes.html#AdapterAggregatorsby Jaewon - Questions and Answers
I highly doubt that it is a driver problem, but I guess it is not impossible.by Jaewon - Questions and Answers
Have you tried changing the background color, let's say, to red? Does the touchscreen still go black, instead of red? Try the instructions in the following link. You may need to change the coordinates in "Fallback screen rect." () to make the fallback screen show up on the touchscreen side. Click the "Test" button in the figure. What happens? Does checking on "Forcby Jaewon - Questions and Answers
Your code for the target period makes no sense to me. I just used my imagination to figure out what you tried to do. See the attached script.by Jaewon - Questions and Answers
I guess you did not understand my previous answer. https://monkeylogic.nimh.nih.gov/board/read.php?3,1655 You are using toggleobject and eyejoytrack incorrectly. I revised the manual to make it more sense. Please see the last remark of each command. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#eyejoytrack https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#toggleobjectby Jaewon - Questions and Answers
See Example 2 of the PhotoDiode adapter. You need to download the latest NIMH ML first. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#PhotoDiodeby Jaewon - Questions and Answers
* Changes in 2.2.40 (Oct 11, 2023) + The PhotoDiode adapter can toggle the photodiode trigger when an eventcode is issued, which can be used to check the duration of image presentation. https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#PhotoDiode - The adapters that manipulate the properties of graphic objects, such as CurveTracer, ImageChanger, GraphicProperty and Backgby Jaewon - News
Update your NIMH ML to the latest version. Then you can calculate the raw voltage values as below. 1. Load data. = mlread; 2.Initialize the calibration object. EyeCal = mlcalibrate('eye', MLConfig, 1); % 'eye' or 'joy'; 1 means Eye#1 If an error occurs, refer to the following link, fill in the missing screen size information and retry. https://monkby Jaewon - Questions and Answers
If the success status is true, it means the button was pressed; otherwise, it wasn't. Plus, the button signals are recorded for the entire trial and saved in the data file. See the AnalogData field in the data.by Jaewon - Questions and Answers
Is 'gabor' a TaskObject? In the scene framework, the duration of a TaskObject is just the entire scene. You cannot turn it off in the middle of a scene. If it is an image file, delete it from the conditions file and create with ImageGraphic instead. fix2_gabor = ImageGraphic(null_); fix2_gabor.List = { 'gabor.bmp', [0 0] }; tc2 = TimeCounter(fix2_gabor); tc2.Duration =by Jaewon - Questions and Answers
I do not see any problem in your files and they work fine in my computer. It seems that the length of the string is not correctly returned on your system, but I have no clue at the moment why it happens. Maybe it is related to the locale of your Windows or MATLAB. The support for unicode has been very poor in MATLAB, so it may take time to find a workaround or a solution may not exist. https://by Jaewon - Questions and Answers
Please upload your timing file. There is nothing I can look into with the captured images. Did you type those letters in the MATLAB editor? What is the version of your MATLAB?by Jaewon - Questions and Answers
* Changes in 2.2.39 (Aug 27, 2023) + UTF-8 system encoding support https://monkeylogic.nimh.nih.gov/board/read.php?3,1713,1717#msg-1717by Jaewon - News