未捕获(承诺中)错误:分割数必须均匀地划分轴
Posted
技术标签:
【中文标题】未捕获(承诺中)错误:分割数必须均匀地划分轴【英文标题】:Uncaught (in promise) Error: Number of splits must evenly divide the axis 【发布时间】:2020-06-13 13:43:19 【问题描述】:总结
-
上下文
问题
我尝试了哪些方法来修复此错误?
如何重现此错误(+ 所需数据)?
我的问题
来源
上下文
感谢 MusicRNN chord_pitches_improv,我想生成一个新的 MIDI 文件音符序列。
问题
我对@987654322@ 的调用触发了以下错误:
Uncaught (in promise) 错误:分割数必须均分轴。 在 C 处(音乐:22) 在 split_ (音乐:22) 在 Module.split (音乐:22) 在 t.sampleRnn(音乐:83) 在音乐:83 在音乐:22 在 t.scopedRun(音乐:22) 在 t.tidy(音乐:22) 在 Module.$e (音乐:22) 在 t。 (音乐:83)
我尝试过什么来修复这个错误?
没有,因为我什至不理解错误。 注意:我有 MuseScore。因此,如果必须在 MIDI 文件中更改某些内容,我可以做到。
如何重现此错误(+ 所需数据)?
下载以下 MIDI 文件:https://a.uguu.se/kP1iJ4JVeTrD_b.mid 并将其重命名为“b.mid”
创建一个存储 MIDI 文件的目录
在同一目录中,创建一个名为 index.html
的文件:在此 HTML 文件中复制/粘贴下面提供的代码(“源”部分)
打开浏览器,打开这个HTML文件:我的脚本会自动执行,会触发错误。
我的问题
这个错误是什么意思?我该如何解决?我是否应该更改 MIDI 文件中的某些内容(如果是:什么?怎么做?我可以使用 MuseScore 来做吗?)?
来源
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Music</title>
<script src="https://cdn.jsdelivr.net/npm/@magenta/music"></script>
<script src="https://unpkg.com/@tonejs/midi"></script>
</head>
<body>
<script>
loadMidi = async function()
const sequence = 'notes': []
const midi = await Midi.fromUrl("b.mid")
midi.tracks.forEach(track =>
const notes = track.notes
notes.forEach(note =>
if(note.midi < 48)
note.midi = 48
if(note.midi > 83)
note.midi = 83
sequence['notes'].push(
pitch: note.midi,
velocity: note.velocity * 100,
startTime: note.time,
endTime: note.time + note.duration
)
)
)
try
const quantizedSequence = mm.sequences.quantizeNoteSequence(sequence, 1)
const improvCheckpoint = 'https://storage.googleapis.com/magentadata/js/checkpoints/music_rnn/chord_pitches_improv'
const music_rnn = new mm.MusicRNN(improvCheckpoint)
const prepareMusic = async() =>
await music_rnn.initialize()
var improvisedMelody = await music_rnn.continueSequence(quantizedSequence, 60, 1.1, ['Bm', 'Bbm', 'Gb7', 'F7', 'Ab', 'Ab7', 'G7', 'Gb7', 'F7', 'Bb7', 'Eb7', 'AM7'])
improvisedMelody.notes.forEach(n => n.velocity = 100)
var midi_bytes_array = mm.sequenceProtoToMidi(improvisedMelody)
saveByteArray("generated_music.midi", midi_bytes_array);
prepareMusic()
catch (error)
console.error(error)
loadMidi();
function saveByteArray(reportName, byte)
var blob = new Blob([byte], type: "audio/midi");
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
var fileName = reportName;
link.download = fileName;
link.click();
;
</script>
</body>
</html>
【问题讨论】:
您没有处理承诺拒绝,请尝试使用异步等待从 try catch 内部访问 loadMidi() @codefreaK 好吧,我已将loadMidi();
行替换为:try loadMidi(); catch(error) console.log(error);
【参考方案1】:
当我尝试量化我的已量化格式的音符序列时,我遇到了同样的错误。值得检查一下您的音符序列格式。
【讨论】:
感谢您的回答。我的问题是我没有指明笔记序列的时间:) 好的,很高兴听到您解决了它!似乎错误消息不是很有帮助:) 是的 :) 哈哈哈 :)以上是关于未捕获(承诺中)错误:分割数必须均匀地划分轴的主要内容,如果未能解决你的问题,请参考以下文章
错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`
错误::未捕获(承诺中)类型错误:无法读取未定义的属性“内容”