歌曲的音阶-歌曲的音阶由信号中存在的给定和弦组确定。

请参考http://songkeyfinder.com/找出不同音阶的和弦组。

歌曲的大小也可以根据给定的频率确定,该频率在信号中最常见。

我已经在MATLAB中编写了此代码,该代码显示了频率及其出现的情况。

[wave,freq]  = audioread('Our_song.wav');
dt  = 1/ freq;
Stoptime = 1;
t = (0:dt:Stoptime-dt);
n = length(wave)-1;
df = freq/n;
figure;
f = 0:freq/n:99999*freq/n;
ff=abs(fft(wave))/n;
fflength= length(ff);
ffpart=ff(1:100000);
plot(f,ffpart);


如何存储前n个出现频率最高的信号?

最佳答案

通过对整个信号应用fft,您会丢失时间信息。
您可能并不熟悉音频处理,但是如果您对此有所了解,那么似乎可以从中学习一些基础知识,这很有趣。
信号的常见时频表示是STFT,请查阅有关频谱图的Matlab帮助。

但是,STFT并不是最好的突出音乐结构,您可能希望使用色度功能来表示音频信号。它将产生一个具有12个“ bin”的矩阵,对应于色标的12个音符。

here描述了如何实现此色度分析的示例。
从色度表示中,您可以尝试识别随时间演奏的音符。

但是,这不是简单的任务。我强烈建议您开始使用仅包含一种乐器的录音。首先,没有任何和弦(例如钢琴上的旋律),如果您设法正确获取音符序列,请尝试使用带有和弦的同一乐器。
不同工具的混合将更具挑战性。

关于python - 如何找到歌曲的音阶,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24218103/

10-12 21:28