LINUX + FL Studio + платные VST (32+64)

7dc57903cddb354fb581d2de2874753a.jpg

Да, когда-то я хотел написать свою DAW под Linux. Но пока я этого не сделал — можно использовать FL Studio.

Это инструкция для тех, кто тоже хочет работать с любимой DAW в Линуксе, но не проходя через весь тот ад, что пришлось пройти мне, по крупицам собирая осколки информации с древних форумов и переписок пятилетней давности с разработчиками Wine.

Скажу заранее, чего я смог добиться:

Дистрибутив: Artix GNU Linux (OpenRC), звуковая система PipeWire:

  • FL Studio 21

  • Guitar Rig 5

  • Nexus 2

  • Izotope Nectar 3

  • ShaperBox

  • Перенаправление звука из FL в виртуальный микрофон (обработка голоса для звонков и голосовых сообщений, проигрывание звуков и музыки в микрофон друзьям в дискорд)

Всё из этого списка — работает! Что ещё нужно для счастья?

Не будем говорить, где мы достали лицензионную FL Studio и кучу платных VST плагинов. Мы их купили) Честно-честно)

Какие требования?

FL Studio и большинство VST плагинов — это злобное, проприетарное программное обеспечение, которое творит всякую ерунду, и только лишь разработчики, купающиеся в деньгах с продажи пользовательских данных и потирающие кнопку «подключиться через удалённый доступ», знают, каковы настоящие возможности их творений.

Ещё сильнее это касается кряков, если вы пиратите. Ух, какие вы нехорошие! Но мы не пиратим, а покупаем всё сами! 200 долларов в месяц на каждый плагин.

Так что от готового решения требуется, как минимум, экранирование FL Studio, установщиков и кряков от основных и пользовательских файлов, и невозможность обойти это экранирование.

Вариант 1. Виртуальная машина QEMU (Не советую)

Абсолютно безопасно, а благодаря полной эмуляции системы — работает безотказно, но ужасно медленно и ресурсозатратно. К тому же — не особо то и удобно.

Я много экспериментировал, смог добиться почти полного отсутствия звуковой задержки, так что просто держите команду:

qemu-system-x86_64 -name "WIN10"
-hda <Путь-до-системы> \
-machine q35,accel=kvm \
-cpu host \
-smp 8 \
-m 8G \
-device AC97,audiodev=pwsnd \
-audiodev pipewire,id=pwsnd,out.name=source,out.stream-name=pw,in.mixing-engine=off,out.mixing-engine=off,in.buffer-length=16,out.buffer-length=16,in.latency=20000,out.latency=20000 \
-nic user,id=nic0,smb=<Путь-до-общей-папки> \
-vga qxl \
-global qxl-vga.vram_size=4294967

Из неё можно сделать скрипт для удобного запуска. Я тут ещё указал путь до общей папки, чтобы перекидывать установщики, сэмплы и проекты, в самой винде для неё надо зайти в проводнике по адресу \10.0.2.4\qemu, желательно добавить в избранное. Ах да, вам ещё понадобится найти драйвера для эмулируемой звуковой карты AC97 (последние выходили под Висту, вроде бы), и устанавливать их в особом режиме загрузки системы (для установки недописанных драйверов). Другие звуковые карты (например virtio) работают с огромной задержкой, и с ней невозможно работать. Для установки самой системы, соответственно, нужно добавить флаг -cdrom <путь-до-ISO-образа> \.

ВАЖНО: Если всё-таки хотите использовать этот ужасный вариант, то советую переключать звуковой драйвер в FL Studio на ASIO4ALL. Он позволяет выставлять очень маленькую задержку. Если запустить Guitar Rig отдельно, и выбрать в нём этот вариант, и настроить буфер — задержки практически нет, я её не чувствую.

Возможно, этот способ хорош, если у вашего процессора есть интегрированная графика, чтобы перебросить её в вирутальную машину, или если у вас аж целых две видеокарты. Но без этого — слишком лагает. Слишком много ресурсов уходит на отрисовку, плагинам почти ничего не остаётся.

Вариант 2. Flatpak + Lutris + Wine

Работает очень быстро, удобно, но не очень стабильно. Wine — это адская хреновина. Если что-то идёт не так — он вам ничего не скажет. Придётся строить теории и догадываться, записывать гигабайтные логи. И для изучения этих логов, для построения догадок — нужно быть гением низкоуровневого программирования и знать, что делает каждый .dll файл в папке Windows. Однако, если решить все ошибки — никаких проблем не возникнет. Я сделал это за вас.

Зачем такая длинная комбинация из Flatpak и Lutris? Потому что это удобно, позволяет надёжно экранировать Wine от основной системы (я знаю, что есть sandbox режим, но он работает через раз).

Сначала установите Flaptak, затем через него Lutris, а ещё желательно Flatseal (чтобы настраивать правила программ Flatpak) и крайне желательно ProtonPlus (позволяет устанавливать разные раннеры для Lutris).

Лучшая версия WIne из всех, что я пробовал: wine-ge-8–25-x86_64 (так и запишите)

В Lutris создаёте перфикс для FL Studio, устанавливаете, проверяете что работает, и выходите.

ВАЖНО: До установки VST плагинов нужно кое-что сделать.
Многие VST плагины проверяют лицензию, составляя «Computer ID» из вашего железа. И по каким-то причинам, он меняется, если к компьютеру подключать разные диски, да даже флешку. А если «ComputerID» не соответствует прописанному при регистрации — плагин просто вылетит при запуске, может даже потянуть за собой FL Studio. И вы никогда не узнаете, в чём проблема. Будете проклинать создателей Wine.
Чтобы эта проблема не мешала вам в будущем, да и вообще, чтобы ещё больше обезопасить систему — можно перекрыть префиксу Wine доступ к дискам, и заставить его не захламлять папку dosdevices.
В Lutris выберите FL, нажмите меню возле значка Wine → «Настройки Wine» → Библиотеки → Новое замещение для библиотеки: winedevice.exe → Добавить → Изменить → Отключить.
Затем залезаете в папку «dosdevices» префикса с FL Studio, и удаляете все папки кроме «c:». Больше они не потревожат вас и ваши VST плагины. Если есть более гуманные способы (или если этот работает не до конца), просьба — указать в комментариях.
Кстати, из-за этой проблемы, скорее всего — всё это проблематично на переносной системе (например на нешнем диске). Но можете держать активаторы поближе и не удалять их, чтобы если вдруг что-то случится, какая-то лицензия слетит, вы поменяете процессор или видеокарту — вы могли быстренько активировать слетевшие плагины.

Так же, надо чуть-чуть настроить префикс (Lutris → ПКМ по FL Studio → Настройки):
Архитектура префикса: Автоматически
Enable DXVK и VKD3D, остальное не надо
Предпочитать системные библиотеки (обязательно)

После этого, можно устанавливать VST плагины через «Запустить EXE внутри префикса Wine» по установщикам и активаторам.
НО: все установщики и файлы рядом с ними должны быть внутри диска C префикса, ведь мы же экранировали среду!
ТАК ЖЕ: у каждого плагина может быть уникальная болячка, вот мой список решений:

  • Guitar Rig 5
    После установки, надо зайти в «установка и удаление программ», выбрать «Microsoft Visual C++ 2013 Redistributable» (если их два или больше — сделать для каждого), и нажать «Удалить», а в открывшемся окне нажать «Repair», после чего закрыть

  • Nexus 2
    1. Перед установкой, через Winetricks надо установить «vcrun6sp6», иначе установщик будет сыпать ошибкой «не нашёл isskin.dll во временных файлах».
    2. После установки, через «Регистр Wine» проходите по адресу «HKEY_CURRENT_USER\Software\reFX\Nexus» и меняете «ContentPath» на путь до папки с библиотекой, пример: «C:/Nexus content/».

Ну и теперь самое главное и сложное — 32 битные плагины.

Попытаюсь объяснить ситуацию без матов. Когда вы запускаете 64 битную FL Studio — вы не можете просто заставить её запускать 32 битные VST плагины. Потому что, скорее всего, те используют 32 битные указатели, которые не дотягиваются до той памяти, в которой могут находиться 64 битные программы. Но есть выход — запустить 32 битную программу, которая запустит 32 битный плагин. Это состояние называется »bridged». То же самое происходит, когда вы запускаете 32 битную FL Studio, и открываете в ней 64 битный VST плагин.
Ну так вот.
Если вы прямо сейчас откроете любой VST плагин, который должен быть в состоянии «bridged» — у вас намертво зависнет FL Studio. Опять ни слова о том, что это за проблема. Хм, наверное Wine — фигня полня, да? Не совсем.
Я потратил очень много времени, но нашёл причину и решение проблемы: отображение. ОТОБРАЖЕНИЕ, КАРЛ. Не конфликт 32 битной среды в 64 битной среде, не трабл с межпроцессорно-межархитектурным общением. С отображением, едрить его колотить.

В общем — когда вы установили очередной VST плагин, и нашли его через «Manage Plugins» — НЕ СПЕШИТЕ ЗАКРЫВАТЬ «Manage Plugins» И ТЕСТИРОВАТЬ ПЛАГИН. Посмотрите разрядность плагина. Если 32 бита — требуется провернуть трюк:
1. Запсутите этот плагин. FL Studio зависает насмерть.
2. В Lutris откройте «Wine Task Manager»
3. Во вкладке «Процессы» найдите «libridge.exe *32» и завершите этот процесс
4. Чудесным образом, FL Studio развисает. Надо закрыть её
Это всё нужно, чтобы FL Studio инициализировала настройки для этого плагина в реестре. Так перейдём же в «Реестр Wine», в нём по адресу «HKEY_CURRENT_USER\Software\Image-Line\Shared\Plugins\Fruity Wrapper\Plugins\VST» нужно найти появившийся элемент (например — Nexus и reFX Nexus), и изменить »BridgedExternalWindow» на 1.

Таким образом, этот плагин будет открываться «отдельно» (кстати, не засоряя список открытых программ), и спокойно себе работать. Правда, не считываются MIDI-нажатия с обычной клавиатуры, если вы сфокусированы на этом плагине, надо тыкать на фон, но MIDI-клавиатура позволяет решить проблему. Ну, а ещё окошко с плагином может быть скрыто непонятно где, так что надо часто тыкать большую кнопку «Toggle» для включения/выключения окна плагина.
Да, не очень удобно, ну что-ж поделать. Можете заспамить разработчикам Wine, чтобы они пофиксили этот прикол.

Перенаправление звука

Помните, я в начале статьи упоминал такой прикол? Возможно, вы пробовали на Windows ставить проприетарыне виртуальные кабели, чтобы перенаправлять туда звук с FL Studio. Тут всё то же самое, только open-source.

Но я пробовал только на моём любимом Pipewire, как это делается в страшном и ужасном PulseAudio — я без понятия.

Создание виртуального кабеля aka фейкового микрофона (можно забиндить в автозагрузку иксов из SDDM — файл ~/.xsession):

pactl load-module module-null-sink media.class=Audio/Source/Virtual sink_name=my-virtualmic channel_map=front-left,front-right &

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

pw-link FL\ Studio:output_FL my-virtualmic:input_FL
pw-link FL\ Studio:output_FR my-virtualmic:input_FR

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

Итого

Рабочая FL Studio, работающие плагины.
Можно профессионально редактировать звуки, писать музыку, играть на гитаре с эффектами в реальном времени, шуметь в микрофон смешными звуками с дисторшеном или накладывать на свой голос очаровывающие компрессоры, чтобы звучать как ведущий на радио. Разве не чудо?

Да, путь довольно сложный, но не прямо уж чтоб сильно.
Вы не представляете, сколько времени я убил для этой инструкции, сколько я гуглил, сколько форумов перерыл. Всё, чтобы получиалсь более-менее удобная инструкция для таких как я, кто сбежал с винды, подальше от проприетарного ПО, и когда вынужден использовать его — экранирует от своих файлов.

Надеюсь, я помог кому-нибудь. Если есть советы или исправления — пишите в комментарии.

© Habrahabr.ru