Внимание! Пока что это далеко не окончательный способ, нужна помощь с настройками и советы (кроме советов установить Windows).
В своей недавней статье, я описывал процесс установки FL Studio на Linux. Она заросла UPD, но суть в том, что в ней использовался следующий способ:
Установить Flapak
Установить Lutris и Flatseal через Flatpak
Ограничить доступ к файлам у Lutris через Flatseal, чтобы использование FL и плагинов было безопасным для основной системы
Создать в Lutris префикс, немного настроить, установить FL через скрипт на сайте Lutris и доустановить нужные VST
Способ является очень простым, в результате получается полностью рабочая FL Studio с VST плагинами, разве что для 32 битных плагинов требуется "External Window", иначе процесс зависает. Всё работает превосходно, нет никаких проблем, ничего не вылетает, не глючит.
Но есть одна проблема - сильная задержка звука. Из-за особенностей Wine, задержка меньше чем 60 миллисекунд невозможна. Играть на гитаре почти невозможно, а слышать самого себя с сильной задержкой очень неприятно. ASIO4ALL просто не работает, а даже если бы и работал - у него была бы такая же проблема, что и с обычным драйвером FL Studio - дополнительная задержка, не важно какой буфер выставлен. Было решено наконец-то обратить взор на такую штуку, как WineASIO. К тому же, в новые версии ядра Линукс недавно добавили Realtime модули. И вот я стал экспериментировать с WineASIO... И так и не смог поставить его на префикс в Lutris. Я явно делаю что-то не так, но что я не пробовал - ничего не получалось.
И вот, я решил сократить количество посредников, и придумал такой вариант:
Firejail запускает Wine
Wine запускает FL Studio
Firejail можно очень тонко настроить для безопасности, а в случае, если программа завершила свою работу, а WineServer нет - можно легко прихлопнуть все его элементы, просто завершив процесс Firejail, а не искать в списке процессов миллион svchost.
Установка
Напоминаю, что я использую Artix Linux со звуковым сервером Pipewire.
"--blacklist=/king" это я так блокирую доступ к своему второму диску, вы можете не писать его.
Установка Wine:
sudo pacman -S wine winetricks
Создание префикса Wine:
mkdir $HOME/.wineFLu
firejail --noprofile \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
wineboot -i
mkdir $HOME/.wineFLu/drive_c/INSTALL
Установка различных библиотек:
firejail --noprofile \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
winetricks vcrun6sp6 tahoma
Установка FL Studio и VST плагинов. Установщики надо кидать в папку C:/INSTALL относительно префикса.
firejail --noprofile --net=none \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
wine64 "C:/INSTALL/..."
Так же, есть важное замечание. Раньше я не понимал, почему FL Studio сильно лагает на некоторых версиях Wine, особенно при открытии контекстных меню, при выборе плагинов, а спектрограмма летит с повышенной скоростью. Ну, и сейчас не прям чтобы знаю причину, но зато знаю, как с этим бороться:
firejail --noprofile --net=none \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
wine64 winecfg
Открываете winecfg вышеуказанной командой, и в список приложений добавляете запускаемый "exe" файл для FLStudio, типа "FL64.exe", и выставляете ему версию Windows как "Windows 7". Да, часть плагинов (например GuitarRig) требуют Windows 10, но я проверил - всё работает. Только обязательно следите, чтобы версия для всех приложений "по умолчанию" была Windows 10.
Теперь самое интересное, и зачем этот переезд был организован - WineASIO, вот его установка:
У меня Artix Linux, и в нём не завезли некоторые пакеты, но их можно стырить из Arch. Вот ссылка на нужный пакет. Нужно добраться до него через терминал и выполнить команду чтобы установить пакет, а затем добавить себя в группу.
sudo pacman -U realtime-privileges-4-3-any.pkg.tar.zst
sudo usermod -aG realtime $(whoami)
На Арче, подозреваю, достаточно просто выполнить:
sudo pacman -S realtime-privileges
sudo usermod -aG realtime $(whoami)
Затем нужно установить WineASIO, я делаю это через AUR:
yay -S wineasio
А потом установить в нужный префикс Wine:
env WINEPREFIX=$HOME/.wineFLu wineasio-register
Соответственно, в FL надо поменять драйвер на WineASIO, немного настроить (поставить 2 входа и 2 выхода, выключить Fixed buffersize и выставить нужный вам, 256 ощущается как отсутствие задержки), и если будете использовать WineASIO - нужно поменять команду для переноса звука в виртуальный микрофон PipeWire:
pw-link FL64:out_1 my-virtualmic:input_FL
pw-link FL64:out_2 my-virtualmic:input_FR
При установке VST плагинов нужно быть очень внимательным, у каждого плагина есть своя болячка и свой способ лечения.
Скрытый текст
Nexus 2:
После установки:
firejail --noprofile --net=none \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
wine64 regedit
>>> HKEY_CURRENT_USER\Software\reFX\Nexus -> Поменять "ContentPath" на путь до папки с библиотеками, например "C:/Nexus content/" <<<
В первый раз открывать через "Fruit Wrapper", нажать шестерёнку, потом "VST Wrapper Settings" и заменить инструмент на Nexus, нажать "External Window"
Retro Color:
После установки:
Запустить в FL Studio, лицензии пока не будет, но нужно чтобы узнать точный ComputerID
Закрыть
%USERPROFILE%\Documents\RC-20 Retro Color Logs\...
Скопировать "ComputerId" из лога
Что с ним делать? Не знаю, сами угадайте)))
Guitar RIG:
После установки:
firejail --noprofile \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" \
wine64 uninstaller
>>> Microsoft Visual C++ 2013 Redistributable -> Изменить -> Repair <<<
Ну, и после всей проделанной работы - можно запускать FL, вот как это делаю я:
firejail --noprofile --env=WINEDEBUG=-all --net=none \
--whitelist=$HOME/.wineFLu \
--blacklist=/king --noblacklist=/sys/module --noblacklist=/dev \
--env=WINEPREFIX="$HOME/.wineFLu" --env=WINEESYNC=1 --env=WINEFSYNC=1 --env=STAGING_SHARED_MEMORY=1 --env=STAGING_WRITECOPY=1 \
wine64 "C:/Program Files/Image-Line/FL Studio 21/FL64.exe"
Можно даже ярлык сделать, но придётся убрать все "\" и заменить все "$HOME" на глобальные адреса с учётом вашего имени пользоваться, "$USER" к сожалению не работает.
micro $HOME/.local/share/applications/fl.desktop
[Desktop Entry]
Name=FL Studio
GenericName=FL Studio
Comment=Music
Exec=firejail ...
Icon=lmms
Terminal=false
Type=Application
PrefersNonDefaultGPU=true
Categories=AudioVideo
Wine - такой разный
А теперь стоит поговорить о минусах такого способа - замучаетесь закрывать WineServer. Не работает захват курсора, поэтому использование крутилок громкости превратится в кошмар, курсор постоянно будет вылетать за пределы окна.
Можно использовать другой Wine - я испытывал такой Wine-GE:
yay -S wine-ge-custom-bin
Запускается она уже не через wine64, а через /opt/wine-ge-custom/bin/wine64.
Из плюсов - не надо менять версию Windows в FL Studio на семёрку, работает любая без тормозов. Так же адекватно работают крутилки, то есть захват курсора. И WineServer сам закрывается при закрытии FL Studio. Из минусов - очень нестабильная работа, и не все установщики работают адекватно, например установщик FL Studio у меня зависал на этапе "Edge Internet что-то там", приходилось устанавливать через обычный Wine, а запускать уже через Wine-GE.
Так же, при любом Wine - не все плагины нормально завелись, например Nectar3, а в GuitarRig постоянно приходится сканировать пресеты, он каждый раз их забывает. Подозреваю, что проблема в чём-то другом.
А нужно ли оно вообще?
Во время установки я столкнулся с очень странной штукой: Guitar Rig очень сильно капризничал, дебаг указывал на библиотеку "msvcr120", будто в ней не реализован какой-то метод. Мою голову не покидал странный диссонанс от того, что в Lutris всё работает превосходно, а вот самому - приходится горбатиться, да ещё и библиотеки не работают. В итоге я просто скопировал файлы библиотек "msvcr120" из префикса Lutris в префикс Wine, и угадайте что? Оно заработало. То есть, в Lutris какие-то свои библиотеки, сильно отличающиеся от оригинальных? Я чего-то не знаю? В Lutris свои "репозитории" библиотек? Или я использую какой-то не такой Wine и Winetricks? В общем, очень много нервов я потратил на то, чтобы всё заработало, я получил WineASIO, но ценой большой нестабильности. И вот что я подумал...
Было бы превосходно, если бы можно было бы запускать WineASIO в Lutris. Я пробовал разные способы, но у меня не получилось. Пробовал копировать библиотеки вручную, прописывать в реестре - ничего не работает. Если у кого-то получится - обязательно напишите! Будет новый способ поставить FL Studio с низкой задержкой на Linux без запара. Единственные минусы которые я вижу в Lutris - в нём даже Wine-DE не закрывается при закрывании FL Studio, а если настройки безопасности слетят при очередном обновлении - FL Studio с кучей крякнутых вирусных VST получат полный доступ к вашей системе, чего очень бы не хотелось. Но в остальном подумываю, что было бы неплохо подружить WineASIO с Lutris.
Способ с чистым Wine через Firejail мне тоже очень нравится, хоть он и запарнее. Но там что-то не так с библиотеками - оригинальные не подходят, приходится тырить из Lutris.
В общем, подводя итоги - вот все способы, точнее их плюсы и минусы. Если кто знает как решить какой-либо из минусов любого из способов - обязательно сообщите в комментариях!
Flatpak + Lutris:
-
+ Очень простая установка, подходит для новичков
+ Всё работает без лишних проблем с библиотеками
- Не работает WineASIO
- Есть вероятность что слетит запрет для файлов вне Flatpak
Firejail + чистый Wine:
-
+ Работает WineASIO
- Не рабочие библиотеки
- Не работает захват мыши
- Не закрывается WineServer, приходится закрывать через диспетчер задач
Firejail + чистый WineGE:
-
+ Работает WineASIO
- Не рабочие библиотеки
- Не работают некоторые установщики, в том числе FL Studio (Думаю, можно как-то исправить, ведь в Lutris всё работает)
- Нестабильная работа
Комментарии (7)
WondeRu
29.09.2024 07:24Я пробовал несколько раз запускать FL под wine на моем основном ноутбуке под Ubuntu, это издевательство. Всегда перегружался в Винду и там уже работал с FL.
Daddy_Cool
29.09.2024 07:24+1Ох! Это ж какой-то... э... soft-porn...
Я как-то поставил MacOS на виртуалку в Windows, и туда Logic Studio, и оно вполне работало.KOCTEP Автор
29.09.2024 07:24Вариант с виртуалкой уже рассматривался в предыдущей статье, но в нём много ресурсов уходит на эмуляцию, вариант далеко не для всех.
MountainGoat
Pipewire умеет имитацию ALSA. Что-то мне кажется, там просто буфер по умолчанию большой прописан, и где-то это можно поправить. И не нужно будет страданий с вечнозаброшенным WineASIO.
Johan_Palych
Это не имитация:
https://wiki.archlinux.org/title/PipeWire
https://wiki.archlinux.org/title/PipeWire_(Русский)
"Установите pipewire-alsa (и удалите pulseaudio-alsa, если он установлен) для перенаправления приложений, использующих ALSA API, через PipeWire."
KOCTEP Автор
Установил пакет pipewire-alsa, поставил в Lutris звуковой драйвер как ALSA, перезапустил Иксы (с ними перезапускается сервер Pipewire). FL в Lutris всё таки же выдаёт лютейшую задержку около пол-секунды. Может, нужно что-то ещё настроить
Johan_Palych
https://bbs.archlinux.org/viewtopic.php?id=292324
Make sure lib32-libpulse and lib32-libpipewire are installed.
Почитайте тут:
https://forum.manjaro.org/t/howto-troubleshoot-crackling-in-pipewire/82442
6. Set the playback buffer size 7. Set minimum playback buffer size