Effector fl studio как пользоваться

Обновлено: 07.07.2024

Как-то раз вернувшись домой, наслушавшись всевозможной электронной музыки, которая оказалась на плеере, ты решил, что пора бы тоже подарить этому миру пару хитов. Естественно перед тем, как покупать дорогостоящее оборудование и с головой окунаться в сферу профессионального музыкального продюссирования, хочется просто, забавы ради, попробовать и «пощупать», а что же это такое создание электронной музыки на компьютере…

В данном цикле статей я хочу осветить процесс создания музыки в программе FL Studio.

Всех кому интересно, как порадовать друзей и знакомых новым произведением Вашего искусства прошу под кат.

Введение

Для начала понадобится демо-версия программы FL Studio, скачать которую можно отсюда(97,6 МБ), компьютер средней производительности, немного свободного времени и наушники, для того чтобы не убить соседей, своими экспериментами со звуком.

Музыкальный трек в FL Studio, составляется из фрагментов именуемых pattern (паттернами). Каждый такой паттерн состоит из последовательностей нот, заданных одному или нескольким каналам (channels). Размер паттерна кратен четвертям, минимальный размер паттерна – одна четверть. Такты в FL Studio имеют по умолчанию размер 4/4(в настройках проекта размер можно изменить) и в редакторе паттернов такты разделены более светлыми линиями сетки и подписаны сверху цифрами по порядку. Паттерн состоит из нот, тон которых лежит в пределах 10 октав, минимальная длительность ноты – одна сто двадцать восьмая.

Интерфейс FL Studio

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

Интерфейс

Интерфейс выглядит так (прокомментировано только самое важное на первом этапе освоения).

Step Sequencer

Step Sequencer содержит в себе список каналов и используется для редактирования паттернов. Номер редактируемого паттерна отображается сверху (см. первый скриншот), а также он выделен оранжевым цветом в плейлисте.

Step Sequencer

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

На скриншоте видно, чтобы заставить звучать ту или иную ноту, нужно нажать на соответствующий ей прямоугольник, для того чтобы определить тон ноты, следует открыть окно с клавишами и выбрать нужную, также можно изменить параметры ноты.

Для того чтобы добавить новый канал следует выполнить пункт меню Channels – Add one. , затем в выпадающем списке выбрать нужный канал.

Также можно клонировать или удалить выбранные каналы. Выбор осуществляться правым кликом мышки на сером прямоугольнике справа от названия канала. Левый клик выбирает/снимает выделение со всех каналов сразу.

Чтобы переместить канал выше/ниже следует удерживая клавишу ALT стрелку ВВЕРХ/ВНИЗ. Также можно двигать несколько выделенных каналов одновременно.

Выбранные каналы можно объединить в группу, для этого есть пункт меню Channels – Group selected.

Playlist

Playlist

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

Чтобы нарисовать паттерн надо щёлкнуть левой кнопкой мыши на нужном месте (в режиме карандаш или кисть, естественно), чтобы удалить паттерн нужно щёлкнуть правой на нём.

Для выделения не обязательно переключать инструмент, достаточно удерживать клавишу CTRL, также чтобы что-то обрезать можно удерживать клавишу SHIFT.

Чтобы выделить всю строку данного паттерна достаточно кликнуть на маленький прямоугольник справа от его названия.

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

Для объединения нескольких паттернов в один надо их выделить и в контекстном меню выбрать Merge selected.

Для объединения нескольких «прямоугольников» одного паттерна в один надо в контекстном меню выбрать Flatten selected.

Чтобы выделить всю строку данного паттерна достаточно кликнуть на маленький прямоугольник справа от его названия.

  • Main – привязка осуществляется в соответствие с глобальной привязкой выбранной сверху;
  • Line – привязка к линиям сетки;
  • Cell – привязка к ячейкам сетки;
  • (none) – отключить привязку;
  • 1/6, 1/5, 1/4, 1/3, 1/2 step – привязка к 1/6, 1/5, 1/4, 1/3, 1/2 части шага сетки соответственно;
  • Step – привязка к целому шагу сетки
  • 1/6, 1/5, 1/4, 1/3, 1/2 beat – привязка к 1/6, 1/5, 1/4, 1/3, 1/2 части бита (бит — одна четверть) соответственно;
  • Beat – привязка к целому биту.
  • Bar – привязка к такту.

Piano Roll

Piano Roll

Непосредственно редактор мелодии. Окно состоит из панели инструментов, аналогичной той, что в плейлисте, нотного стана слева, окна ввода нот по центру и окна параметров снизу.

Логика проста, один прямоугольник – одна нота, длинна прямоугольника – длительность ноты.
Большинство операций производиться также как и в плейлисте, только чтобы скопировать и перенести выделение надо удерживать SHIFT.

Чтобы увеличить длительность достаточно потянуть за правый край ноты, но если включен CAPSLOCK на клавиатуре, то менять размер можно и за правый край.

Кроме того в режиме CAPSLOCK, при изменении размера выделенной области он будет меняться целиком, при выключенном же будут меняться только размеры нот по отдельности.

Привязка к сетке действует также как и в плейлисте.

Mixer

  • Master – Общий канал, все send и insert треки проходят через него и уже потом на выход.
  • Insert – Обычные каналы (таких на микшере 64 штуки), обычно связанный с каким-нибудь генератором или семплером.
  • Send – редуцированные каналы (4 шт).

Чтобы привязать какой-нибудь канал к треку микшера следует в окошке FX окна Channel Settings выбрать цифру нужного трека, либо в микшере нажав правой кнопкой на нужном треке, выполнить Link Selected Channels — To this track (Либо CTRL+L на клавиатуре). В последнем случае к данному треку привяжутся все выбранные каналы. Если выполнить Link Selected Channels — Starting from this track (SHIFT+CTRL+L), то выбранные каналы привяжутся по-порядку к каждому треку начиная с выбранного.

Browser

  • Channel presets – сохранённые настройки каналов. Здесь можно найти кучу настроенных генераторов.
  • Current Project – секция текущего проекта. Здесь храниться история действий и то из чего состоит прокет, клипы, каналы эффекты.
  • Mixer Presets – настройки треков микшера.
  • Packs – банки семплов.
  • Projects – проекты.

Channel Settings

Настройки канала. Для начала достаточно знать, в верхней части расположены регуляторы громкости, баланса и питч, рядом с которым регулируется величина отрезка регулирования питча в октавах. Правее окошко FX номер в котором соответствует треку микшера к которому привязан данный канал.

Ниже расположено несколько вкладок. Про назначение их постараюсь объяснить в части второй.

Итак. Вдоволь начитавшись и насмотревшись картинок хочется уже что-нибудь сочинить.
Создадим новый проект использовав готовый трансовый шаблон. Для этого выполняем File – New from template – Genere — Trance.


В первом паттерне сделаем ударную партию:

Устанавливаем режим воспроизведения в pat (жёлтый квадратик сверху) и жмём на Play или на пробел. Слушаем. Останавливаем воспроизведение, ещё раз нажав пробел или Stop сверху.


Во втором паттерне сделаем бас партию. Открываем Piano Roll для канала Trance Bass (правый клик на названии канала Trance Bass – Piano roll). Рисуем там примерно вот так:


В третьем паттерне тоже будет бас партия. Открываем Piano Roll для канала Trance Bass и рисуем:


Во третьем и четвёртом паттерне создадим небольшую мелодию:



Теперь откроем Playlist и расставим паттерны как-то так.

Устанавливаем режим воспроизведения в song (вся песня). Слушаем. Радуемся.
То что получилось у меня забираем здесь:
Проект Fl Studio
Рендер MP3 (128kbps)
Рендер MP3 (320kbps)
Конечно работа над треком не заканчивается, но курс молодого бойца музыкального фронта пройден.
To be continued…
UPD: приму в комментах пожелания и предложения по поводу того, что бы вы хотели увидеть в следующих статьях.

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

  • Для получения списка плагинов эффектов FL Studio, см. страницу Плагины эффекты программы.
  • Для получения списка поддерживаемых стандартов плагинов, см. раздел Поддерживаемые стандарты эффектов.

Но подождите! Если вам необходимо использовать более 10 эффектов на одном канале микшера вы можете загрузить Patcher в один из слотов и создать цепь из множества эффектов, как вам этого хочется или сделать посыл одного канала на другой.

Fl studio Mixer fx.jpg

  • Выпадающее меню слота эффекта - выберите эффект для загрузки из выпадающего меню.
  • Название эффекта - щёлкните левой кнопкой мыши, чтобы открыть плагин, щёлкните правой кнопкой мыши, чтобы переименовать слот.
  • Выключатель эффекта - отключает эффект, но не отключает звук, проходящий через слот (автоматизируемый).
  • Уровень подмешивания эффекта - Примечание: Обычно оставляйте это параметр на 100%, а Wet/Dry подмешивание изменяйте в самом плагине. Если плагин вводит задержку при обработке (так делает большинство плагинов), то при изменении этого параметра между обработанным и необработанным сигналами может возникнуть задержка, что приведёт к эффекту гребенчатого фильтра. Как правило, это наиболее заметно на высоких частотах, таких звуков как тарелки. Кратко? Не трогай эту ручку!.

Содержание

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

  • Загрузка эффектов - чтобы загрузить плагин эффект, выберите свободный слот и откройте на нём выпадающее меню эффектов после чего выберите плагин из списка избранного (из подменю Select). В верхней части меню также есть опции, чтобы открыть сборник плагинов (эффекты расположены справа), браузер базы данных плагинов и т.д., если вам нужно получить доступ к большему количеству плагинов которые вы ещё не выбрали в качестве избранных. Примечание: После того, как в любой слот канала микшера загружается любой эффект на данном канале загорается иконка оранжевым цветом, это будет сигнализировать вам о том что сюда загружен эффект (нажатие по иконке отключает все эффекты на данном канале).
  • Удаление эффекта - откройте выпадающее меню эффектов на целевом слоте эффекта и в подменю Select выберите пункт (delete).
  • Редактирование параметров эффекта - интерфейс эффекта может быть открыт, путём щелчка левой кнопкой по названию эффекта, чтобы закрыть интерфейс эффекта нажмите по названию снова.
  • Обход эффекта - чтобы отключить эффект используйте выключатель (этот выключатель может быть автоматизирован). Обратите внимание, что звук всё ещё будет проходить через канал микшера и любые другие активные эффекты в стеке. На каждом канале микшера с помещёнными эффектами загорится оранжевым цветом иконка . Нажмите по иконке, чтобы отключить все эффекты канала.
  • Подмешивание эффекта - регулируйте смешивание обработанного/сухого сигналов для каждого эффекта с помощью ручки уровня подмешивания эффекта. Полностью влево = 0% эффекта, полностью вправо = 100% эффекта. Примечания: 1. Эффекты обычно имеют свои собственные внутренние параметры смешивания сухого/обработанного сигналов, поэтому поворот этой ручки в 100% не гарантирует 100% обработанный сигнал. 2. Обычно оставляйте это параметр на 100%, а Wet/Dry подмешивание изменяйте в самом плагине. Если плагин вводит задержку при обработке (так делает большинство плагинов), то при изменении этого параметра между обработанным и необработанным сигналами может возникнуть задержка, что приведёт к эффекту гребенчатого фильтра. Как правило, это наиболее заметно на высоких частотах, таких звуков как тарелки. Кратко? Не трогайте эту ручку! Если вы не знаете, что вы делаете.
  • Изменение порядка/перемещение эффектов в пределах канала - поместите курсор мыши над эффектом который вы хотите переместить, и покрутите колесо мыши, эффект будет перемещаться вверх/вниз в зависимости от направления вращения. Не перемещайте мышь, выполняя это действие, потому как эффект будет выпущен. Альтернатива: Выберите выпадающее меню эффекта и используйте команды Move Up/Move Down. Просто откройте меню и нажмите кнопку U или D на клавиатуре. Примечание: Порядок эффектов может иметь сильное влияние на звук, поэтому думайте о порядке, в котором применяются эффекты.
  • Копирование/перемещение эффекта - вместе с его текущими настройками, на другой канал микшера, в выпадающем меню эффекта который вы хотите копировать выберите пункт Save preset as. , нажмите кнопку мыши и не отпуская кнопки начните перетаскивать курсор на другой канал микшера на который вы хотите копировать эффект.
  • Select/Replace (выбрать/заменить, Select - если слот пустой, Replace - когда слот занят) - содержит список всех эффектов, отмеченных как фавориты. Выбор эффекта из этого меню назначит его на соответствующий слот. Выберите More. , чтобы открыть окно выбора плагинов, которое содержит список всех эффектов, доступных в FL Studio. Дважды щёлкните по названию плагина, чтобы назначить его на слот. Установите флажок в столике F, в начале каждого плагина, чтобы отметить его как фаворит (все эффекты у которых установлен флажок F, появятся в списке фаворитов). Примечание: Чтобы увидеть недавно установленные плагины, щёлкните Refresh в нижней части окна выбора плагинов и выберите Fast Scan (рекомендуется использовать Fast Scan вместо Scan & Verify, потому что при выборе Scan & Verify может произойти сбой FL Studio с некоторыми плохо запрограммированными плагинами).
  • Presets (пресеты) - содержит подменю со списком пресетов для эффекта.
    • Randomize (случайно) даёт случайные значения для опубликованных (т.е. известных FL Studio) параметров эффекта. Если эта функция включена, выбранный пресет будет загружен на 50% со случайными настройками, таким образом вы можете быстро смешивать различные пресеты и создавать новые эффекты.
    • Hybridize (гибридизация) смесь между предыдущим и следующим выбранным пресетом.
    • Tree display (отобразить дерево) отображает список пресетов в виде "дерева". Меню пресетов отключено, если на слоте нет установленного эффекта.

    Эти параметры полезны для сохранения настроек плагина, когда вы делаете правки, для сравнивания оригинала и отредактированной версии.

    • Store in spare state (сохранить в запасное состояние) - сохраняет текущие настройки плагина в временный буфер (запасное состояние).
    • Flip with spare state (поменять местами с запасным состоянием) - переворачивает текущие настройки плагина с теми которые находятся в запасном состоянии.
    • Link all parameters. (привязать все параметры) - открывается диалоговое окно привязки которое предназначено для привязки автоматизируемых параметров, привязка осуществляется путём "перемещения" аппаратных контроллеров, после чего производится автоматический переход к следующему пункту в списке параметров, который готового к следующей привязке. Есть возможности для пропуска параметров или перепрыгивания на другие пункты списка, как описано ниже:
      • Основная операция - в меню выберите Link all parameters, и передвиньте первый аппаратный контроллер который должен быть привязан (создастся привязка с первым элементом в списке "текущий параметр"), при перемещении второго аппаратного контроллера будет произведена автоматическая привязка со следующим параметром и так далее, пока не будет достигнут конец списка параметров или не будет закрыто диалоговое окно привязки. Вы можете продолжить перемещать один и тот же аппаратный контроллер (в этом случае все параметры будут привязаны к одной аппаратной ручке) или вы можете перейти к новому аппаратному контроллеру, в таком случае будет привязан этот новый аппаратный контроллер.
      • Чтобы пропустить привязку - щёлкните левой кнопкой мыши по кнопке Skip (пропустить) в нижней части диалогового окна привязки (сразу слева от кнопки Accept (принять)).
      • Чтобы перейти к нужному параметру - используйте меню текущего параметра (самое верхнее в диалоговом окне привязки) и выберите целевой параметр который вам нужен. После этого можно продолжить автопривязки с этой точки в списке, перемещая аппаратные контроллеры, как до этого, или перейти к другому параметру в списке, используя меню текущего параметра, как описано ранее.
      • Allow threaded processing (разрешить многопоточную обработку) - улучшает многопоточность и производительность многоядерных процессоров. Примечание: Некоторые сторонние плагины при включенной многопоточности могут работать хуже. Если вы столкнулись с прерываниями или сломанным звуком, попробуйте включить эту опцию.
      • Smart disable (умное отключение) - прекращает обработку плагина, когда он неактивен. Снижает нагрузку на процессор. Существует глобальное умное отключение в панели настроек звука F10 или в меню Tools > Macros > Misc > Switch smart disable for all plugins. Примечание: Smart disable активен только во время живого воспроизведения, он временно отключается при рендеринге.
      • Move Up (переместить вверх) - перемещает эффект на один слот вверх. Альтернатива: Наведите курсор мыши на название слота эффекта и покрутите колесо мыши вверх.
      • Move Down (переместить вниз) - перемещает эффект на один слот вниз. Альтернатива: Наведите курсор мыши на название слота эффекта и покрутите колесо мыши вниз.
      • View Editor (посмотреть редактор) - открывает интерфейс плагина. Альтернатива: Нажмите по названию показанному в слоте плагина.
      • Rename (переименовать) - переименовать слот плагина.

      Вы также можете получить доступ к этому всплывающему меню из собственных опций эффекта:

      Fl Studio menu plugin.jpg

      Опция Save preset as. может быть перетащена на другую канала или слот эффектов микшера, чтобы дублировать текущий эффект и его настройки.


      Сегодня я хочу рассказать о том, какие основные приемы используются при создании музыкальных произведений в программе FL Studio. Я сам пишу музыку и использую для ее обработки различные инструменты, в том числе продукты от компании Image-Line («FL Studio» и «Deckadance»), и вхожу в ее Power Users List (в этом списке я – единственный музыкант из России). В этом топике я расскажу о том, как использовать прием наслоения (на примере ударных партий и вокала), а также о том, как подготовить записанный вокал к последующей обработке.

      Наслоение

      Этот приём часто используется музыкальными продюсерами. Так повелось, что музыкальные продюсеры в России по сути являются менеджерами артистов, в остальном же мире продюсеры — это люди, которые создают музыку в так называемых секвенсорах (музыкальных программах по созданию музыки). Например, Lady Gaga, даже если и умеет сочинять песни, не может сама создать конечный продукт и с этим ей помогают те самые продюсеры. Один из известнейших продюсеров, работавший с ней — RedOne.

      Так вот, вернемся к наслоению. Этот прием используется для того, чтобы придать полноту звучания любому из ваших инструментов, а также треку в целом. Наиболее часто он используется при создании партии ударных и вокальных партий. Сначала рассмотрим наслоение на примере партии ударных.

      Наслоение при создании ударных партий. Я пишу акустическую и электронную музыку, используя при этом библиотеки предзаписанных семплов. Такие библиотеки содержат в себе звуки, записанные в профессиональной студии, доступ к которой не всегда имеется у начинающих музыкантов и продюсеров. Примером таких звуков может быть один удар в том, бочка, хлопок в ладоши, перкуссионный барабан и другие подобные вещи. Такие библиотеки можно легко найти в свободном доступе или в продаже в интернете. Они называются «One Shot Samples» или «One Shot Libraries».

      Также оправдано использование уже записанных заранее ударных петель. Они обычно представляют собой уже полные и готовые версии ударных и могут быть разбиты на части (например, бочки отдельно, тарелки отдельно, перкуссии отдельно, тамбурины отдельно), и если сложить их вместе, получится полноценная ударная партия. Они называются «Drum Loops» и в большом количестве представлены в интернете. Помимо прочего, существует множество программ с готовыми библиотеками ударных, ярким примером которых являются «XLN Audio Addictive Drums», «Spectrasonics StyleRMX», «Native Instruments Machine» и другие.

      Рассмотрим наслоение основных бочек («kick») на указанном ниже рисунке. Для того, чтобы получить насыщенный и плотный звук бочки, я использую три их разные вариации. Студийная плотная бочка (Studio Kick), сэмпл акустической бочки из библиотеки готовых ударных (Acoustic Kick) и электронная сгенерированная бочка (Electronic Kick).


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


      При комбинировании ударных, составленных из «One Shot»-сэмплов, можно использовать такие программы, как «Native Instruments Battery» или «Image-Line FPC». Там вы сможете выставить громкость каждого из инструментов, разнести их по панораме. На рисунке внизу представлены 3 бочки, совмещенные в одной ячейке программ «Image-Line FPC».


      Кроме того, в музыкальном продюсировании часто используют наслоение уже готовых партий ударных петель. В своей музыкальной практике я использую оба этих подхода, а именно: сам составляю часть партии ударных из «One Shot»-сэмплов, а часть заполняю уже готовыми петлями ударных, подобранных мною из специальных библиотек или программ. На примере внизу зеленым цветом выделены 6 уровней ударных, составленных мной (3 уровня бочки, один хлопок, закрытые тарелки и металлические перкуссии), а так же 4 уровня готовых ударных петель, закрашенных синим. Все вместе они составляют полную ударную партию песни, использованную в припеве. Такой комплексный подход позволяет получить более полноценное звучание ударных.


      Работа с вокалом

      Начальная обработка вокала. Рассмотрим обработку вокала на начальном этапе, а затем уже поговорим о наслоении вокала. Естественно, первым делом вокал нужно записать. Для этого я использую встроенный в FL Studio плагин «Edison». Чтобы записать вокал, нужно выбрать входящий канал, к которому подключен ваш микрофон, а затем на этот же канал добавить плагин «Edison», выставить переключатели «NOW» и «IN NEW PROJECT», после нажать кнопку записи и записать ваш вокал (все указано на рисунках внизу).



      Не спешите сохранять вокал, сразу после того как он будет записан. Для начала нужно избавиться от лишних шумов, которые обычно выдает ваш микрофон, провода, аудиокарта, а также источники звука в помещении. Для этого постарайтесь немного помолчать после записи вокала, тем самым оставив небольшой участок, с которого можно будет считать шумы, образующиеся при записи. Затем выберите данный участок и откройте «Clean Up Tool», как показано на рисунке внизу.


      Затем плагину необходимо будет составить так называемую «карту шумов», которую он и будет исключать из вашего вокала. Чтобы сделать это нажмите кнопку «Acquire noise profile».



      Затем (в окне «Edison») вы увидите и услышите, что ваш вокал заметно очистился.

      Теперь разберем, как убрать из вашего вокала слишком громкие согласные «С» и «З». В производстве данный процесс называется «De-essing». Дэ-эссинг можно выполнить и с помощью плагинов (например, «AVOX Sybil» или «Fabfilter Pro-C»), но этот процесс можно провести и вручную. Это актуально потому, что многие плагины для дэ-эссинга все-таки подвергают обработке и тем самым искажают весь ваш вокал, а не только согласные, и, чтобы оставить остальные части вашей записи нетронутыми, можно использовать «ручной» подход.

      Для этого загрузите ваш вокал в «Edison». Переключившись на спектральный вид (как показано внизу):


      … вы увидите громкие звуки «С» и «З» (отмечены на рисунке ниже):


      Затем выделите в «Edison» один из участков, где расположены согласные и откройте «Equalize», там вы увидите этот участок более подробно. Обычно звонкие согласные располагаются в диапазоне от 5K до 15K. Вырежьте эти частоты, выставьте «Mix» примерно на 50% и нажмите «Accept» (все указано на рисунке внизу).


      Далее нужно проделать эту процедуру со всеми звонкими согласными «С» и «З». Также можно поступить и с громкими вдохами, только эквализировать нужно будет весь диапазон частот (по сути просто сделать их тише).

      Наслоение при создании вокальных партий. Теперь рассмотрим приём наслоения, который можно и нужно использовать и при создании вокальных партий. Всем известные бэк-вокалы – это, по сути, и есть наслоение. Однако, в данном вопросе есть несколько различных подходов.

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

      Второй подход заключается в том, что вы можете использовать такие программы, как «Antares Autotune» или «Image-Line Pitcher», чтобы создавать гармонические бэк-вокалы, имея только одну главную вокальную партию. Вкратце опишу процесс создания этих беков.

      Сначала необходимо записать основную вокальную партию (так называемый «Lead Vocal»). Затем обработать её (про обработку вокала речь пойдет чуть ниже) и импортировать в FL Studio. Далее необходимо послать вокал на канал эффектов, где расположен Pitcher, как указано ниже.



      В Pitcher необходимо выставить следующие показатели: включить кнопку «MIDI» (когда вы включите эту кнопку в левом нижнем углу появится номер порта, его необходимо запомнить), и кнопку «HARMONIZE». Также можно выставить переключатель «Replace-Mix» в одно из двух положений. Положение «Replace» полностью убирает основной вокал и оставляет только сгенерированные плагином гармоники. Как не сложно догадаться, положение Mix оставляет и ваш вокал, и сгенерированные гармоники.


      Затем необходимо добавить в инструменты «MIDI out», и в его настройках указать порт, который ранее был указан в левом нижнем углу Pitcher.


      Затем, открыв «Piano Roll», можно задавать гармоники для генерации (плагином). Нужно указать ноты, которые плагин будет генерировать исходя из вашего основного вокала, и расставить их во времени таким образом, чтобы они совпадали с основным вокалом и создавали правильные гармоники, например так, как указано на рисунке внизу.


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

      Ясно, что чем больше слоёв бэк-вокалов, тем полнее звучит вокальная партия. Но важно помнить, что каждый раз петь одинаково не получится, и порой одна фраза будет звучать длиннее другой и т.п. Поэтому, бэк-вокалы нужно расставить точно в соответствии с вашим ведущим вокалом (как указано на рисунке внизу).


      Как видно, каждый бэк-вокал подогнан к другим и к ведущему вокалу. Если этого не сделать, вокальная партия целиком будет звучать как месиво. Порой, я использую до 10 слоёв вокала (например, при создании хора в песне), и поэтому для меня это вдвойне актуально. Надеюсь, мои советы окажутся для вас полезными. Результаты того, как я сам пользуюсь этими приемами, можно послушать на моем Soundcloud, а еще можно принять участие в моей кампании на Indiegogo – не сочтите за грубую рекламу и спасибо за внимание!

      Всем привет! Меня зовут Елизавета Добрянская, я frontend-разработчик в компании ДомКлик. Моя команда занимается разработкой сервисов, предназначенных для коммуникаций с клиентом.

      В этой статье я поделюсь своим кратким обзором внедрения стейт-менеджера Effector в продуктовый проект на стеке React + TypeScript, а также покажу на примере, как легко это можно сделать.


      Первая встреча с Effector

      Боль как начало

      Выходим на новый уровень — получаем удовольствие

      Немного предыстории

      Моя команда занимается разработкой разных видов сервисов коммуникаций — отдельных виджетов, npm-пакетов, SSR, полностраничных сайтов. У всех этих продуктов есть одно важное требование: интерфейс должен быстро реагировать на действия пользователя, при этом сам сервис должен выдерживать большую нагрузку. А это значит, что на нас, как на разработчиках, лежит большая ответственность за то, как мы проектируем frontend.

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

      Выбирали между Redux, Mobx и Effector. Первые два мы пробовали, и впечатления остались очень неоднозначные. И как ясно из статьи, выбрали последний, потому что любопытно было узнать, что же за зверь такой этот Effector и чем он может помочь нам. К тому же новый проект создавался для внутренних нужд и на нем вполне можно было поэкспериментировать.

      ATTENTION: приведенные в статье размышления являются сугубо субъективными, поэтому ваше мнение может отличаться от моего. Они носят обозревательный характер и позволяют познакомиться с Effector на моем примере.

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

      Первая встреча с Effector

      Что есть Effector? Модный, молодежный реактивный стейт-менеджер :) А потому понять его базовые принципы оказалось довольно просто. В его основе лежат три простых базовых сущности:

      Хранилище (Store) — это место, где мы храним наши данные.

      Событие (Event) — это действие, которое каким-то образом модифицирует хранилище.

      Эффект (Effect) — это асинхронное действие, связанное с хранилищем.

      У каждой из сущностей есть большое количество различных методов, позволяющих изменять входные/выходные параметры, связывать сущности между собой и выполнять другие крутые штуки.

      Effector позволяет работать с разными типами приложений, таких как React, React Native, Vue, Node.js. Кроме того, он поддерживает TypeScript.

      Для работы с React есть удобный пакет effector-react , предоставляющий несколько интерфейсов взаимодействия React-компонентов с Effector. Самый простой способ — использовать хук useStore для максимально лаконичной работы с хранилищами Effector. Вот пример работы с описанным выше хранилищем $users , где по нажатию на кнопку мы добавляем в хранилище пользователя-заглушку:

      Ради интереса можно попробовать сделать то же самое, но с хуком useList . Он предоставляет упрощенный вариант взаимодействия с хранилищем-массивом. Реализация аналогичной задачи:

      Об этом и многом другом можно почитать в официальной документации Effector. Поэтому долго не будем на этом останавливаться и перейдем к «самому сладенькому». Далее я расскажу про боли и страдания в процессе работы с этим, казалось бы, очень простым и удобным стейт-менеджером. Без купюр.

      Боль как начало

      Не стоит думать, что статья про несовершенный, наполненный кучей проблем и багов продукт увидела бы свет. Проблемы, описанные здесь, я встретила будучи полным новичком в Effector. По итогу они были повержены, а автор этой статьи — счастлив :) Если вы встретите похожие проблемы, то можете воспользоваться приведенными решениями или модернизировать их, чтобы создать своё.

      1) TypeScript

      Да, самым сложным для меня оказалась поддержка такого же модного и молодежного, как и Effector, языка программирования TypeScript. В официальной документации Effector-а все примеры приведены на чистом JavaScript. Есть, конечно, маленькая робкая вкладка "TypeScript", которая, в основном, даёт только понимание того, куда нужно добавить типы в описании основных сущностей, но на этом всё. Поэтому сначала я использовала any , а под конец пришлось очень много страдать с расстановкой правильных типов (особенно касательно эффектов).


      Так, например, родились следующие интерфейсы функций (слабонервным не смотреть):

      Небольшие пояснения по коду.

      Эффекты имеют следующий формат типизации:

      Тип передаваемого в эффект значения.

      Тип возвращаемого из эффекта значения.

      Тип ошибки для случая, если что-то пошло не так.

      Про функцию serializeDataBeforeFetch расскажу ниже, а пока стоит обратить внимание на типы метода attach , предоставляемого Effector:

      Тип передаваемого значения.

      Тип данных хранилища.

      Тип эффекта, используемого внутри attach .

      2) Асинхронные события

      Поначалу было очень сложно это понять и принять. Представьте ситуацию, что вы написали код, и при тестировании он выдает неожиданные результаты и ошибку. Вы пытаетесь отладить ошибкоопасное место с помощью точек останова, но видите, что в дебаг-режиме всё работает, как нужно. А вот в обычном режиме (и на самом деле) всё не так, ничего не работает. То есть в режиме отладки вы как бы «притормаживаете» свой код, и поэтому он отрабатывает корректно, а на самом деле есть проблемы. Собственно, это просто нужно принять к сведению торопливому разработчику — действия в Effector происходят асинхронно (подобно setState в React).

      3) Получение доступа к текущему состоянию

      Этот пункт про то, что нужно внимательно смотреть документацию :)

      Некоторые методы в Effector могут первым параметром принимать текущее состояние хранилища, а некоторые — нет. Поэтому нужно внимательно выбирать методы обработки.

      4) Четкий интерфейс работы с сущностями

      Почему это может быть плохо? Потому что сложно отслеживать результат изменения хранилища в рамках связанного компонента. Интерфейс взаимодействия упрощенно выглядит так:

      Хранилище — readonly. В компоненте мы на него подписываемся, и все изменения считываем реактивно.

      Событие — по сути, setter. Мы говорим «измени моё хранилище, добавь в него эти данные и удали те». Событие ничего не возвращает. Поэтому его нельзя использовать как getter и получить отфильтрованные данные из хранилища напрямую (об этом будет далее).

      Эффект — аналогичен событию, но имеет свойства .done , .fail , .pending и .finally , с которыми можно взаимодействовать (об этом тоже будет далее).

      5) Отсутствие геттеров

      Если вы раньше работали с Mobx или Redux, то привыкли, что у модели можно задать геттеры и обращаться к ним для получения, например, отфильтрованных или хитро измененных данных. Как было сказано выше, в Effector такого нет. Но. Зачем нам геттер, если мы можем создать новое хранилище?

      Для нас привычно, что хранилище относится к модели 1 к 1. Здесь эта логика рушится в пух и прах. Мы можем создавать несколько хранилищ, связанных друг с другом, как нам нужно.

      Пример нового хранилища, зависимого от основного:

      6) Отслеживание статуса эффектов

      У эффектов есть промисоподобные свойства .done , .fail , .pending и .finally . Поэтому кажется, что очень удобно отслеживать статус. Но обычно он важен для отображения данных в компоненте: когда мы послали запрос на данные и ожидаем ответа, нужно показывать лоадер; когда данные загружены с ошибкой — нужно показать ошибку. Поэтому необходимо каким-то образом прокидывать эти статусы в компонент. Как было сказано выше, геттеров нет. Но есть хранилища! Можно создать хранилище, сочетающее в себе все статусы:

      В приведённом выше варианте создания хранилища $fetchError был использован еще один метод Effector — restore . Он позволяет создать хранилище, содержимое которого будет зависеть от события наступления события. Очень удобно использовать для очистки (сброса в начальное состояние) хранилища.

      Создать хранилище $fetchError можно и через стандартный createStore :

      Выходим на новый уровень - получаем удовольствие

      Несмотря на большое количество непоняток, которые может встретить начинающий эффекторец, в процессе ты понимаешь, что он очень удобный. Ниже я выделила основные пункты, которые понравились лично мне.

      1) Никаких лишних телодвижений для подписки на хранилище

      При грамотно созданных моделях в компоненте не нужно страдать и отслеживать все свои телодвижения по обновлению хранилища. Подключили его в компонент — он всегда актуален и перерисовывается при каждом обновлении хранилища. Никаких тебе Mobx-овых @action , @computed и прочей ручной настройки. Каеф :)

      2) Меньше кода (и меньше размер)

      Нет надобности создавать отдельные классы-модели, прописывать им интерфейсы. Создали хранилище, создали событие, подписали событие на хранилище — готово!

      И да, размер двух подключенных библиотек effector и effector-react составляет около 8 Кб (у Mobx сумма подключенных библиотек — около 15-20 Кб)!


      3) Минимальное взаимодействие компонента и хранилища

      Когда я решала похожую задачу на Mobx, у меня было очень странное взаимодействие компонента и хранилища:

      Из компонента посылаем запрос на бек (потому что нужно отслеживать статус запроса).

      Здесь же получили данные и положили их в хранилище.

      Т.е. компонент используется как прокси в этом случае. И это кажется очень странным, потому что зачем? Нам нужно просто положить данные из ответа на запрос в хранилище, без взаимодействия с компонентом.

      Effector позволяет реализовать работу напрямую: из хранилища послал запрос, в хранилище положил ответ. И наоборот. Это, например, очень удобно делается с помощью метода forward . Мы перенаправляем выход эффекта на вход события.

      Пояснения по коду.

      Стек вызова упрощенно будет выглядеть следующим образом:

      update(. ) — вызываем событие на обновление хранилища из компонента.

      updateStore — хранилище обновляется согласно переданному хендлеру.

      serializeDataBeforeFetch — после обновления хранилища вызывается функция преобразования его данных в пейлоад. В ней используется метод Effector attach , позволяющий сделать forward с модификацией.

      updateUserFx — вызываем эффект на обновление.

      updateUser — делаем запрос на бек.


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

      4) Крутое и отзывчивое сообщество

      Когда я поняла, что в документации и гугле нужных мне примеров нет от слова совсем, я решила действовать радикально и пойти в сообщество Effector в Telegram. Я задала один вопрос «от хлебушка», на который я получила за один вечер. 5 разных вариантов решений от разных разработчиков! Причём решения были разные по уровню сложности, я могла выбрать любое из них, или скомбинировать и создать своё. Некоторые решения были очень хорошо расписаны и объяснены, некоторые содержали продуктовый код с примерами прямо на GitHub, некоторые содержали ссылки на воркшопы по Effector. В общем, я приятно удивлена, что есть такое классное сообщество, где ребята всячески поддерживают друг друга :)

      Да и в целом в проекте я использовала версию Effector 21.5.0. То есть ребята мажорно обновляли свой проект 20 раз. Это очень существенно!

      Best practices

      [Для тех, кто хочет знать больше] Об этом есть статья в самой документации, но я кратко продублирую.

      Названия хранилищ содержат символ $ . Например, $users .

      Названия эффектов содержат суффикс Fx . Например, getUsersFx .

      Файловая структура. В корне исходников создается папка models , внутри которой лежат все модели, работающие с Effector. У каждой модели есть два файла:

      index.ts — файл, где мы объявляем все хранилища, события, эффекты. Это файл начального объявления;

      init.ts — файл, где мы описываем все хранилища, события, эффекты и связываем их между собой. Здесь вся бизнес-логика.

      Итоги

      В заключение хочу заметить, что Effector выглядит наиболее приятным в использовании стейт-менеджером. Он позволяет легко разделять работу с данными по разным хранилищам и не держать всё в одном (декомпозиция лайк). В нем используется неизменяемый стейт и нет необходимости писать много дублирующегося кода, что повышает производительность вашего проекта. Effector обладает удобным API и прекрасным сообществом разработчиков, поддерживающих проект.

      Я определенно убеждена, что использование Effector в продуктовой разработке — одно из самых удобных решений. Особенно, если в нем разобраться глубже, чем просто на уровне новичка. Поэтому внедряйте новый стейт-менеджер в свои проекты, пишите комментарии к этой статье и давайте продолжать делать крутой веб вместе ;)

      Читайте также: