【问题标题】:Replay stimulus multiple times in PsychoPy在 PsychoPy 中多次回放刺激
【发布时间】:2014-06-16 09:08:53
【问题描述】:

我正在构建一个实验,在每次试验中,受试者可以通过按特定键多次重播刺激。 例如,有 2 个声音:s1 和 s2。 s1 与键“a”相关联,s2 与键“j”相关联。每当对象按“a”时,就会播放 s1。 s2 也一样。空格键用于终止当前的 Trial 并跳转到下一个 Trial。

现在我可以在按键后播放刺激,方法是在 s1 声音组件的条件字段中添加“$event.getKeys('a')”,并在s2 声音分量。但这只会在试验中播放每个刺激。第二次按下按键,没有声音。

所以我的问题是,我应该怎么做才能在每次试验中,每次按下指定键时播放刺激?

【问题讨论】:

标签: psychopy


【解决方案1】:

Builder 声音组件对此并不理想:正如您所注意到的,如果为起始指定了条件,则每次试验只能触发一次声音。

另一种方法是在代码组件中创建一个非图形声音对象,然后在每个试验的每一帧检查按键,并根据需要触发声音。插入一个代码组件。在“开始实验”选项卡中,输入如下内容:

j_sound = sound.Sound(u'A', secs=0.5) 
a_sound = sound.Sound(u'B', secs=0.5) 

然后,在“每一帧”选项卡中,输入如下内容:

response = event.getKeys(keyList=['a','j'])
if 'a' in response:
    a_sound.play()
elif 'j' in response:
    j_sound.play()

这可以改进以处理在播放声音时进行的按键操作,但应该可以帮助您入门。

【讨论】:

  • 您的意思是我不需要创建图形声音对象,只需将以上内容写入代码组件?在这种情况下,我应该如何指定我想要播放的声音?也就是说,我应该用什么代替 u'A'?对不起,我对编写python脚本不太了解
  • 是的,您可以像上面一样纯粹用代码创建声音,然后稍后按名称引用它们。你还没有说你想播放什么声音,所以我不能告诉你如何指定它们。在此处查看 PsychoPy 声音 API 文档:psychopy.org/api/sound.html> 以了解如何指定值:作为音符名称(在上面的示例中为“A”),或按频率、声音文件名等。
  • 所以在不同的试验中会有不同的刺激,我有一个 csv 文件,其中包含每个试验的文件名。有没有办法在代码中从 csv 文件中指定文件名?
  • 是的。将声音创建行从“开始实验”选项卡转移到“开始例程”选项卡,以便每次试验都创建一个新的。它们看起来像这样:“j_sound = sound.Sound(value=jFileName)”,其中 jFileName 是 CSV 文件中包含相关文件名的列的名称。对其他声音执行相同的操作,它将有自己的文件名列。
  • 如果它满足您的需求,请记住勾选此作为答案:它可以帮助将来遇到此问题的任何其他人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 2023-03-31
  • 1970-01-01
  • 2018-06-22
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多