Hello,
I’m having a really frustrating bug in my code causing untraceable crashes and would greatly appreciate any help. The experiment is made using Builder, but this specific question is related to custom code in the code component.
Short about my experiment… My goal is to record the participant during an entire 60 s routine. This is done twice in each loop, and the loop has 12 iterations. Therefore I have used AdvAudioCapture
, so that I can save the files with custom filenames.
Microphone code - pretty much based on docs:
##### Init. routine
### Before exp:
from psychopy import microphone
### Begin experiment:
# Init. microphone
microphone.switchOn()
# Set directory for recordings to be saved
recordingDir = f"Data/Sound recordings/participant_{expInfo['participant']}/"
# Init. mic object with mono sound.
mic_channel = 0
mic = microphone.AdvAudioCapture(name='mic', saveDir=recordingDir, stereo=False, chnl=mic_channel)
##### Recording routines (both use the same code)
### Begin routine:
# Start sound recording
mic.reset()
mic_filename = recordingDir + f'participant_{participant_id}_problem{problem_id}_{stimuli}_wordset{wordset}.wav'
mic.record(60, filename=mic_filename, block=False)
### End routine:
mic.stop() # Failsafe
My preferences is set to pyo
and it is in fact recording and saving the segments as expected - but crashes from time to time during the first iteration (but after both recordings) without giving a stack trace or log.
Logging with DEBUG level seems to uncover an error in switchOn(). Below are two logs - one for a working run and one where it suddenly crashed.
From working run:
(…)
21.6623 INFO Success: Primary Sound Capture Driver
21.6623 INFO Using sound-input driver: Primary Sound Capture Driver (ID=6)
23.0879 EXP Set sound=C
23.0880 DEBUG pyo sound server started
23.0888 EXP C:\Program Files\PsychoPy3\lib\site-packages\psychopy\microphone: switch on (48000hz) took 1.787s
23.0895 EXP frequency of recording onset marker: 19000.0
23.0897 EXP Set mic.marker_tone sound=19000.0
(log continues…)
From crashing run
(…)
15.7781 INFO Success: Primary Sound Capture Driver
15.7781 INFO Using sound-input driver: Primary Sound Capture Driver (ID=6)
17.2608 EXP Set sound=C
17.208 DEBUG pyo sound server started
(log stops here even though exp. continued for a while - like it is blocked?)
As C:\Program Files\PsychoPy3\lib\site-packages\psychopy\microphone: switch on (48000hz) took 1.787s
is never logged in the crashing run, it seems like switchOn() is never fully executed. This is supposed to be logged on the end of the function call.
Hopefully I’ve explained the problem well enough, but please tell me if I need to elaborate further.
Thanks in advance