Конвертировать 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
в
gigtools
package может извлекать все образцы из файла SF2 в формате WAV.
Вы можете написать программу для этого. Используйте библиотеку RtAudio и Fluidsynth для программного генерирования всех высот, которые вы хотите воспроизвести. Когда эти тональности генерируются, запишите их в виде волновых файлов. Эта программа может быть повторно использована для любого звукового шрифта с тех пор. Вы можете найти библиотеки с помощью Google.
Импортируйте свой sf-файл в Audacity как "Импорт"> "Сырые данные".
Затем вы можете экспортировать его в аудиофайл, такой как WAV или MP3
Я получил несколько новых аудио-патчей, которые были sf2, и мое программное обеспечение композиции не распознало их. Сделал поиск в интернете и ничего не придумал. Так что я сделал эту смелость, и это сработало для меня. В частности, к тому, что вы спросили, моим файлом была труба с нотами. Я удалил все заметки, кроме первой, и экспортировал эту единственную заметку. Я скопировал экспорт (wav) в папку SoundBank и смог составить в разных тонах с помощью одного небольшого файла. А теперь... около 30 других инструментов, чтобы применить это к!
Я написал для этого простой инструмент. Требуется установить Node.js.
Инструкция для Linux (адаптировать для других ОС):
- Создайте новый модуль nodejs:
mkdir midigen && cd midigen && npm init -y && npm i --save midi-writer-js
Создайте
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()); } }
- Не стесняйтесь изменять диапазон октав, тип инструмента (в соответствии с вашим SoundFont), продолжительность и громкость (скорость)
- Пробег
node .
- Установите ваш SoundFont
- Преобразуйте сгенерированные файлы midi в файлы wav:
for f in *.mid; do timidity $f -Ow -o ${f%.mid}.wav; done