Внимание! Пока что это далеко не окончательный способ, нужна помощь с настройками и советы (кроме советов установить 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)


  1. MountainGoat
    29.09.2024 07:24

    Pipewire умеет имитацию ALSA. Что-то мне кажется, там просто буфер по умолчанию большой прописан, и где-то это можно поправить. И не нужно будет страданий с вечнозаброшенным WineASIO.


    1. Johan_Palych
      29.09.2024 07:24
      +1

      Это не имитация:
      https://wiki.archlinux.org/title/PipeWire
      https://wiki.archlinux.org/title/PipeWire_(Русский)
      "Установите pipewire-alsa (и удалите pulseaudio-alsa, если он установлен) для перенаправления приложений, использующих ALSA API, через PipeWire."


      1. KOCTEP Автор
        29.09.2024 07:24

        Установил пакет pipewire-alsa, поставил в Lutris звуковой драйвер как ALSA, перезапустил Иксы (с ними перезапускается сервер Pipewire). FL в Lutris всё таки же выдаёт лютейшую задержку около пол-секунды. Может, нужно что-то ещё настроить


        1. Johan_Palych
          29.09.2024 07:24

          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


  1. WondeRu
    29.09.2024 07:24

    Я пробовал несколько раз запускать FL под wine на моем основном ноутбуке под Ubuntu, это издевательство. Всегда перегружался в Винду и там уже работал с FL.


  1. Daddy_Cool
    29.09.2024 07:24
    +1

    Ох! Это ж какой-то... э... soft-porn...
    Я как-то поставил MacOS на виртуалку в Windows, и туда Logic Studio, и оно вполне работало.


    1. KOCTEP Автор
      29.09.2024 07:24

      Вариант с виртуалкой уже рассматривался в предыдущей статье, но в нём много ресурсов уходит на эмуляцию, вариант далеко не для всех.