note2mid2.m
来自「自动语音识别源码对非特定人的孤立词语音识别算法 进行研究。考虑到语音识别技术在」· M 代码 · 共 50 行
M
50 行
function yi = midi2mid2(midi, duration, pointNum, plotOpt)
%MIDI2MID2 Midi to mid conversion, version 2.
% Usage:
% yi = midi2mid2(midi, duration, pointNum, plotOpt)
%
% Type midi2mid2 for a self demo.
% Roger Jang, 20010111
if nargin==0, selfdemo; return; end
if nargin<4, plotOpt=1; end
if nargin<3, pointNum=128; end
if nargin<2, duration=8; end
midi = double(midi);
smtn = midi(1:2:end);
time = midi(2:2:end);
time = time(:)';
endTime = cumsum(time)*1/64;
beginTime = [0, endTime(1:end-1)+1e-6];
timeSeq = [beginTime; endTime];
timeSeq = timeSeq(:);
smtnSeq = [smtn(:)'; smtn(:)'];
smtnSeq = smtnSeq(:);
smtnSeq(smtnSeq==0)=nan;
% ====== Return mid format of pointNum points
xi = linspace(0, duration, pointNum);
yi = interp1(timeSeq, smtnSeq, xi);
% ====== If rest, use the previous pitch
for i=2:length(yi),
if isnan(yi(i)), yi(i) = yi(i-1); end
if yi(i)==0, yi(i) = yi(i-1); end
end
if plotOpt,
figure;
plotmidi(midi);
hold on
plot(xi, yi, 'g.');
hold off
end
function selfdemo
% 冀
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?