小编use*_*542的帖子

实时音乐转录

我正在尝试实现一种系统,可以为钢琴片制作一张音乐作品,当它正在播放时,也就是说,它应该是一个实时的转录,而不是一个录制的片段.

到目前为止,我一直在测试wav文件,使用FFt on MATLAB,但是当涉及到实时,系统需要非常快.

关于我可以使用什么样的方法,董事会类型(我已经考虑过使用Arduino)的任何建议.我可以使用,因为我想直接转移我MATLAB code而不是将其转换为C.

matlab real-time arduino

7
推荐指数
1
解决办法
1095
查看次数

使用MATLAB获取信号的包络

我正在尝试提取音频文件的峰值.我有以下代码来提取振幅谱的包络.但是我没有得到所需的输出图.有人可以告诉我需要做些什么调整来获得正确的图表.这是我的代码:

[song,FS] = wavread('c scale fast.wav');


P=20000/44100*FS;                   % length of filter 
N=length(song);                     % length of song
t=0:1/FS:(N-1)/FS;                  % define time period
% Plot time domain signal
figure(1);
subplot(3,1,1)
plot(t,(3*abs(song)))
title('Wave File')
ylabel('Amplitude')
xlabel('Length (in seconds)')
xlim([0 1.1])

xlim([0 N/FS])


% Gaussian Filter
x = linspace( -1, 1, P);         % create a vector of P values between -1 and 1 inclusive
sigma = 0.335;                  % standard deviation used in Gaussian formula
myFilter = -x .* exp( -(x.^2)/(2*sigma.^2));% compute first derivative, but …
Run Code Online (Sandbox Code Playgroud)

matlab envelope

5
推荐指数
1
解决办法
3万
查看次数

神经网络的激活函数

我需要帮助来确定合适的激活功能.我训练我的神经网络来检测钢琴音符.所以在这种情况下我只能有一个输出.音符在那里(1)或音符不存在(0).假设我引入了一个0.5的阈值,并说如果输出大于0.5,则存在所需的音符,如果小于0.5则不存在音符,我可以使用什么类型的激活功能.我认为它应该是硬限制,但我想知道是否也可以使用sigmoid.

signal-processing classification machine-learning neural-network

3
推荐指数
1
解决办法
2996
查看次数

在matlab中将频率转换为Note

所以我创建了一个MATLAB程序来检测钢琴录音中的频率.现在我需要将这些检测到的频率转换为相应的钢琴音符.

我知道有一个关于使用A4(440Hz)作为参考音符的理论,并基于此推导出其余部分.但是我正在寻找像查找表这样的东西,在那里我可以通过查看查找表直接调用相应的钢琴音符.我不太确定如何继续讨论它,所以想要一些关于我能做什么的建议...... Thanx

matlab

2
推荐指数
1
解决办法
1283
查看次数

Matlab编码的说明

我在互联网上找到了这个Matlab代码.它实际上是整个代码的一部分,可以在这里找到.有人可以逐行解释发生了什么.我真的很绝望......

% ------------- % This is code to make the edge detecting filter % ----%
function filter=gaussfilt(N)

% calculate alpha so the filter fills all N points
alpha=N;
first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
count=0;
while first<.1*(-(1530/4000*N-N/2)*exp(-(1530/4000*N-N/2)^2/alpha))
    count=count+1;
    alpha=N*500*count;
    first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
end

for n=1:N
     filter(n)=-(n-N/2)*exp(-(n-N/2)^2/alpha);   % d/dt of a gaussian
end
filter=filter/sum(abs(filter));     % normalization

return
Run Code Online (Sandbox Code Playgroud)

matlab

0
推荐指数
2
解决办法
862
查看次数