如何将 magenta.js 音符序列转换为 midi 文件?

Posted

技术标签:

【中文标题】如何将 magenta.js 音符序列转换为 midi 文件?【英文标题】:How to convert a magenta.js note sequence to a midi file? 【发布时间】:2020-10-02 23:59:14 【问题描述】:

我正在尝试将 Magenta.js 中的音符序列转换为 midi 文件并获取 url,以便用户可以下载它并在我的 midi-player/visualizer 中使用该 url。

// Create a magenta note sequence
generateMelody(sendedNotes, 0.7, document.getElementById('bpm').value).then((magentaSequence) => 

    // Create midi out of magenteSequence
    const magentaMidi = core.sequenceProtoToMidi(magentaSequence);

    // Convert byte array to file
    const magentaFile = new Blob([magentaMidi],  type: 'audio/midi' )

    // Get url of the file
    const magentaURL = URL.createObjectURL(magentaFile);

    // Create midi elements and populate the template
    const magentaContent = melodyTemplate('id': 2, 'src': magentaURL);

    // Add new item to results
    document.querySelector('#results').innerhtml += magentaContent;

但我收到此错误:

Uncaught (in promise) Error: The sequence you are using with the visualizer does not have a totalTime field set, so the visualizer can't be horizontally sized correctly.

【问题讨论】:

【参考方案1】:

我通过添加解决了它:

magentaSequence.notes.forEach(n => n.velocity = bpm);

似乎注释需要速度才能使此代码起作用。我在这个链接https://github.com/magenta/magenta-js/issues/462找到了详细信息

【讨论】:

以上是关于如何将 magenta.js 音符序列转换为 midi 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将存储为 VARCHAR2 的日期转换为 'MM/DD/YYYY HH24:MI:SS'?

编写一个程序,帮助 tudio 将 midi 音符编号转换为名称和八度

C++ 在音符中转换 MIDI 音符 ID

是否可以转换带有一些音符的音频文件?

将组合 diaerese 转换为 ISO 8859-1

如何从 .NET 中的字符串中删除变音符号(重音符号)?