如何在不切断之前播放的情况下在gstreamer中执行retrigger/restart样本
How to perform retrigger/restart sample in gstreamer without cutting the previous playback
所以我正在尝试用 gstreamer 制作鼓机。不熟悉鼓机的可以看看:
https://www.youtube.com/watch?v=KC7UaUD5rEA
基本上你有一个特定的样本加载到轨道。每个轨道有 16 个步骤,您可以启用或禁用这些步骤。当您按下播放键时,鼓机将循环播放步进,当启用一个步进时,它将播放该声音。
我在当前设置下使用它:
8 x (filesrc | wavparse | audioconvert | volume) |混音器 |阿尔萨斯克
我将管道置于播放状态,并且我执行每个步骤 seek_simple 回到管道的起点。为了触发声音,我根据想要的 rhythm/pattern.
每一步对 wav 进行静音和静音处理
问题:
通过执行搜索回到开头,wav sample/sound 的尾部被切断,这会产生断断续续的声音。理想情况下,我想 re-trigger 一个 wav 样本,但前一个应该继续播放直到完成。
问题:
如何在不切断声音尾巴的情况下重新触发声音?
Ps:我试过使用搜索标志“flush”、“keep_unit”……但没有成功。
我的循环:
def run(self):
startTime = time.time()
while True:
if self.running:
self.player.set_state(Gst.State.NULL)
self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, 0)
for track in self.tracks:
track.step()
self.player.set_state(Gst.State.PLAYING)
time.sleep(self.delayBmp -
((time.time() - startTime) % self.delayBmp))
提前致谢
我设法通过使用这个 C 库实现了我的目标:
https://soundprogramming.net/programming/tutorial-using-sdl2-and-sdl_mixer-to-play-samples/
这个例子提供了一种同时播放多个声音的方法。
然后我在它周围制作了一个 python 包装器并将一个 wav 文件推送到它。
按照本教程进行操作:
https://docs.python.org/3/extending/index.html
欢迎使用 post gstreamer 解决方案。
感谢
所以我正在尝试用 gstreamer 制作鼓机。不熟悉鼓机的可以看看:
https://www.youtube.com/watch?v=KC7UaUD5rEA
基本上你有一个特定的样本加载到轨道。每个轨道有 16 个步骤,您可以启用或禁用这些步骤。当您按下播放键时,鼓机将循环播放步进,当启用一个步进时,它将播放该声音。
我在当前设置下使用它: 8 x (filesrc | wavparse | audioconvert | volume) |混音器 |阿尔萨斯克
我将管道置于播放状态,并且我执行每个步骤 seek_simple 回到管道的起点。为了触发声音,我根据想要的 rhythm/pattern.
每一步对 wav 进行静音和静音处理问题: 通过执行搜索回到开头,wav sample/sound 的尾部被切断,这会产生断断续续的声音。理想情况下,我想 re-trigger 一个 wav 样本,但前一个应该继续播放直到完成。
问题: 如何在不切断声音尾巴的情况下重新触发声音?
Ps:我试过使用搜索标志“flush”、“keep_unit”……但没有成功。
我的循环:
def run(self):
startTime = time.time()
while True:
if self.running:
self.player.set_state(Gst.State.NULL)
self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, 0)
for track in self.tracks:
track.step()
self.player.set_state(Gst.State.PLAYING)
time.sleep(self.delayBmp -
((time.time() - startTime) % self.delayBmp))
提前致谢
我设法通过使用这个 C 库实现了我的目标: https://soundprogramming.net/programming/tutorial-using-sdl2-and-sdl_mixer-to-play-samples/
这个例子提供了一种同时播放多个声音的方法。 然后我在它周围制作了一个 python 包装器并将一个 wav 文件推送到它。 按照本教程进行操作:
https://docs.python.org/3/extending/index.html
欢迎使用 post gstreamer 解决方案。
感谢