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)
Ответ на: комментарий от linuxnewbie

Да, так вот. Это Scc1t2.sf2.

SF2 Soundfont reproduction of Roland SCC1 quality

Видимо те треки под него и делались.

Осталось разобраться, почему ноты друг на дружку налазят и можно ли что-нибудь с этим сделать.

В интернете как посмотрю много жалоб на тысячи хреновых шрифтов, но ни одного решения. А merlin_gmv32.sf2 вполне ничего.

Варезный OmegaGMGS2.sf2 не пошёл чего-то тоже. Теперь неделю буду скачивать https://mega.nz/#!tmI3TARb!yMpPB-NsV1SapyDpfw0NmtKuGBqcwnhL2jqxcbL_vgg (если его можно скачивать частями) и посмотрю что получится.

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

Microsoft Synthesizer всё ещё лидирует по показателю «чтобы «это» играло хорошо из «коробки»»

Это не показатель, это бренд. И здешних обитателей он мало устраивает, потому что такие вещи как csound и jack для этой системы полностью инородны.

Посмотри ещё один синтезатор:

Munt is a multi-platform software synthesiser emulating (somewhat inaccurately) pre-GM MIDI devices such as the Roland MT-32, CM-32L, CM-64 and LAPC-I.

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

Ни разу не видел никакой паники в консольном timidity. Всё просто стабильно работает.

Вот пример со вторым midi-файлом: https://yadi.sk/d/YzofCqVNaua55Q .

Что положить в /etc/timidity.cfg чтобы оно работало хотя бы?

opt EFresamp=n          #disable resampling
opt EFreverb=d          #disable reverb
opt EFchorus=d          #disable chorus

dir /путь/к/директории/со/звуковыми/шрифтами 
soundfont Compifont_13082016.sf2 order=0 amp=150
saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Именно, оно продолжает пищать есть прервать aplaymidi, приходится перезапускать timidity. Паника останавливает эхо (которое может быть бесконечным).

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

А вот это очень здорово, спасибо. Слишком пищит конечно, но семплы не налезают друг на друга и звучание почти как у Scc1t2.sf2.

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

оно продолжает пищать есть прервать aplaymidi

При чём тут aplaymidi?

 1419 pts/5    Ss     0:00              \_ /bin/bash
 3802 pts/5    Sl+    0:00              |   \_ timidity 20_mori.mid
 1421 pts/6    Ss+    0:00              \_ /bin/bash

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

Где можно найти ромы для CM-64 and LAPC-I?

Скорее всего в гугле, но точно не скажу, знаю только про MT32.

Если же отойти от «изкоробочных» вариантов, поюзай amsynth - Analog Modelling Synthesizer. Он победнее ZynAddSubFX настройками и возможностями, но если запашет у тебя, то хотя бы будешь представлять, о чём речь.

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

Отлично, его можно без проблем прицепить к scummvm и dosbox!

Сыпет всяким сотнями

playSysexWithoutFraming: Header not intended for model MT-32: 41 10 42 12
Rhythm: Attempted to play unmapped key 83 (velocity 102)

но если брать рандомные

The Secret of Monkey Island - Michael Z. Land, Barney Jones, Andy Newell, Patrick Mundy - Main Theme (General MIDI Version).mid

и

Day of The Tentacle - Peter McConnell, Clint Bajakian & Michael Z. Land - Opening - Introduction.mid

Играется очень хорошо, только я не пойму почему MT32 звучит лучше CM32-L, когда должно быть наоборот? Очень странно.

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

amsynth пищит норм, портит все банки которые открывает.

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

В убунте работает из коробки, только свой саундфонт подкидываешь и всё.

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

Плюсую что у него чтото сильно не так с системой

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

Да, у меня работает только в режиме демона, иначе выдаёт такое и всё. Но я не думаю что это проблема, мне оно в режиме демона и нужно.

 $ timidity ./Descent\ -\ Parallax\ Software\ Team\ -\ Introduction\ -\ Main\ Menu.mid 
Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 30104, period size 3760 bytes
Playing ./Descent - Parallax Software Team - Introduction - Main Menu.mid
MIDI file: ./Descent - Parallax Software Team - Introduction - Main Menu.mid
Format: 1  Tracks: 15  Divisions: 120
Text: DTX 1.0
Last 16 MIDI events are ignored
Playing time: ~231 seconds
Notes cut: 0
Notes lost totally: 0
linuxnewbie
() автор топика
Ответ на: комментарий от linuxnewbie

у меня работает только в режиме демона

Один чорт нехорошо это. Попробуй пересобрать, что ле. И для сравнения wildmidi протестить.

Deleted
()

Насчёт вайна не скажу, но для досбокса я в fluidsynth вот этот фонт скармливал, весьма неплохо. Нашёл я его через aur.

Vigi
()

В звуковую карту Creative, выпущенную до X-Fi, можно загрузить soundfont-ы при помощи утилиты awesfx. А для остальных, таких как Intel HDA, есть Timidity. Лично у меня она работает хорошо. Она ведь не может работать плохо, ведь даже винда начиная с 98-й версии эмулирует MIDI, и «железа» для этого хватало даже тогда

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

Так ты попробовал adlplug и opnplug? Юзаю их в качестве lv2/vst инструментов, ничо так. Munt еле нашел вариант lv2 плагина, но он давно не обновляется, да и управление им с контроллера довольно тяжкое

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

Только в scummvm он уже итак встроен

Deleted
()

Господа, у нас проблема. На примере vmpk мы имеем следущее:

client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 128: 'FluidSynth1' [type=user,pid=980]
    0 'FluidSynth1

при переключении в настройках c wine midi mapper на FluidSynth1 - FluidSynth1 картина становится такой

client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 128: 'FluidSynth1' [type=user,pid=980]
    0 'FluidSynth1     '
        Connected From: 129:0
client 129: 'WINE midi driver' [type=user,pid=3065]
    0 'WINE ALSA Output'
        Connecting To: 128:0
    1 'WINE ALSA Input 

в реестре прописано

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap]
"CurrentInstrument"="FluidSynth1 - FluidSynth1"

В интернете говорят, что этого достаточно. Почему не работает? Звук есть только при ручном выставлении в настройках, как быть с приложениями, которые могут только в умолчательное устройство выводить?

Кстати, можно назвать fluidsynth как Wine midi mapper, тогда переключение в программе не работает? Звука нет и не подключается.

И ещё, в dxdiag работают и FluidSynth1 и Wine midi mapper и Microsoft Synthesizer (в нём больше реверберации). Написано, что FluidSynth1 внешний.

С timidity ровно та же проблема. Только выбор из 4 портов (работают 1 и 2).

Проблеме, судя по гуглу, больше 15 лет, с этим можно что-нибудь сделать? В гугле всего пара страниц по теме, неужели всё так плохо?

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

Отсюда https://wiki.winehq.org/MIDI#Selecting_the_Output_-_the_MIDI_mapper — это мои название устройства и порта, которые видит wine, потому что иначе название будет вида «Synth input port (11379:0)» и его придётся выбирать каждый раз.

Чтобы заработало подключение в vmpk, нужно зайти в «правка->соединения миди» и выбрать соединение, чтобы подцепилось, или же нажать «расширенные» и выбрать порт wine midi mapper (который не цепляется не смотря ни на что).

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

wget https://sourceforge.net/projects/vmpk/files/vmpk/0.7.0rc/vmpk-0.7.0rc-win-x86.zip
mkdir -p "$HOME/.wine/drive_c"
unzip vmpk-0.7.0rc-win-x86.zip -d "$HOME/.wine/drive_c"
rm -i vmpk-0.7.0rc-win-x86.zip
wine c:/vmpk-0.7.0rc-win-x86/vmpk.exe

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

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

Попробуйте аккордеон. Там кнопки, почти как у компа. Двигать нужно руками, шевелить.

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

Так в том и дело что я не знаю названий, вроде пока лучше всего были предложенный Vigi SGM-V2.01.sf2 и найденный мной на просторах Scc1t2.sf2. Все эти титаники, арахны, компифонты, это всё не то.

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

Вы можете проверить это лично

Нет, не могу, wine не пользую от слова «совсем».

MIDI - WineHQ Wiki

You can either select the device by name or use the «#1» notation to select it by number (again with device #0 topmost in winecfg). Feed this .ini file to regedit to have the mapper select the second device in winmm & winecfg's list:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap]
"CurrentInstrument"="#1"

По номеру не пробовал указать порт вывода?

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

Да, конечно. И #1, и #0, и #2 — там написано, что это скорее исключение и нужно указывать полное имя.

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

Если у вас есть инструкция, как приспособить аккордеон для воспроизведения midi, я с удовольствием на неё погляжу.

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

Если у вас есть инструкция, как приспособить аккордеон для воспроизведения midi, я с удовольствием на неё погляжу.

1. Научитесь определять ноты на слух. 2. Научитесь играть на аккордеоне. 3. Прослушайте имеющиеся миди любым из способов 4. Сыграйте их на аккордеоне.

Четыре элементарнейших шага.

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

Почему-то всё зависает когда я запускаю qjackctl, не могу попробовать. Может быть сначала pulseaudio надо выключить?

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

Почему-то всё зависает когда я запускаю qjackctl, не могу попробовать.

Да у тебя что ни тронь, ни хрена не работает. Теперь jack, а я только хотел предложить вариант через него: TuxGuitar 1.3.0: коментарий kaffeine (27.01.16 14:47:19).

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

Ну он запускался, только сам jack не запускался и попросил прописать

@audio          -       rtprio          99

Теперь иксы зависают сразу, но можно переключиться на tty и убить его. Если убрать лимиты всё равно зависает.

Вот strace если что, мне кажется QXcbEventQueue зависает. Хотя я ничего в иксах не понимаю, просто это самое подозрительное.

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

Загружусь потом без pulseaudio и попробую ещё.

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

qlist media-sound/pulseaudio | grep jack ничего не выдаёт, наверное нету. Я конечно могу перекомпилировать, чтобы проверить, но это не вариант конечно. Зачем они тогда пихают пульсу, если ни libao, ни jack не поддерживают пульсу? А вдруг пользователь музыкант и хочет готовую систему на брелок для ключей повесить? Зато пульса тянет весь блютус стек со всеми виджетами и нетворкманагерами. Да уж, и system-wide убрали у неё. Как теперь перезапускать?

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

В арче для этого отдельный пакет с либой pulseaudio-jack, не знаю как там у вас в гентах.

Алсо, для музыкантов это всё делается одной кнопкой в cadence.

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

Тут надо пересобирать. Нда, в общем запускалась до добавления лимитов реального времени, потом перестала как и раньше. Перезапуск пульсы не помогает. Сам jack тоже не смог запуститься.

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

У меня нет других дистрибутивов, но по-моему да. В любом случае, помогите лучше завести её в wine для всех приложений, а не только в dxdiag.

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

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

В Магейе timidity должен работать без треска из коробки.

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