[open] Audio Files not in synchrony with Visual Stimuli (using Parallel, Coroutines)
I am trying to build an audio-visual experiment, in which timing is very important.
I attached pictures of audio stimuli scheme and procedure. What happens is that I want to repeat 3sec audio file in a loop for the duration of a whole block, and at the same time, at certain time points of that 3sec sequence to present images. Response collection needs to be associated with image presentation, but since the image appears quite late into the 3sec sequence (at 2250ms), the response should be logged even if a new trial has started.
So, I need to collect keyboard response independently from trial run, the whole block needs to run non-stop no matter what you press (same as in here: http://forum.cogsci.nl/index.php?p=/discussion/1327/open-collect-keyboard-response-independently-from-trial-run#Item_4 )
Apart from a general question of how to make it work I listed what I’ve tried and what questions I have so far:
I tried doing it with parallel object (which was one of the main reason for turning to OS ), which seemed to work fine, IF I didn’t include a keyboard response item. But there still was a minor asynchrony between sound and image – it was as if there is a slight pause after that 3 sec file.
1) Is it possible for a sketchpad to log both RT and Acc in a way that is not dependent on keypresses? As I understand it's not possible?
If I added keyboard response, asynchrony increased even more. So ‘parallel’ has audio and visual sequences. If I try to add another item to parallel (keyboard, as I’ve seen it in some of the forum posts), the whole experiment crashes when being run. 2) Should that happen?
3) I was also advised to try Coroutines, which I cannot seem to install properly (install guidance site is down with error), and I get to the point where I have an icon in OpenSesame, but I can’t drag it into the experiment (error appears). Would coroutines, if installed, solve my problem?
4) I tried setting the sketchpad to duration 0, and setting keyboard to whatever duration I need (2250ms for example), but that doesn’t work either (still asynchronous).
5) I thought it might be something related to timing technicalities, so I read this site and followed all the advice that I could understand and execute ( http://osdoc.cogsci.nl/3.0/miscellaneous/timing/#overview). Again, that seems fine.
6) What determines to which object is keyboard response attached to? For example, if I set a keyboard response to be taken after an image presentation and I set ‘flush key presses’, it won’t collect response times from a sketchpad, and the trial will change to a new one, and if those key presses will be flushed from a second trial, that will mean that first trial will have no recorded responses? Basically, what to do with flushing key presses in my case?
7) Since it feels like that the sound sequence is a bit too long, I tried shortening its duration (for example, I put sampler to 2990), there is still this lag of sound.
8) I had this experiment built up in E-prime, and at the start I had a script item which cached images (because they are high quality).
Dim strImageFileName As String
strImageFileName = c.GetAttrib("ImageName")
Caching.Filename = strImageFileName
Caching.Load
Is there a way to put something similar (how and where) in OpenSesame? This Q is unrelated to timing issues above, as so far I was loading words, not those images.
So, any help would be very much appreciated!
Thank you,
Ieva
Comments
Hi,
I don't have the time to answer all your questions, so I hope it is okay, if I give you my opinion only on your last question.
An explicit strategy like the one you show, is not available in Opensesame, in particular, keeping your task design in mind. In general, the prepare-run phase distinction does a great deal to solve caching issues and such. However, if you need very precise timing in between trials, relying only on that won't help.
I don't know exactly whether it will work for you (it depends on all the little details of your design), but you could try to draw all the canvases in the very beginning of your experiment or a block. In this way, you could save the names of the canvases in the loop table and show (and clear) them during the trials. So basically, offloading the heavy drawing part to the beginning of the block. An extra sequence would do the trick. Does this make sense to you? Still, the precise implementation will probably also depend on the way you solve your other issues.
By the way, how does it go there? Is there already any progress? I saw you asked a similar question in another discussion.
Eduard
Hi,
Thank you, Eduard, for your suggestions! Yes, they make sense.
However, I consulted several specialists and they say it's not clear if my experiment would run with specific timing conditions in OpenSesame even if done like you suggested.
Unfortunately I will have to go back to E-prime:)
Kind regards,
Ieva