I am having trouble running a psychological experiment where participants tap synchronously along with a perceived periodic beat. They make responses by using index finger to touch the computer screen. The periodic beat is an isochronous tone sequences, where a pure tone (600 Hz, 50ms duration) was presented every 600ms.
The program is running in a computer with touchscreen. If I don’t make responses, i.e. touch the screen, the program will run normally. However, if I tap along with the sound stimulus, the program will get stuck when the fifth tone or sixth tone plays, and the following tones can’t play.
In addition, I change the code, which uses keyboard to make the response instead of touchscreen. Then, the program runs normally. Is that the touch’s problem?
I don’t know how to solve this problem. Are there something wrong in my code?
Thank you in advance!
This is my code:
from __future__ import division import sys from psychopy import logging, prefs logging.console.setLevel(logging.DEBUG) # get messages about the sound lib as it loads from psychopy import prefs prefs.general['audioLib'] = ['sounddevice'] from psychopy import visual, event, core, sound from psychopy import iohub io = iohub.launchHubServer() mouse = io.devices.mouse win = visual.Window(monitor="testMonitor", units="norm",fullscr=True,allowGUI=False,color=[-1,-1,-1]) ll = sound.Sound('pure tone.wav') IOI = .6 stim_delay = 0.05 file = open("H:/spatial tapping0422/record/con_sound_test_.txt",'w') circle = visual.Circle(win, radius=7,edges=60,size=[0.001,0.001],fillColor='white',pos=[0,0]) circle.draw() win.flip() core.wait(0.6) record1 = '' for i in range(11): ll.play() playtime = core.getTime() record1 += ('1'+','+str(playtime)+','+'0'+','+'0'+'\n') while True: time_temp = core.getTime() if (time_temp - playtime) > stim_delay: break e = mouse.getEvents(event_type=iohub.constants.EventConstants.MOUSE_BUTTON_PRESS) if e: x, y, z = e.x_position, e.y_position, e.time record1 += ('9'+','+str(z)+','+str(x)+','+str(y)+'\n') ll.stop() while True: time_temp = core.getTime() if (time_temp - playtime) > IOI - stim_delay: break e = mouse.getEvents(event_type=iohub.constants.EventConstants.MOUSE_BUTTON_PRESS) if e: x, y, z = e.x_position, e.y_position, e.time record1 += ('9'+','+str(z)+','+str(x)+','+str(y)+'\n') file.write(record1)