从混合波形(或其他音乐格式)文件中的特定乐器中提取特定的旋律/节拍/节奏

发布于 2024-08-13 14:34:27 字数 94 浏览 6 评论 0原文

是否可以编写一个程序,可以在由多种乐器组成的波形(或其他音乐格式)文件中提取特定乐器提供的旋律/节拍/节奏?

哪些算法可以用于此目的以及哪种编程语言最适合它?

Is it possible to write a program that can extract a melody/beat/rhythm provided by a specific instument in a wave (or other music format) file made up of multiple instruments?

Which algorithms could be used for this and what programming language would be best suited to it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

深居我梦 2024-08-20 14:34:27

这是一个令人着迷的领域。这里的基本数学工具是傅里叶变换。要了解它的工作原理以及它的挑战性,请查看 分析开头和弦辛苦的一天之夜

This is a fascinating area. The basic mathematical tool here is the Fourier Transform. To get an idea of how it works, and how challenging it can be, take a look at the analysis of the opening chord to A Hard Day's Night.

深海夜未眠 2024-08-20 14:34:27

乐器产生声音特征,就像我们的声音一样。有一些算法可以从人群中挑选出一个声音,并从用于取证的数据库中的签名中识别该声音。以完全相同的方式,可以从音景(例如混合波)中挑选出单个乐器的声音特征,并用于挑选节拍,或在自己的轨道上复制该乐器。

显然,如果您正在考虑制作曲目副本,即将混合波分解为每个乐器的单个曲目,您将需要做很多工作。我的理解是,由于仪器的频率重叠,这无论如何都不会是直截了当的......尽管正如您已经被告知的那样,这并非不可能。

Comparisonics 有一篇关于声音匹配技术的非常有趣的博客文章,这可能对您寻求信息很有用:http://www.comparisonics.com/SearchingForSounds.html

An instrument produces a sound signature, just the same way our voices do. There are algorithms out there that can pick a single voice out of a crowd and identify that voice from its signature in a database which is used in forensics. In the exact same way, the sound signature of a single instrument can be picked out of a soundscape (such as your mixed wave) and be used to pick out a beat, or make a copy of that instrument on its own track.

Obviously if you're thinking about making copies of tracks, i.e. to break down the mixed wave into a single track per instrument you're going to be looking at a lot of work. My understanding is that because of the frequency overlaps of instruments, this isn't going to be straightforward by any means... not impossible though as you've already been told.

There's quite an interesting blog post by Comparisonics about sound matching technologies which might be useful as a start for your quest for information: http://www.comparisonics.com/SearchingForSounds.html

苦行僧 2024-08-20 14:34:27

要提取节拍或节奏,您可能不需要完美隔离目标乐器。通用的解决方案可能很难,但如果您尝试针对特定的部分解决它,那么它可能是可能的。尝试实现一个带通滤波器,看看是否可以调整它来选择您想要的乐器。

另外,我刚刚发现了这款名为 PhotoSounder 的 Mac 产品。他们有一个博客展示了它的不同使用方式,包括 隔离单个仪器(需要手动干预)。

To extract the beat or rhythm, you might not need perfect isolation of the instrument you're targeting. A general solution may be hard, but if you're trying to solve it for a particular piece, it may be possible. Try implementing a band-pass filter and see if you can tune it to selects th instrument you're after.

Also, I just found this Mac product called PhotoSounder. They have a blog showing different ways it can be used, including isolating an individual instrument (with manual intervention).

深陷 2024-08-20 14:34:27

研究卡拉 OK 机算法。如果他们可以从歌曲中删除声音,我确信可以应用相同的原理来提取单个乐器。

Look into Karaoke machine algorithms. If they can remove voice from a song, I'm sure the same principles can be applied to extract a single instrument.

刘备忘录 2024-08-20 14:34:27

大多数乐器都会在特定频率范围内发出声音。

如果您编写一个可调谐带通滤波器(一种仅允许特定频率范围通过的滤波器),它将与您可能获得的尽可能接近。它不会接近完美;它不会是完美的。你在要求黑魔法。从轨道中完美提取单个乐器的唯一方法是在没有该乐器的情况下获得轨道的音频样本,并对两个波形进行差异化。

C、C++、Java、C#、Python、Perl 都应该能够使用正确的库来完成所有这些工作。哪一个是“最好的”取决于您已经知道的内容。

Most instruments make sound within certain frequency ranges.

If you write a tunable bandpass filter - a filter that only lets a certain frequency range through - it'll be about as close as you're likely to get. It will not be anywhere near perfect; you're asking for black magic. The only way to perfectly extract a single instrument from a track is to have an audio sample of the track without that instrument, and do a difference of the two waveforms.

C, C++, Java, C#, Python, Perl should all be able to do all of this with the right libraries. Which one is "best" depends on what you already know.

旧竹 2024-08-20 14:34:27

原则上这是可能的,但非常困难——甚至是一个开放的研究领域。您可能对 Dancing Monkeys 的项目论文感兴趣,这是 StepMania 的一个步骤生成程序。它进行了一些相当复杂的节拍检测和音乐分析,这在论文中进行了详细介绍(链接在该页面底部附近)。

It's possible in principle, but very difficult - an open area of research, even. You may be interested in the project paper for Dancing Monkeys, a step generation program for StepMania. It does some fairly sophisticated beat detection and music analysis, which is detailed in the paper (linked near the bottom of that page).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文