У меня есть класс React, в котором я пытаюсь настроить повторяющиеся нейронные сети, но которые в настоящее время не работают должным образом. Я должен слышать сгенерированные midi, но я ничего не слышу и даже не вижу кнопки «сгенерировать», видимые в коде.
По сути, этот проект просто включает в себя перевод vanilla на React. В приведенном ниже классе я использую попытку / уловку, которая, как мне кажется, является проблемой; Я думаю, что использую константы, когда мне нужно использовать что-то еще, но не уверен, что это проблема.
export default class Beat3 extends React.Component {
constructor(props) {
super(props);
this.improvCheckpoint = 'https://storage.googleapis.com/magentadata/js/checkpoints/music_rnn/chord_pitches_improv'
this.improvRNN = new mm.MusicRNN(this.improvCheckpoint)
this.synth = new Tone.Synth().toMaster()
const { midi, Note } = Tonal
this.sequence = {
ticksPerQuarter: 220,
totalTime: 58,
timeSignatures: [
{
time: 0,
numerator: 4,
denominator: 4
}
],
tempos: [
{
time: 0,
qpm: 120
}
],
notes: [
{ pitch: 60, startTime: 0, endTime: 1 },
{ pitch: 67, startTime: 1, endTime: 3.5 }
]
}
this.quantizedSequence = mm.sequences.quantizeNoteSequence(this.sequence, 1)
const startProgram = async () => {
try {
await this.improvRNN.initialize()
let improvisedMelody = await this.improvRNN.continueSequence(this.quantizedSequence, 60, 1.1, ['Bm', 'Bbm', 'Gb7', 'F7', 'Ab', 'Ab7', 'G7', 'Gb7', 'F7', 'Bb7', 'Eb7', 'AM7'])
const playOriginalMelody = () => {
this.sequence.notes.forEach(note => {
this.synth.triggerAttackRelease(Note.fromMidi(note.pitch), note.endTime - note.startTime, note.startTime)
})
}
const playGeneratedMelody = () => {
improvisedMelody.notes.forEach(note => {
this.synth.triggerAttackRelease(Note.fromMidi(note.pitch), note.quantizedEndStep - note.quantizedStartStep, note.quantizedStartStep)
})
}
const originalMelodyButton = document.getElementById('b1a')
const generatedMelodyButton = document.getElementById('b1b')
originalMelodyButton.onclick = () => {
playOriginalMelody()
}
generatedMelodyButton.onclick = () => {
playGeneratedMelody()
}
} catch (error) {
console.error(error)
}
}
startProgram()
}
render()
{
return (
<div class="b1a">
</div>
);
}
}
Итак, я хотел бы видеть кнопки, которые приводят к тому, что данные midi переведено.
исходный код, который я пытаюсь перевести на React: https://github.com/FunmiOjo/pep-magenta/blob/master/index.js