В MIDI файлах играют не все инструменты

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

MiK13
Сообщения: 956
ОС: Linux Debian

В MIDI файлах играют не все инструменты

Сообщение MiK13 »

Предисловие:
Племянник увлекается музыкой и у него возникла задача преобразовать MIDI в MP3. Решал эту задачу (в винде) конвертацией в реальном времени через звуковую карту.
Я нашёл какой-то онлайновый конвертер, но он даёт плохое качество (и 64 кбит/с).
Решил посмотреть, что есть в линуксе. Нашёл (и поставил) сначала timidity, а потом и редактор tuxguitar.
Сначала всё оказалось очень просто. Обе программы позволяют получить WAV файл (причём, очень быстро). Правда, оказалось, что tuxguitar полностью захватывает звук -- когда он работает mplayer просто зависает. Но это мелочь.
Но оказалось, что одни и те же midi-файды под виндой и в линуксе звучат по-разному.
Кроме того, на многих файлах, при проигрывании через timitidy выскакивают сообщения типа

Код: Выделить всё

Drum set 14 is undefined
No instrument mapped to tone bank 0, program 50 - this instrument will not be heard
No instrument mapped to tone bank 0, program 51 - this instrument will not be heard
No instrument mapped to tone bank 0, program 52 - this instrument will not be heard
И в tuxguitar, часть инструментов играет, а часть нет. То есть, как я понимаю, не для всех инструментов в линуксе есть образцы звуков.
Поэтому у меня и возник вопрос, можно ли загрузить звуки тех инструментов, которые отсутствуют? И если да, то как это сделать?
И хотелось бы, чтобы инструменты в Linux и Windows совпадали.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: В MIDI файлах играют не все инструменты

Сообщение Bizdelnick »

fluidsynth не пробовали?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Obscurus
Сообщения: 168

Re: В MIDI файлах играют не все инструменты

Сообщение Obscurus »

No instrument mapped to tone bank

Возможно некоторым трекам в файле не назначены инструменты. В Tuxguitar их можно поменять в свойствах дорожки.
Спасибо сказали:

MiK13
Сообщения: 956
ОС: Linux Debian

Re: В MIDI файлах играют не все инструменты

Сообщение MiK13 »

Obscurus писал(а):
05.10.2017 10:52
No instrument mapped to tone bank

Возможно некоторым трекам в файле не назначены инструменты. В Tuxguitar их можно поменять в свойствах дорожки.

Возможность поменять инструмент я нашёл. Но проблема в другом.
В tuxguitar можно для дорожки выбрать один из 128 инструментов. Например, первые 6 инструментов:
  • Piano
  • Bright Piano
  • Electric Grand
  • Honky Tonk Piano
  • Electric Piano 1
  • Electric Piano 2

А в файле /etc/timidity/freepats.cfg в разделе bank 0 Также есть список инструментов.Вот первые пять:

Код: Выделить всё

 0      Tone_000/000_Acoustic_Grand_Piano.pat amp=120 pan=center
 1      Tone_000/001_Acoustic_Brite_Piano.pat
 2      Tone_000/002_Electric_Grand_Piano.pat
 4      Tone_000/004_Electric_Piano_1_Rhodes.pat
 5      Tone_000/005_Electric_Piano_2_Chorused_Yamaha_DX.pat
Имена похожи, но после Tone_000/002_Electric_Grand_Piano.pat идёт сразу Tone_000/004_Electric_Piano_1_Rhodes.pat. То есть ссылка на Honky Tonk Piano отсутствует. Соответственно нет и файла в каталоге /usr/share/midi/freepats/Tone_000. Поэтому, если выбрать этот инструмент, он звучать не будет.
И вообще, образцы есть только для 72 инструментов. То есть образцы звучания 56 инструментов отсутствуют.
Поэтому у меня и возник вопрос: где можно найти недостающие инструменты? Может быть их можно взять из винды?

P.S. Раз образцы звучания инструментов находятся в файлах *.pat, то постараюсь поискать эти файлы в винде.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: В MIDI файлах играют не все инструменты

Сообщение Bizdelnick »

MiK13 писал(а):
06.10.2017 18:28
где можно найти недостающие инструменты?

Пакеты *-soundfont* — это не то?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: В MIDI файлах играют не все инструменты

Сообщение ormorph »

MiK13 вам же Bizdelnick Уже предлагал fluidsynth использовать, он так же как и timidity, может использоваться в качестве midi секвенсера, так же если он собран с поддержкой sndfile, то можно и конвертировать midi в wav. Качество звучания зависит от подобранных банков звуков. Благо что готовых банков в формате SF2 полно в интернете.

Примеры:

конвертирование midi в wav.

Код: Выделить всё

$ fluidsynth -F outfile.wav filebank.sf2 file.mid

Запуск midi секвенсера с выводом звука в pulseaudio, делается под пользователем.

Код: Выделить всё

$ fluidsynth -a pulseaudio -c2 -R0 -C0 -i -l -s /usr/share/sounds/sf2/FluidR3_GM.sf2

Если надо вывод в alsa, то поменять pulseaudio на alsa, это уже делается под пользователем root.
Так же для audacious есть плагин для проигрывания midi через fluidsynth. там нужно только банк звука выставить в гуе.
Вот пример с конвертированного файла через fluidsynth и lame, в mp3 тыц, использовался банк:
'084.0mg All In One Gm V1.1 Bank.sf2'

Зы: через fluidsynth звук на много лучше timidity.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: В MIDI файлах играют не все инструменты

Сообщение Bizdelnick »

Скачал на пробу штук несколько файлов, установил timidity и fluid-soundfont-gm. По умолчанию используется freepats, за это отвечает строка

Код: Выделить всё

source /etc/timidity/freepats.cfg
в /etc/timidity/timidity.cfg. Можно её закомментировать и раскомментировать

Код: Выделить всё

source /etc/timidity/fluidr3_gm.cfg
чтобы использовался fluid-soundfont-gm. В обоих случаях ошибок о нехватке инструментов у меня не было.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: В MIDI файлах играют не все инструменты

Сообщение Bizdelnick »

Если посмотреть содержимое fluidr3_gm.cfg, можно увидеть, что там присутствуют и drumset 14, и bank 0 с 0 по 127 полностью.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: В MIDI файлах играют не все инструменты

Сообщение ormorph »

Вообще я бы сказал что стандартный набор звуков gm.dls в винде, в качестве звуков просто ужасен.
Старенький CT8MGM.SF2 от Creative SB, на много лучше будет звучать. Ну и то, что в том что в том не все звуки присутствуют...
Вот с этого сайта можно скачать банки инструментов, там есть сжатые форматы, которые еще нужно будет конвертировать в sf2. Под linux sfArk можно конвертировать с помощью sfarkxtc. Расширение sfpack, можно конвертировать с помощью программы SFPACK, там на сайте есть для виндовс, но под wine она идет хорошо.
Ну и вот еще ссылка на одну из страниц того же сайта тыц.

Зы: лично мне больше всего понравились банки GMR Basico1.1 и OmegaGMGS2
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: В MIDI файлах играют не все инструменты

Сообщение ormorph »

Еще добавлю несколько строк.
Загрузка нескольких банков звуков SF2 в fluidyinth:
Создается файл в котором прописывается загрузка банков допустим ~/.fluidyinth/fluidyinth.conf:

Код: Выделить всё

load "/путь/file1.sf2"
load "/путь/file2.sf2"

Затем на месте где обычно прописывается file.sf2 подключаем этот конфиг ключиком -f. В результате можно подобрать инструменты для наилучшего звучания и конвертации, вроде еще порядок загрузки файлов влияет...
пример:

Код: Выделить всё

$ fluidsynth -F file.wav -f ~/.fluidyinth/fluidyinth.conf file.mid

Так же есть еще графический midi секвенсор -> Гуй для fluidsynth qsynth, он использует библиотеки fluidsynth, так же может загружать несколько банков.
Например с Rosegarden qsynth работает норм.
Спасибо сказали:

MiK13
Сообщения: 956
ОС: Linux Debian

Re: В MIDI файлах играют не все инструменты

Сообщение MiK13 »

Bizdelnick писал(а):
06.10.2017 22:58
Скачал на пробу штук несколько файлов, установил timidity и fluid-soundfont-gm. По умолчанию используется freepats, за это отвечает строка

Код: Выделить всё

source /etc/timidity/freepats.cfg
в /etc/timidity/timidity.cfg. Можно её закомментировать и раскомментировать

Код: Выделить всё

source /etc/timidity/fluidr3_gm.cfg
чтобы использовался fluid-soundfont-gm. В обоих случаях ошибок о нехватке инструментов у меня не было.

Спасибо. Сделал то, что Вы посоветовали. И проблема решилась. Правда, не до конца.
То есть сообщения об отсутствии инструментов не появляются. И играют, похоже, все инструменты.
Но вот в tuxguitar ничего не изменилось. Те инструменты, которые не играли, так и не стали играть.
Хотя если мелодию с этим "неиграющим" инструментом экспортировать в формате MIDI, то timidity её проигрывает. Причём, с тембром близким к заданному. Я проверил 9, которые не звучат -- все звучат. Правда, 4 из них почему-то только в правом канале.

Когда написал этот текст, вспомнил, что tuxguitar работает через timidity, который запущен как сервис. А я его не перезапускал.
Выдал service timidity restart и всё стало звучать.
А с дополнительными банками звуков я как-нибудь потом постараюсь разобраться. Как будет время.
А работа с midi нужна, в основном, для племянника. Пытаюсь его соблазнить перейти на Linux :-)
Спасибо сказали: