我正在尝试实现一种系统,可以为钢琴片制作一张音乐作品,当它正在播放时,也就是说,它应该是一个实时的转录,而不是一个录制的片段.
到目前为止,我一直在测试wav文件,使用FFt on MATLAB,但是当涉及到实时,系统需要非常快.
关于我可以使用什么样的方法,董事会的类型(我已经考虑过使用Arduino)的任何建议.我可以使用,因为我想直接转移我MATLAB code而不是将其转换为C.
我正在尝试提取音频文件的峰值.我有以下代码来提取振幅谱的包络.但是我没有得到所需的输出图.有人可以告诉我需要做些什么调整来获得正确的图表.这是我的代码:
[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) 我需要帮助来确定合适的激活功能.我训练我的神经网络来检测钢琴音符.所以在这种情况下我只能有一个输出.音符在那里(1)或音符不存在(0).假设我引入了一个0.5的阈值,并说如果输出大于0.5,则存在所需的音符,如果小于0.5则不存在音符,我可以使用什么类型的激活功能.我认为它应该是硬限制,但我想知道是否也可以使用sigmoid.
signal-processing classification machine-learning neural-network
所以我创建了一个MATLAB程序来检测钢琴录音中的频率.现在我需要将这些检测到的频率转换为相应的钢琴音符.
我知道有一个关于使用A4(440Hz)作为参考音符的理论,并基于此推导出其余部分.但是我正在寻找像查找表这样的东西,在那里我可以通过查看查找表直接调用相应的钢琴音符.我不太确定如何继续讨论它,所以想要一些关于我能做什么的建议...... Thanx
我在互联网上找到了这个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)