Reply To: penn controller for (visual) masked priming?

PennController for IBEX Forums Support penn controller for (visual) masked priming? Reply To: penn controller for (visual) masked priming?


Hi Roberto,

I have not run masked priming myself, but I seem to remember hearing of people doing it with Ibex.

As any javascript-based solution, Ibex, and therefore PennController as well, runs locally, on the client side, which means that quality of connection shouldn’t be an issue, as long as you make sure that all resources are preloaded before running trials.

Then there’s the question of refresh rate. With online experiments, you really have no control over the participant’s monitor, but I doubt many people run under 60Hz nowadays, which still gives you a 16ms time window theoretically, it’s not bad.

Then enters the question of performance, and the question of alignment between your script’s frame-rate and the monitor’s refreshing cycle. PennController’s Timer elements currently use JavaScript’s setTimeout function which is far from perfect and can be problematic for highly accurate measures. I wouldn’t rely on it if you need to compose with time windows under about 30ms (missing one refresh rate, you get 2 times 16ms = 32ms). Note that you can estimate how much time really elapsed if you call .settings.log() on your Timer and then look at the difference between the timestamps of the results lines corresponding to the Start and End events.

A better solution might be to rely on JavaScript’s request​Animation​Frame function, which I plan on using instead of setTimeout for Timer elements in future releases of PennController. I could prioritize working on this feature if you think the current Timer element will give you too poor performances regarding your masked priming needs.

In any case, it’s always a good idea to pilot this kind of things first. I would say, if you think you’d be fine with time windows between 40ms and 60ms, then maybe try to run a few participants and look at the actual data. The considerations above hold true of any javascript-based solution.

Let me know if you have any questions.