Конвертировать SoundFont в файлы.wav для каждой заметки

Есть ли простой способ конвертировать звуковой файл шрифта в .wav файлы (или вообще какой-нибудь распространенный музыкальный формат), отдельные для каждой ноты?

Так скажем, у меня был звуковой шрифт a.sfz; Я хотел бы получить из него список файлов A0.wav, A#0.wav, B0.wav, C1.wav, C#1.wav, так далее.

В частности, я хочу иметь .wav для каждой ноты, которая, как мне кажется, не является чем-то, что звуковой шрифт имеет сам по себе (кажется, что он имеет сэмплы только с несколькими нотами - я предполагаю, что программное обеспечение должно изменять высоту сэмплов, содержащихся в звуковых шрифтах, чтобы получить звуки оставшихся нот, но я хотел бы как-то сгенерировать .wav файлы для всех заметок напрямую, так что мне не нужно будет каким-либо образом изменять высоту сэмплов).

Если есть какое-то программное обеспечение, которое идеально подходит для этого, пожалуйста, предоставьте ссылку, но я не нашел ни одного (все, что я нашел, генерируют только .wav файлы несколько заметок друг от друга). Если нет, как бы я поступил так программно?

5 ответов

В Linux вы можете использовать SWAMI ( http://www.swamiproject.org/) для управления файлом звукового шрифта (в формате SF2).

В Ubuntu,sf2extractв gigtoolspackage может извлекать все образцы из файла SF2 в формате WAV.

Вы можете написать программу для этого. Используйте библиотеку RtAudio и Fluidsynth для программного генерирования всех высот, которые вы хотите воспроизвести. Когда эти тональности генерируются, запишите их в виде волновых файлов. Эта программа может быть повторно использована для любого звукового шрифта с тех пор. Вы можете найти библиотеки с помощью Google.

Импортируйте свой sf-файл в Audacity как "Импорт"> "Сырые данные".

Затем вы можете экспортировать его в аудиофайл, такой как WAV или MP3

Я получил несколько новых аудио-патчей, которые были sf2, и мое программное обеспечение композиции не распознало их. Сделал поиск в интернете и ничего не придумал. Так что я сделал эту смелость, и это сработало для меня. В частности, к тому, что вы спросили, моим файлом была труба с нотами. Я удалил все заметки, кроме первой, и экспортировал эту единственную заметку. Я скопировал экспорт (wav) в папку SoundBank и смог составить в разных тонах с помощью одного небольшого файла. А теперь... около 30 других инструментов, чтобы применить это к!

Я написал для этого простой инструмент. Требуется установить Node.js.

Инструкция для Linux (адаптировать для других ОС):

  1. Создайте новый модуль nodejs:
    mkdir midigen && cd midigen && npm init -y && npm i --save midi-writer-js
    
  2. Создайте index.js со следующим содержанием:

    const fs = require('fs');
    const MidiWriter = require('midi-writer-js');
    
    for (let octave = 0; octave <= 8; octave++) {
      for (const note of ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#',  'G', 'G#', 'A', 'A#', 'B']) {
        const track = new MidiWriter.Track();
        track.addEvent(new MidiWriter.ProgramChangeEvent({ instrument: 10 }));
        track.addEvent(new MidiWriter.NoteEvent({ pitch: [`${note}${octave}`], duration: '8', velocity: 100 }));
        fs.writeFileSync(`${note}${octave}.mid`, new MidiWriter.Writer(track).buildFile());
      }
    }
    
    
  3. Не стесняйтесь изменять диапазон октав, тип инструмента (в соответствии с вашим SoundFont), продолжительность и громкость (скорость)
  4. Пробег node .
  5. Установите ваш SoundFont
  6. Преобразуйте сгенерированные файлы midi в файлы wav:
    for f in *.mid; do timidity $f -Ow -o ${f%.mid}.wav; done
    
Другие вопросы по тегам