Uncaught (in promise) Error: Number of splits must evenly divide the axis
Uncaught (in promise) Error: Number of splits must evenly divide the axis
总结
- 上下文
- 问题
- 我尝试过什么来修复这个错误?
- 如何重现此错误(+ 所需数据)?
- 我的问题
- 来源
上下文
感谢 MusicRNN chord_pitches_improv。
我想生成 MIDI 文件的新音符序列
问题
我对 music_rnn.continueSequence
的调用触发了以下错误:
Uncaught (in promise) Error: Number of splits must evenly divide the axis.
at C (music:22)
at split_ (music:22)
at Module.split (music:22)
at t.sampleRnn (music:83)
at music:83
at music:22
at t.scopedRun (music:22)
at t.tidy (music:22)
at Module.$e (music:22)
at t. (music:83)
我是如何修复这个错误的?
没什么,因为我什至不明白这个错误。
注意:我有 MuseScore。所以如果必须在 MIDI 文件中更改某些内容,我可以做到。
如何重现此错误(+ 所需数据)?
下载以下 MIDI 文件:https://a.uguu.se/kP1iJ4JVeTrD_b.mid 并重命名为 "b.mid"
创建一个用于存储 MIDI 文件的目录
在同一目录中,创建一个名为 index.html
的文件:copy/paste 在此 HTML 文件中,下面提供的代码(第 "Sources" 节)
打开浏览器,打开这个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>
当我尝试量化已经采用量化格式的音符序列时,我遇到了同样的错误。值得检查一下你的音符序列格式。
总结
- 上下文
- 问题
- 我尝试过什么来修复这个错误?
- 如何重现此错误(+ 所需数据)?
- 我的问题
- 来源
上下文
感谢 MusicRNN chord_pitches_improv。
我想生成 MIDI 文件的新音符序列问题
我对 music_rnn.continueSequence
的调用触发了以下错误:
Uncaught (in promise) Error: Number of splits must evenly divide the axis. at C (music:22) at split_ (music:22) at Module.split (music:22) at t.sampleRnn (music:83) at music:83 at music:22 at t.scopedRun (music:22) at t.tidy (music:22) at Module.$e (music:22) at t. (music:83)
我是如何修复这个错误的?
没什么,因为我什至不明白这个错误。 注意:我有 MuseScore。所以如果必须在 MIDI 文件中更改某些内容,我可以做到。
如何重现此错误(+ 所需数据)?
下载以下 MIDI 文件:https://a.uguu.se/kP1iJ4JVeTrD_b.mid 并重命名为 "b.mid"
创建一个用于存储 MIDI 文件的目录
在同一目录中,创建一个名为
index.html
的文件:copy/paste 在此 HTML 文件中,下面提供的代码(第 "Sources" 节)打开浏览器,打开这个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>
当我尝试量化已经采用量化格式的音符序列时,我遇到了同样的错误。值得检查一下你的音符序列格式。