def run_main_experiment(): time_start = core.getTime() time_play = time_start order = Exp.make_random_stim_order() Nonethird = np.floor(len(order)/3) Ntwothird = np.floor(2*len(order)/3) t = 0 for i in order: t = t+1 print(core.getTime() -time_start) if t in [Nonethird,Ntwothird]: set_msg('Short Break!','MAIN') set_msg('Press return to continue','KEY') win.flip() event.waitKeys(keyList=['return','space']) core.wait(1) s = sound_build.make_noisy_stim(i,Exp) scaled = np.int16(s/np.max(np.abs(s)) * 32767) write('test.wav', 44100, scaled) core.wait(time_play - core.getTime()) set_msg('Up or down?','MAIN') win.flip() playsound(s,vol) core.wait(0.1) #core.wait(0.5) #wait 500ms; but use a loop of x frames for more accurate timing in fullscreen thisResp = get_response() iscorrect = Exp.isRespCorrect(i,thisResp) # 1=correct, O=incorrect, -1=missed time_play = core.getTime() + iti dataFile.write('%i,%i,%i\n' %(i, thisResp,iscorrect)) dataFile.close()
def run_main_experiment(): time_start = core.getTime() time_play = time_start order = Exp.make_random_stim_order() Nonethird = np.floor(len(order)/3) Ntwothird = np.floor(2*len(order)/3) Exp = exp_param.exp_param() rate = Exp.rate a = 1000 # amplitude of sounds to play (scaling sounds of rms 1) # plotting and playing stimuli R_inf = 10000 A_broad = sb.make_act_target(Exp.RATIO[4],Exp.f0,Exp.BROAD,Exp) A_dark = sb.make_act_target(Exp.RATIO[4],Exp.f0,Exp.DARK,Exp) B_broad = sb.make_act_target(R_inf,Exp.f0,Exp.BROAD,Exp) B_dark = sb.make_act_target(R_inf,Exp.f0,Exp.DARK,Exp) couples = [ [A_broad,B_broad],[A_dark,B_dark]] t = 0 for i in np.arange(0,100): t = t+1 snr_type = random.randint(0,1) timbre_type = random.randint(0,1) AXB_type = random.randint(0,1) WXZ_type = random.randint(0,1) pair = couples[snr_type] A = pair[int(WXZ_type)] B = pair[int(not WXZ_type)] X = [A,B][AXB_type] blank = np.zeros((Exp.rate,1),float) seq = np.append(blank,A) seq = np.append(seq,blank) seq = np.append(seq,X) seq = np.append(seq,blank) seq = np.append(seq,B) seq = np.append(seq,blank) snrdb = [0,-6][snr_type] s = sb.add_lpnoise_at_snrdb(seq,snrdb,Exp) s = sound_build.make_noisy_stim(i,Exp) scaled = np.int16(s/np.max(np.abs(s)) * 32767) write('test.wav', 44100, scaled) core.wait(time_play - core.getTime()) set_msg('AAB or ABB?','MAIN') win.flip() playsound(s,vol) core.wait(0.1) #core.wait(0.5) #wait 500ms; but use a loop of x frames for more accurate timing in fullscreen thisResp = get_response() iscorrect = (get_response()==AXB_type) time_play = core.getTime() + iti dataFile.write('%i,%i,%i,%i,%i,%i\n' %(snr_type,timbre_type,AXB_type,WXZ_type, thisResp,iscorrect)) dataFile.close()