📄 note2pv2.m
字号:
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<1, selfdemo; return; end
if nargin<2, duration=8; end
if nargin<3, pointNum=128; end
if nargin<4, plotOpt=1; 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -