LINUX.ORG.RU

MIDI в линуксе

 , , , ,


4

4

Добрый день, уважаемые. Как получить более лучший звук? Для маздайки была программа, загружающая лучшие звуковые банки «в звуковую карту», а также проприетарная программа которая позволяла рендерить очень красиво и качественно в готовые форматы без участия звуковой карты. Но проблема в том, что эти банки уже много лет как пропали из интернета, я не могу их найти. Вероятно, по лицензионным причинам, хотя мне всё ещё полагаются банки от производителя. То, что линуксовый драйвер не поддерживает из загрузку, я просто принимаю как данность. А проприетарной программы для линукса просто нет.

Мой опыт с Timidity:

  • трещит в режиме демона и -iA
  • с пульсаудио не работает, из-за чего её нужно перекомпилировать с libao (которая работает с пульсаудио)
  • трещит в режиме воспроизведения с -OO, немножко и не всегда
  • timidity-eawpatches далеко не самый плохой вариант звучания, но и не лучший

Но существует также Fluidsynth – прекрасный софт, выбор профессионалов:

  • уведомляет о проблемах с файлами
  • чтобы работал реалтайм, нужно установить пакет sys-auth/realtime-base-0.1 и добавить пользователя в группу realtime (либо запускать через kdesu)
  • по-сути, единственные доступные банки, которые удалось найти и употребить, это те, что на сайте Musescore – не то, что надо, звучание совершенно не ламповое и отсутствуют многие инструменты, идущий в репах FluidR3_GM.sf2 оттуда же пока лучше всего
  • после прерывания aplaymidi, продолжает пищать – я не понимаю такой фичи (в qsynth есть кнопка паники на такие случаи, можно использовать её), это вроде стандартно, да?
  • так и не получилось подцепить её в wine (это большая проблема, поскольку звук нужен в игрушках в вайне), хотя должно было уже заработать, и тут, видимо, ничего не сделать.

Если вы так же как и я не имеете ни малейшего представления как это сегодня работает, вот команда для запуска сервера

 ~ # modprobe snd-seq
 ~ # ADRIVER=alsa #pulseaudio #jack
 ~ # fluidsynth --server --no-shell --audio-driver=$ADRIVER --midi-driver=alsa_seq --portname=FluidSynth1 /usr/share/sounds/sf2/FluidR3_GM.sf2

потом aconnect -o и aplaymidi -p128:0 file.mid

https://wiki.archlinux.org/index.php/FluidSynth если что-то не получилось.

Программный миди из directx можно использовать в wine, это пока работает. Любителей навернуть всё подряд в вайн я могу сразу расстроить – установка дополнительных библиотек сломает звук.

winetricks gmdls dmsynth dmusic dsdmo quartz

По факту, получилось получить относительно нормальное звучание, скопировав пару библиотек в wine, но наверняка ведь можно лучше.

Итак, вопросы:

  • где найти норм шрифты для fluidsynth (в формате sf2 видимо) и есть ли некие рекомендации
  • как его прокинуть в wine для игрушек
  • либо как получить лучшее звучание в wine без fluidsynth, запущенного на хосте


Последнее исправление: linuxnewbie (всего исправлений: 4)
Ответ на: комментарий от saahriktu

Если такое во всех дистрибутивах, то это проблемы с железом

Если у ТС проблемы с железом, то звук должен трещать всегда, независимо от того, что его генерит. Но об этом он ни слова.

Deleted
()
Ответ на: комментарий от saahriktu

Ну проблемы и проблемы, другого не будет. Тем более что эта проблема только из-за того что программа не может согласовать буферы нормально (и руками тоже не задать), в том же mednafen уменьшение буферов и выставление частоты дискретизации в 48000/96000 уменьшало задержки и убирало треск (лучше всего эффект с ручным отключением ресамплера в alsa).

linuxnewbie
() автор топика
Ответ на: комментарий от Deleted

Эта проблема только у Timidity. Давайте вернёмся к wine, это действительно серьёзная преграда на пути к моему счастью.

linuxnewbie
() автор топика
Ответ на: комментарий от saahriktu

проблемы с софтом.

Перечислим: с alsa нелады, pulsa глючит, timidity не пашет в cli, jack не запускается, fluidsinth недоступен. Вопрос: как у ТС вообще звуковая система работает?

Deleted
()

Если у тебя трещит, то попробуй запустить вот так, поиграйся с параметрами -с и -z

fluidsynth -is -a pulseaudio -m alsa_seq -c 2 -z 512

Vigi
()
Последнее исправление: Vigi (всего исправлений: 1)
Ответ на: комментарий от Deleted

Справедливости ради, с fluidsynth у меня не было проблем. Проблема только с тем, что умолчательный wine midi mapper в приложениях её не видит (он в любом случае не видит ни timidity ни что угодно). Ну jack должен работать, да, я не знаю в чём его проблема. В другом дистрибутиве он работал.

linuxnewbie
() автор топика
Ответ на: комментарий от Vigi

В общем это, если fluidsynth от пользователя запускать он тоже трещит. Без пульсаудио вроде не трещал.

Вот так не трещит (совсем).

fluidsynth --server --no-shell --audio-driver=pulseaudio --midi-driver=alsa_seq --portname=FluidSynth1 -c 2 -z 1024 -r 48000 SGM-V2.01.sf2
linuxnewbie
() автор топика
Ответ на: комментарий от Deleted

Некоторые мелодии в Yume Nikki, в т.ч. на экране сохранения. Touhou Project некоторых версий (но там есть выбор между midi и отрендереным звуком).

Ceiling_QB ★★★★
()
Ответ на: комментарий от linuxnewbie

А ты не пробовал "-c 3 -z 512" сделать? Иногда большее значение имеет количество буфферов, а не размер. Так задержка будет поменьше.

ChekPuk ★★★
()
Ответ на: комментарий от linuxnewbie

1. ты наверное собрал версию DOS чипа, можно собрать еще с SEGA чипом

2. можно награбить инструментов из dosbox http://www.vgmpf.com/Wiki/index.php?title=DRO затем подредактировать банк в opl3bankeditor или opn2bankeditor и скормить adlplug/opnplug

3. можно засунуть как vst/lv2 плагин в любую daw

4. можно standalone версию подключить к jack и через qjackctl соединить с какой-нибудь midi программой например так https://i.imgur.com/cWdjXmB.png ну тут тебе нужен какой-нибудь midi плеер умеющий в jack

Deleted
()
Ответ на: комментарий от ChekPuk

по-моему разницы нет

-c 2 -z 512, -c 3 -z 512, -c 12 -z 512 почти норм; -c 3 -z 256 трещит, -c 12 -z 256 трещит; -c 1 -z 256, -c 1 -z 512, -c 1 -z 1024 нельзя выбрать.

linuxnewbie
() автор топика
Ответ на: по-моему разницы нет от linuxnewbie

-c 12

Нет, большее количество тоже дело не улучшит :) Ну, раз так, то дело в пульсе. А, лень думать.

ChekPuk ★★★
()
Ответ на: комментарий от ChekPuk

-c 2 -z 576, -c 2 -z 640 треск; -c 2 -z 704 можно заметить треск если слух очень хороший, на -c 2 -z 768 у меня начались слуховые галлюцинации, но тоже трещит, если слушать внимательно.

В общем остановимся на 1024, на котором точно треска никакого нет. Это конечно всё для моей карточки (которая поддерживает подключение midi ништяков через MPU-401 uart).

linuxnewbie
() автор топика
Ответ на: комментарий от Deleted

Надо будет починить jack как-то. Тут пишут, что jack из вайна давно выкинули, а звуковая подсистема в очень плохом состоянии. Так что без шансов. Остаётся только ждать, пока допишут поддержку xaudio via faudio, может что-то изменится. Сейчас wine-staging сегфолтится на вызове xaudio.

linuxnewbie
() автор топика

У меня получилось собрать wineasio. В нужных мне приложениях он не появился, я не знаю в чём протестировать можно.

Jack запускается если добавить пользователя в группу realtime и добавить -p32 (вместо умолчательных 1024) в аргументы серверу. Pulseaudio в это время перестаёт работать и звук во всех приложениях пропадает. Если fluidsynth запустить в режиме jack, его можно подключить в qjackctl и он будет играть. В wine появляется куча портов, но играет только тот, что fluidsynth (как и прежде).

Бонусом в jack можно видеть треск, это наверное единственная хорошая вещь про него.

Все варианты опробованы, я не знаю что делать дальше, я сдаюсь.

linuxnewbie
() автор топика

Fluidsynth плагин для audacious-qt не позволяет выбрать шрифт для звука, пришлось пересобирать с gtk. К запущенному fluidsynth не цепляется. В целом нормально, если gtk считать за нормально. Немного неудобно, что нужно добавлять шрифты и потом двигать их в начало в настройках плагина. Можно поставить Scc1t2.sf2 на шрифт и тогда все треки без исключения звучат нормально. Лучшего видимо ждать не стоит.

В вайне всё еще не работает. Может быть стоит подойти с другой стороны, и попробовать запустить какой-нибудь синтезатор в самом вайне? Это будет работать? Какие есть рабочие синтезаторы для wine? Wildmidi не заработал что-то.

Кстати, можно в каком-нибудь синтезаторе получить такое звучание, я так понимаю шрифтами это не решить? Нужен совет nomathere, спасибо. https://www.sendspace.com/file/g8xwhj

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

попробовать запустить какой-нибудь синтезатор в самом вайне?

Вайн - эмулятор среды offtop-а, прокладка, говорящая offtop-программе, что она в offtop-е, но производящая все действия средствами линя.

получить такое звучание

Здрасте, мордасте. А midi-шка то где?

Deleted
()
Ответ на: комментарий от Deleted

Так gmdls уж работает, нельзя его заменить на что-нибудь более гибкое? Мидишки нет, просто похоже на ламповые консоли. В частности вроде у X68000 похожий звук был (там разные платы были). Это больше теоретичесий интерес.

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

Мидишки нет

Стоп! Ты уже о трекере речь завёл, что ле? Как тебе это поможет? С вайна тебе всё-равно midi-события надо словить и по ним сгенерить звук. Трекера здесь не при делах.

Deleted
()
Ответ на: комментарий от linuxnewbie

Почему-то платы разные, а звук всегда по-своему хорошо звучал. Со всеми этими шрифтами половина инструментов не звучит нормально на отдельно взятой мидишке.

linuxnewbie
() автор топика
Ответ на: комментарий от Deleted

Это отрендеренный в wav трек, я не знаю что там в оригинале было. Похоже на X68000, в X68000 вставлялись миди платы.

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

Слушай, планирую как будет время чекнуть вообще что можно вытворить с помощью alsa и jack. Можно и wine будет посмотреть. Что откуда можно перенаправить. Меня как человека, заставшего dos и игравшего тогда в dos игры интересуют прежде всего opl и mt32

Deleted
()
Ответ на: комментарий от linuxnewbie

Насчет лампового звучания. Авторы игруль обычно помимо самой музыки еще и банки составляли, поэтому у них все инструменты были подобраны. И каждая игруля шла со своим набором инструментов

Deleted
()
Ответ на: комментарий от Deleted

И каждая игруля шла со своим набором инструментов

Ничего подобного. У них игры шли с mod, а не midi.

Deleted
()
Ответ на: комментарий от Deleted

У кого у них? Под dos было полно игр без mod'ов. Просто в своем внутреннем велосипедном игровом формате. Более того, под дос игрули как раз использовали синтез, а не сэмплы

Deleted
()
Ответ на: комментарий от linuxnewbie

Можно все, если захотеть. Нам ближе YM3812 / YM262 (OPL - Adlib / Sound blaster) и YM2612 - Sega. Застал и имел тогда в наличии и то и другое)

Deleted
()
Ответ на: комментарий от Deleted

Под dos было полно игр без mod'ов.

Не буду спорить. Не ковырял. И таки да, похоже XCom на чём то мидиобразном с собственными банками. Но то, что привёл ТС - это точно трек для чипа. А это уже совсем другая история.

Deleted
()
Ответ на: комментарий от Deleted

Ссылка потерялась, но насколько я понимаю существуют сразу несколько проектов такого рода, со схемами и софтом. Это был только один из них.

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

Ссылка потерялась
существуют сразу несколько проектов
Это был только один из них.

Так давай второй.

Deleted
()
Ответ на: комментарий от linuxnewbie

А яхз у меня её не было, я не японец) Как бы для adlib тоже есть трекер, но для меня как-то трекерная музыка это все-таки то что на сэмплах

Deleted
()
Ответ на: комментарий от Deleted

Но ведь отличается? И очень сильно? У меня не падал. А вот adlmidi не может в 48000 рендерить, опус потом ресамплит.

https://www.sendspace.com/file/lt9wrs

tracks/
├── Lands of Lore - Frank Klepacki - Yvel City (a340).opus
├── Lands of Lore - Frank Klepacki - Yvel City (adlmidi).opus
├── Lands of Lore - Frank Klepacki - Yvel City (arachno_v10).opus
├── Lands of Lore - Frank Klepacki - Yvel City (fmmidi).opus
├── Lands of Lore - Frank Klepacki - Yvel City (GeneralUserGS_v1471).opus
├── Lands of Lore - Frank Klepacki - Yvel City (merlin_gmv32).opus
├── Lands of Lore - Frank Klepacki - Yvel City (merlin_gold).opus
├── Lands of Lore - Frank Klepacki - Yvel City (Roland SC-55).opus
├── Lands of Lore - Frank Klepacki - Yvel City (Scc1t2).opus
├── Lands of Lore - Frank Klepacki - Yvel City (SGM-V2.01).opus
└── Lands of Lore - Frank Klepacki - Yvel City (titanic).opus

linuxnewbie
() автор топика
Ответ на: комментарий от darkenshvein

Ну да, а что такого? Каждый синтезатор звучит по-своему, надо это использовать! Да и с банками не всё однозначно, смотрите ссылку с треками.

linuxnewbie
() автор топика
Ответ на: комментарий от darkenshvein

Просто под мастдайкой у ТСа были нормальные банки, а в линухе он какое-то дефолтное говно загружает!

ТС, скачай на торрентах те гигабайты нужных банков, что ищешь! Далее загружай их в оперативу (понятное дело, для полноценной работы с jack ты должен использовать лишь кошерные дистрибутивы: бубунты-дебилианы не прокатят). А потом при помощи того же timidity получай качественный звук. С современными звуковушками можно даже сразу писать. Это вам не начало двухтысячных, когда я для записи минусовки не придумал ничего лучше, как соединить выход наушников со входом микрофона!

anonymous
()
Ответ на: комментарий от anonymous

А, да: для этого нужно хотя бы 32 гигабайта оперативной памяти. Но для особо крутых композиций и 256Гб будет мало! Хорошие банки - штука тяжелая!

anonymous
()
Ответ на: комментарий от anonymous

И еще: много лет назад я видел на гитхабе классную вещь — чувак придумал софтовый синтез, почти не уступающий аппаратному! Если это сейчас продвинулось, то вместо сотен гигабайт оперативы можно будет обойтись и парой-тройкой сотен свободных мегабайт!!! А за недельку-другую софт тебе нужное нагенерит...

anonymous
()
Ответ на: комментарий от linuxnewbie

Мили мило. Определённо стоило недели времени, затраченной на скачивание. Можно ли ожидать иного было?

Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 30104, period size 3760 bytes
/0/HD.sf2: *** illegal id in level 0: smpl -1506893206
/0/HD.sf2: *** illegal bags / gens
Ошибка сегментирования
fluidsynth: error: File read failed
fluidsynth: error: Failed to read sample data
fluidsynth: error: Attempted to read 1394037045 words of sample data, but got -1 instead
fluidsynth: error: Unable to load all sample data
fluidsynth: error: Failed to load SoundFont "/0/HD.sf2"
Failed to load the SoundFont /0/HD.sf2

fluidsynth не умирает, пытается штатно загрузить другой шрифт.

linuxnewbie
() автор топика
9 июня 2019 г.
Ответ на: комментарий от linuxnewbie

А ну теперь ясно откуда жопа растет

The MIDI driver was previously developed by Joel Yliluoma (Bisqwit). Originally, this program, ADLMIDI, was a simple MIDI file player.

Vitaly Novichkov (Wohlstand) reorganized ADLMIDI into a reuseable library, adding the basic building blocks of realtime MIDI control. Jean Pierre Cimalando has contributed improvements which make it more suitable for usage in real-time composition.

The ADLplug software was developed with the goal of allowing the use of the OPL3’s FM in composition, making the creation of «chiptunes» accessible to as many musicians as possible.

http://jpcima.sdf1.org/software/documentation/ADLplug/manual/en/manual.html

Deleted
()
Ответ на: комментарий от saahriktu

https://www.sendspace.com/file/lbi2qz

Compifont всё-таки не очень звучит, наверно хуже всех пока что. Внимание на ~1:30. На порядки хуже того же близкого к идеалу sgm.

В то же время a340 видимо звучит ламповей похожего на стандартный вендовый scc1t2 (47 секунда, вроде приятней).

Беда с этими шрифтами, совсем беда. Мне всё же пришлось отрендерить треки в mp3 для вайна, это избавляет от изначальной проблемы с вайном в топике. Остаётся найти шрифт, который не существует.

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

У sgm большие проблемы на самом деле, скажем вот этот классический трек уже звучит неприятно (или непривычно? сложно сказать, но вообще не нравится) https://www.sendspace.com/file/pcxa3k

Нужно что-то универсальное.

linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

Этот кликающий звук меня сводит с ума, извините. В моём плеере его не было. Поточное кодирование не работает нормально видимо, да и громкость ниже. Буду кодировать в vorbis, движок его поддерживает. Теперь можно жить, а то совсем не воспроизводился звук.

linuxnewbie
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.