2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab 音调 matlab - 在MATLAB中比较乐器的“音调”[关闭] - 堆栈内存溢出

matlab 音调 matlab - 在MATLAB中比较乐器的“音调”[关闭] - 堆栈内存溢出

时间:2023-08-05 09:31:06

相关推荐

matlab 音调 matlab - 在MATLAB中比较乐器的“音调”[关闭] - 堆栈内存溢出

我试图找到一种方法来比较使用不同仪器上播放的相同音符的MATLAB短500毫秒录音的相似度。

详细介绍这个特定主题:我是一名音乐专业学生,其任务是客观地确定各种现代低铜乐器的音调,以确定哪种乐器应该取代过时的“ophicleide”或Bass keyed bugle。 我首先使用它的光谱仪和其他6种仪器的视觉比较,但这种方法过于主观。

我用相同的麦克风,设备,增益级别和相同的音符录制了所有乐器。 出于这个原因,我相信信号足够类似于使用MATLAB工具。

我相信比较fft将是最准确的计算。 我首先尝试了一个频域相关,并测试了相同音调的不同段( eu和eu2是变量)

>> corr(abs(fft(eu)),abs(fft(eu2)))

ans = 0.9963

这是朝着正确方向迈出的一步,但是当我比较不同的信号时,我似乎得到了相反的结果:(次谐音和ophicleide声音几乎相同)

>> corr(abs(fft(eu)),abs(fft(ophi)))

ans = 0.5242

次中音和低音单簧管声音完全不同,但这表明相关性较高

>> corr(abs(fft(eu)),abs(fft(basscl)))

ans = 0.8506

我尝试了在网上找到的归一化最大互相关幅度公式,但我得到了相同的结果

>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x =eu2; y = eu; norm_max_xcorr_mag(x,y)

ans = 0.9638

比较其他样本时,我得到了类似的结果

>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x = eu; y = basscl;

ans = 0.6825

相比

>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x = eu; y = ophi; norm_max_xcorr_mag(x,y)

ans = 0.3519

Euphonium和Bass单簧管(basscl)具有完全不同的声音和完全不同的谐波系列,但这些公式显示出比次谐波和Ophicleide更接近的相关性,其频带看起来几乎完全相同。

我担心这些相关性显示真实音高的相关性(我在所有这些乐器上播放相同的音符,但是Ophicleide可能会失调高达1 Hz)它也可能是相位,甚至是相位总振幅。

在比较这些复杂波形的谐波泛音的比例时,有没有人知道更好的明确方法?

还是我吠叫错了树?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。