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

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

P.S. Некоторые моменты в инструкции могут быть немного неточными. Следите за комментариями ниже, и задавайте свои вопросы!

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

Дистрибутив: 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, установщиков и кряков от основных и пользовательских файлов, и невозможность обойти это экранирование.

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

Всё это будет достигнуто в обоих вариантах.

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

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

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

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-образа> \.

Кстати, этот мой вариант с Samba - так себе. У виртуальной машины появляется доступ в интернет, что крайне нежелательно. Поищите в комментариях, не напишет ли кто-нибудь более лучший вариант, типа драйверов для виртуальной машины.

ВАЖНО: Если всё-таки хотите использовать этот вариант, то советую переключать звуковой драйвер в 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, устанавливаете, проверяете что работает, и выходите.

UPD: "winedevice" нужен для работы многих плагинов. Нужно добиться отображения только системных разделов (основного и загрузочных). В общем - просто держите при себе все методы активации, они могут вам внезапно понадобиться.
ВАЖНО
: До установки 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, остальное не надо
Предпочитать системные библиотеки (обязательно)

Ну и желательно поставить всякие шрифты в префикс. Делается это через Winetricks:
Установить шрифт -> corefonts, tahoma.

После этого, можно устанавливать 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, чтобы они пофиксили этот прикол.

UPD: Вспомнил, что некоторые .flp проекты, созданные ранее, и загруженные в префикс для продолжения работы, могут быть заранее с открытыми 32 битными плагинами, что делает такие проекты неоткрываемыми... Мда, лажа

После установки:
Когда вы поставили FL и все плагины, всё настроили, и теперь готовы писать музыку - вы так же можете избежать сценария, когда какой-то из плагинов или кряков в теории может отправлять файлы ваших .flp проектов, сэмплы и установщики в префиксе (это единственное, до чего могут дотянуться вирусы и малвари) на сервера корпораций или компьютеры злоумышленников. Для этого достаточно просто вырубить интернет в префиксе (через библиотеки?) или для всего Lutris с помощью Flatseal (но во втором случае не забудьте временно включить интернет, если хотите установить какие-нибудь библиотеки или шрифты через Winetricks!)

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

Помните, я в начале статьи упоминал такой прикол? Возможно, вы пробовали на 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

Если вы используете QEMU (без переброса звуковой карты), то команда немного другая:

pw-link qemu-system-x86_64:output_FL my-virtualmic:input_FL
pw-link qemu-system-x86_64:output_FR my-virtualmic:input_FR

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

Итого

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

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

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

Комментарии (13)