C#音频-如何时间拉伸(不同的节奏 相同的音高)

我正在尝试在 C #(VS2008)中制作一个 winform 应用程序,它可以加载一个 mp3(其他格式会很好,但至少可以加载 mp3),并且能够调整播放速度(节奏)而不会影响音高。我真的不需要任何其他音频效果。我尝试使用 DirectShow,但似乎没有提供时间拉伸功能。我能够在irrklang上合并功能,但现在似乎没有

我正在尝试在 C #(VS2008)中制作一个 winform 应用程序,它可以加载一个 mp3(其他格式会很好,但至少可以加载 mp3),并且能够调整播放速度(节奏)而不会影响音高。我真的不需要任何其他音频效果。我尝试使用 DirectShow,但似乎没有提供时间拉伸功能。我能够在irrklang上合并功能,但现在似乎没有

在这几天之后,关于所有我已经完成的是在 SoundTouch DLL 上使用 DLLImport,并且能够成功检索版本号。在这一点上,我甚至不确定我是否可以做我试图用 SoundTouch 做的事情。任何人都可以提供一些关于如何实现 SoundTouch 或具有我正在寻找的功能的不同库的指导吗?谢谢。

9

如果有人仍然感兴趣,我已经为 SoundTouch 库编写了.Net 包装类。http://code.google.com/p/soundtouchnet/

6

答案是 SoundTouch 可以做你想做的事情。

看看示例程序SoundStretch。它给出了使用 SoundTouch 库更改节奏(不更改音调)以及更改音调(不更改节奏)和播放速率(更改音调和节奏)的示例。我将查看源代码并使用您需要的内容。

我看到的唯一问题是您使用的是 mp3 格式,而这使用的是 W 格式,因此您需要先转换文件。我真的不认为您会找到一个直接在任何类型的压缩文件上执行所需操作的程序,因为用于执行此类操作的方法的性质。如果您想进一步了解整个过程,它将使用phase vocoder

4

在 C # 中使用 SoundTouch 的另一种方法是使用 BASS.NET 包装和 BASS_FX 插件的 BASS 声音库(http://un4seen.com)。BASS_FX 使用 SoundTouch 进行 TimeStretching。

-1

这里是从 C# 调用的一种可能的方法。你需要在 C++ 中编写一个 COM 包装器来包装 SoundTouch DLL。一旦你准备好了 COM 包装器,你就可以将它导入到你的.NET (C#) 项目中,并通过 COM 包装器调用底层的 SoundTouch DLL。希望这有所帮助。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(661)
Java中具有两个微服务的简单 API网关
上一篇
熊猫在没有标题的表中读取(pd.read csv no header)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(40条)