Javascript 将MIDI文件解析为二进制文件,然后用JS客户端保存
从几天以来,我一直试图将二进制文件保存回一个普通的MIDI文件。 我想我正在处理base64和blob以返回MIDI文件。 我设法从MIDI文件中获取值,但无法 生成MIDI文件以在修改后保存。 我的目标是编写一个多音轨midi录音机。 这是我最后一次尝试:Javascript 将MIDI文件解析为二进制文件,然后用JS客户端保存,javascript,browser,base64,blob,midi,Javascript,Browser,Base64,Blob,Midi,从几天以来,我一直试图将二进制文件保存回一个普通的MIDI文件。 我想我正在处理base64和blob以返回MIDI文件。 我设法从MIDI文件中获取值,但无法 生成MIDI文件以在修改后保存。 我的目标是编写一个多音轨midi录音机。 这是我最后一次尝试: function parseMidi(file) { const reader = new FileReader(); var fl = reader.readAsText(file, 'UTF-8'); reader.ad
function parseMidi(file)
{
const reader = new FileReader();
var fl = reader.readAsText(file, 'UTF-8');
reader.addEventListener('loadend', () => {
var data = reader.result;
var arr = [];
var utf8 = unescape(encodeURIComponent( data ));
for (var i = 0; i < utf8.length; i++)
{
arr.push(utf8.charCodeAt(i));
}
rebuildMidiFile(arr);
});
}
function rebuildMidiFile(arr)
{
var str64 = [];
for (var i = 0; i < arr.length; i++)
{
var st = String.fromCharCode( arr[i] );
str64 += st.toString('base64');
}
var ab = new ArrayBuffer(str64.length);
for (var i = 0; i < str64.length; ++i)
{
ab[i] = str64[i];
}
var midiFile =
URL.createObjectURL(new Blob([ ab.buffer ], {type: 'audio/midi' }));
}
函数parseMidi(文件)
{
const reader=new FileReader();
var fl=reader.readAsText(文件“UTF-8”);
reader.addEventListener('loadend',()=>{
var数据=reader.result;
var-arr=[];
var utf8=unescape(编码组件(数据));
对于(变量i=0;i