Soundfonts воспроизводит MIDI-файл без затухания

Я создавал приложение для записи музыки во Flask. На бэкэнде я использую Midiutil для генерации midi-файлов и Midi.js на фронт- энде для воспроизведения файлов.

Я записал и собрал свой звуковой шрифт, используя Polyphone, и преобразовал из sf2 в JS с помощью soundfont_builder.rb.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что soundfont_builder вызывает длительное затухание нот, которые мне не нужны.

def generate_midi(program, note_value, file)
  include MIDI
  seq = Sequence.new()
  track = Track.new(seq)

  seq.tracks << track
  track.events << ProgramChange.new(0, Integer(program))
  track.events << NoteOn.new(0, note_value, VELOCITY, 0) # channel, note, velocity, delta
  track.events << NoteOff.new(0, note_value, VELOCITY, DURATION)

Есть ли способ навигации по нему, чтобы мои заметки воспроизводились не дольше или короче, чем длина, заданная в MIDI-файле?

Я протестировал свои MIDI-файлы локально с FluidSynth, и они воспроизводятся нормально, как я хочу

1 ответ

если вы используете свой sf в сети, скажите:

yoursoundfont.stop(youraudioontext.currentTime + 0.0);

Когда вы останавливаете заметку, скажите 0,0, чтобы мгновенно завершить

Другие вопросы по тегам