使用 audiomath 安排多个音频事件的最佳方法是什么?
What is the best way to schedule multiple audio events with audiomath?
我想在任意时间安排多个音频片段的播放。从 audiomath 文档中,我认为我应该使用 PyschPortAudio 来获得最可预测的延迟。同样从文档中,我了解到我可以 schedule 播放单个声音。我很好奇是否可以在准确的时间(模延迟)提前安排多个短段?另外:理想情况下,可以在播放期间更改此时间表。
是的,多个独立 PsychPortAudio 播放器的协调预安排是可能的。作为一个最小的例子,以下似乎对我有用 Mac:
import audiomath as am
am.BackEnd.Load('PsychToolboxInterface')
p1 = am.Player(am.TestSound('12'))
p2 = am.Player(am.TestSound('34'))
t0 = am.Seconds()
p1.Play(when=t0 + 2.0)
p2.Play(when=t0 + 2.2) # overlaps p1, but offset by 200ms
这将不允许p1
和p2
完全无缝地定时——每个预定的开始仍然会被大约为几百微秒。随着刺激呈现的进行,这非常好,但可能(取决于声音内容)仍然足以在声音之间创建可听的过渡伪影。这取决于你想要达到什么样的效果——最好的办法是尝试一下,看看它是否符合你的需要。根据您希望声音和行为的确切方式,可能有比 PsychPortAudio 预调度更好的策略(例如:not 加载 PsychPortAudio 后端,但循环播放声音并然后在 Player
到达它们之前即时更改 Sound
数据的部分。)
我想在任意时间安排多个音频片段的播放。从 audiomath 文档中,我认为我应该使用 PyschPortAudio 来获得最可预测的延迟。同样从文档中,我了解到我可以 schedule 播放单个声音。我很好奇是否可以在准确的时间(模延迟)提前安排多个短段?另外:理想情况下,可以在播放期间更改此时间表。
是的,多个独立 PsychPortAudio 播放器的协调预安排是可能的。作为一个最小的例子,以下似乎对我有用 Mac:
import audiomath as am
am.BackEnd.Load('PsychToolboxInterface')
p1 = am.Player(am.TestSound('12'))
p2 = am.Player(am.TestSound('34'))
t0 = am.Seconds()
p1.Play(when=t0 + 2.0)
p2.Play(when=t0 + 2.2) # overlaps p1, but offset by 200ms
这将不允许p1
和p2
完全无缝地定时——每个预定的开始仍然会被大约为几百微秒。随着刺激呈现的进行,这非常好,但可能(取决于声音内容)仍然足以在声音之间创建可听的过渡伪影。这取决于你想要达到什么样的效果——最好的办法是尝试一下,看看它是否符合你的需要。根据您希望声音和行为的确切方式,可能有比 PsychPortAudio 预调度更好的策略(例如:not 加载 PsychPortAudio 后端,但循环播放声音并然后在 Player
到达它们之前即时更改 Sound
数据的部分。)