live session что это
PHP для начинающих. Сессия
Начну с сессий — это один из самых важных компонентов, с которыми вам придется работать. Не понимая принципов его работы — наворотите делов. Так что во избежание проблем я постараюсь рассказать о всех возможных нюансах.
Но для начала, чтобы понять зачем нам сессия, обратимся к истокам — к HTTP протоколу.
HTTP Protocol
Изначально подразумевали, что по этому протоколу будет только HTML передаваться, отсель и название, а сейчас чего только не отправляют и =^.^= и(•_ㅅ_•)
Чтобы не ходить вокруг да около, давайте я вам приведу пример общения по HTTP протоколу.
Вот пример запроса, каким его отправляет ваш браузер, когда вы запрашиваете страницу http://example.com :
А вот пример ответа:
Это очень упрощенные примеры, но и тут можно увидеть из чего состоят HTTP запрос и ответ:
Т.е. если украсть cookie из вашего браузера, то можно будет зайти на вашу страничку в facebook от вашего имени? Не пугайтесь, так сделать нельзя, по крайней мере с facebook, и дальше я вам покажу один из возможных способов защиты от данного вида атаки на ваших пользователей.
Давайте теперь посмотрим как изменятся наши запрос-ответ, будь там авторизация:
Метод у нас изменился на POST, и в теле запроса у нас передаются логин и пароль. Если использовать метод GET, то строка запроса будет содержать логин и пароль, что не очень правильно с идеологической точки зрения, и имеет ряд побочных явлений в виде логирования (например, в том же access.log ) и кеширования паролей в открытом виде.
Как можно заметить, заголовки отправляемые браузером (Request Headers) и сервером (Response Headers) отличаются, хотя есть и общие и для запросов и для ответов (General Headers)
Сервер узнал нашего пользователя по присланным cookie, и дальше предоставит ему доступ к личной информации. Так, ну вроде с сессиями и HTTP разобрались, теперь можно вернутся к PHP и его особенностям.
PHP и сессия
Я надеюсь, у вас уже установлен PHP на компьютере, т.к. дальше я буду приводить примеры, и их надо будет запускать
Вот вам статейка на тему PHP is meant to die, или вот она же на русском языке, но лучше отложите её в закладки «на потом».
Перво-наперво необходимо «стартовать» сессию — для этого воспользуемся функцией session_start(), создайте файл session.start.php со следующим содержимым:
Запустите встроенный в PHP web-server в папке с вашим скриптом:
Запустите браузер, и откройте в нём Developer Tools (или что там у вас), далее перейдите на страницу http://127.0.0.1:8080/session.start.php — вы должны увидеть лишь пустую страницу, но не спешите закрывать — посмотрите на заголовки которые нам прислал сервер:
Там будет много чего, интересует нас только вот эта строчка в ответе сервера (почистите куки, если нет такой строчки, и обновите страницу):
Увидев сие, браузер сохранит у себя куку с именем `PHPSESSID`:
PHPSESSID — имя сессии по умолчанию, регулируется из конфига php.ini директивой session.name, при необходимости имя можно изменить в самом конфигурационном файле или с помощью функции session_name()
И теперь — обновляем страничку, и видим, что браузер отправляет эту куку на сервер, можете попробовать пару раз обновить страницу, результат будет идентичным:
Итого, что мы имеем — теория совпала с практикой, и это просто отлично.
Обновляем страничку и видим время сервера, обновляем ещё раз — и время обновилось. Давайте теперь сделаем так, чтобы установленное время не изменялось при каждом обновлении страницы:
Обновляем — время не меняется, то что нужно. Но при этом мы помним, PHP умирает, значит данную сессию он где-то хранит, и мы найдём это место…
Всё тайное становится явным
В вашей конфигурации путь к файлам может быть не указан, тогда файлы сессии будут хранится во временных файлах вашей системы — вызовите функцию sys_get_temp_dir() и узнайте где это потаённое место.
Так, идём по данному пути и находим ваш файл сессии (у меня это файл sess_dap83arr6r3b56e0q7t5i0qf91 ), откроем его в текстовом редакторе:
Как видим — вот оно наше время, вот в каком хитром формате хранится наша сессия, но мы можем внести правки, поменять время, или можем просто вписать любую строку, почему бы и нет:
Так, что мы ещё не пробовали? Правильно — украсть «печеньки», давайте запустим другой браузер и добавим в него теже самые cookie. Я вам для этого простенький javascript написал, скопируйте его в консоль браузера и запустите, только не забудьте идентификатор сессии поменять на свой:
Вот теперь у вас оба браузера смотрят на одну и туже сессию. Я выше упоминал, что расскажу о способах защиты, рассмотрим самый простой способ — привяжем сессию к браузеру, точнее к тому, как браузер представляется серверу — будем запоминать User-Agent и проверять его каждый раз:
Ключевое слово в предыдущем абзаце похоже, в реальных проектах cookies уже давно «бегают» по HTTPS протоколу, таким образом никто их не сможет украсть без физического доступа к вашему компьютеру или смартфону
Стоит упомянуть директиву session.cookie-httponly, благодаря ей сессионная кука будет недоступна из JavaScript’a. Кроме этого — если заглянуть в мануал функции setcookie(), то можно заметить, что последний параметр так же отвечает за HttpOnly. Помните об этом — эта настройка позволяет достаточно эффективно бороться с XSS атаками в практически всех браузерах.
По шагам
А теперь поясню по шагам алгоритм, как работает сессия в PHP, на примере следующего кода (настройки по умолчанию):
А есть ли жизнь без «печенек»?
PHP может работать с сессией даже если cookie в браузере отключены, но тогда все URL на сайте будут содержать параметр с идентификатором вашей сессии, и да — это ещё настроить надо, но оно вам надо? Мне не приходилось это использовать, но если очень хочется — я просто скажу где копать:
А если надо сессию в базе данных хранить?
Отдельно замечу, что не надо писать собственные обработчики сессий для redis и memcache — когда вы устанавливаете данные расширения, то вместе с ними идут и соответствующие обработчики, так что RTFM наше всё. Ну и да, обработчик нужно указывать до вызова session_start() 😉
Когда умирает сессия?
За время жизни сессии отвечает директива session.gc_maxlifetime. По умолчанию, данная директива равна 1440 секундам (24 минуты), понимать её следует так, что если к сессии не было обращении в течении заданного времени, то сессия будет считаться «протухшей» и будет ждать своей очереди на удаление.
Интересен другой вопрос, можете задать его матёрым разработчикам — когда PHP удаляет файлы просроченных сессий? Ответ есть в официальном руководстве, но не в явном виде — так что запоминайте:
Самая тривиальная ошибка
Ошибка у которой более полумиллиона результатов в выдаче Google:
Cannot send session cookie — headers already sent by
Cannot send session cache limiter — headers already sent
Для получения таковой, создайте файл session.error.php со следующим содержимым:
Во второй строке странная «магия» — это фокус с буфером вывода, я ещё расскажу о нём в одной из следующих статей, пока считайте это лишь строкой длинной в 4096 символов, в данном случае — это всё пробелы
Для проверки полученных знаний, я хочу, чтобы вы реализовали свой собственный механизм сессий и заставили приведенный код работать:
Блокировка
Ещё одна распространённая ошибка у новичков — это попытка прочитать файл сессии пока он заблокирован другим скриптом. Собственно, это не совсем ошибка, это недопонимание принципа блокировки 🙂
Но давайте ещё раз по шагам:
«Воткнутся» в данную ошибку очень легко, создайте два файла:
Есть пару вариантов, как избежать подобного явления — «топорный» и «продуманный».
«Топорный»
Использовать самописный обработчик сессий, в котором «забыть» реализовать блокировку 🙂
Чуть лучше вариант, это взять готовый и отключить блокировку (например у memcached есть такая опция — memcached.sess_locking) O_o
Потратить часы на дебаг кода в поисках редко всплывающей ошибки…
«Продуманный»
Куда как лучше — самому следить за блокировкой сессии, и снимать её, когда она не требуется:
— Если вы уверенны, что вам не потребуется вносить изменения в сессионные данные используйте опцию read_and_close при старте сессии:
Таким образом, блокировка будет снята сразу по прочтению данных сессии.
— Если вам таки нужно вносить изменения в сессию, то после внесения оных закрывайте сессию от записи:
В заключение
В этой статье вам дано семь заданий, при этом они касаются не только работы с сессиями, но так же познакомят вас с MySQL и с функциями работы со строками. Для усвоения этого материала — отдельной статьи не нужно, хватит и мануала по приведенным ссылкам — никто за вас его читать не будет. Дерзайте!
HTTP сессия. Session. Состояние сеанса. Работа с сессиями в ASP.NET MVC
Давайте рассмотрим такое понятие как сессия (HTTP-сессия, Session). Или по-другому, сеанс пользователя. Почему важно понимать механизм работы сессий. И посмотрим, как можно работать с состояниями сеансов на платформе ASP.NET.
Прежде чем мы дадим определение термину «сессия», давайте немного рассмотрим предысторию, зачем вообще возникла потребность в сессиях, рассмотрим одну особенность протокола HTTP.
Одной из основных особенностей протокола HTTP является то, что он не обязывает сервер сохранять информацию о клиенте между запросами, то есть идентифицировать клиента. Это так называемый stateless-протокол. Связь между клиентом и сервером заканчивается как только завершается обработка текущего запроса. Каждый новый запрос к серверу подразумевается как абсолютно уникальный и независимый, даже если он был отправлен повторно от одного и того же источника.
Что, если оставить stateless-природу протокола HTTP и не идентифицировать пользователя? Без состояний сеанса можно легко обойтись, если на вашем сайте представлена статичная (обезличенная) информация, например, новостная статья, состоящая из текста и изображений. В таком контексте совершенно необязательно ассоциировать несколько запросов с одним пользователем. Ведь содержание статьи никак не изменится, будь то десять запросов с одного устройства, либо десять запросов от разных людей с разных устройств.
Но как только мы собираемся передать персональную информацию на сервер, нам необходимо каким-то образом сделать так, чтобы сервер ассоциировал все наши запросы именно с нами, и в будущем верно определял все исходящие от нас запросы. Если этого не сделать, то с каждым новым запросом мы будем вынуждены повторно передавать необходимые персональные данные. Например, логин для входа в личный кабинет на сайте, или такую информацию как имя, адрес доставки, при совершении покупки в интернет-магазине.
Вот как раз в таких ситуациях, когда требуется персонализировать запросы от одного клиента, мы будем использовать сессии.
Когда клиент впервые передает персональные данные в запросе, на сервере создается новая сессия для этого клиента. В период времени жизни сессии все запросы от этого клиента будут однозначно распознаны и связаны с ним. По истечении этого времени связь с клиентом будет потеряна, и очередной запрос от него будет обрабатываться как абсолютно уникальный, никак не связанный с предыдущими.
Например, при совершении покупки в онлайн магазине персональная информация пользователя сохраняется в сессии, пока он путешествует по сайту. Это выбранные товары в корзине, адрес доставки, контактные данные и так далее.
Теперь давайте посмотрим, как это мы можем реализовать технически. Вообще существует несколько техник управления сессиями клиента, их количество и способ реализации во многом зависит от веб-платформы или технологии, что работает на сервере. В этом уроке мы рассмотрим следующие:
Попробуем их реализовать, используя платформу ASP.NET. Давайте кратко рассмотрим первые два механизма, и особое внимание уделим третьему, как более надежному, удобному и безопасному.
Скрытые поля на HTML-форме (hidden form fields)
Суть данного подхода состоит в том, что мы обеспечиваем навигацию по сайту при помощи стандартных html-форм. И при каждом следующем запросе мы сохраняем данные из предыдущего в скрытых полях на форме. Например:
Давайте рассмотрим особенности такого подхода. Плюсов практически нет, разве что реализовать данную технику можно очень быстро. Но опять же и другие подходы тоже можно реализовать очень быстро. А вот минусы есть, и довольно существенные:
Куки (cookies)
В данном подходе мы не храним сессионные данные непосредственно на форме, вместо этого используется стандартный механизм работы cookies между клиентом и сервером. В cookies и хранятся все пользовательские данные.
При выборе этого подхода опять же главной остается проблема безопасности наших данных, которые мы передаем на сервер – их легко подменить или украсть, они лежат в открытом виде. Также, если в настройках приватности браузера клиента отключен прием куки с сайтов, то такой вариант ведения сессии вовсе не будет работать.
Серверный механизм управления сессией (Session, SessionState)
Разберем, как работает механизм сессии со стороны сервера и со стороны клиента.
При стандартных настройках работы состояния сеанса для отслеживания серии запросов от одного клиента используется т.н. сессионная куки (session cookie). Алгоритм следующий:
В этом участке кода мы записываем в состояние сеанса имя пользователя. Это имя мы забираем с html-формы, которую он нам отправил. Дополнительно через свойства мы узнаем, создана ли эта сессия только что, то есть в рамках текущего запроса (если да, то и значение свойства IsNewSession будет равняться true), и уникальный идентификатор сессии. Этот идентификатор после обработки запроса будет автоматически записан в сессионную куки (если еще нет) и отправлен в ответе клиенту.
В браузере клиента можно наблюдать соответствующую куки и идентификатор его сессии:
В процессе следующего запроса от этого клиента давайте прочитаем его ранее сохраненное имя из сессии. Также принудительно завершим сессию. Работа с этим клиентом закончена, например, все данные обработаны и товар отправлен.
Как видно, работать с сессиями очень просто и удобно. Большинство процессов, связанных с обработкой сессии, происходит автоматически в фоновом режиме. Естественно, разработчик может вмешаться на любой стадии обработки сессии и внести свои коррективы.
В конфигурации выше мы указали, что таймаут сессии будет 40 минут, сессионные данные пользователя будут храниться в оперативной памяти, будут использоваться сессионные куки, также поменяли стандартное название такой куки на собственное.
3.2. Режим Сессии
Режим сессии
Режим сессии (Session View) в Ableton Live (иногда его называют просто «Сессия» для простоты), это немного больше, чем просто инструмент для живого выступления. По сути это – точка старта для большинства композиций. Это то место, где идеи могут набрасываться, нарабатываться и быстренько схватываться без заботы о том, как и где они будут использованы в финальном варианте трека.
Следующая фаза всего процесса заключена в Arrangement View (Режиме Аранжировки), но здесь совершенно не о чем беспокоиться на данный момент. Просто сосредоточьтесь на том, чтобы хорошенько развлечься в режиме сессии.
Сетка слотов для клипов
Когда вы открываете режим сессии (напоминаю, что это легко сделать при помощи клавиши Tab), то можете сразу увидеть, что важным отличием от режима аранжировки в нём является сетка со слотами.
Это – своеобразная палитра, благодаря которой вы сможете легко экспериментировать со всевозможными звуковыми красками, эффектами, и, в конце концов, получать настоящие шедевры. Как художник смешивает свои цвета, прежде чем нанести на полотно, так и современные продюсеры начинают работать с отдельными звуками, партиями и музыкальными фразами в режиме сессии, прежде чем преобразовать их в аранжировку песни.
Каждая ячейка в сетке режима сессии (в Ableton они называются Clip Slots) может содержать один клип. Клип – это кусочек аудио или MIDI-информации, который может быть проигран благодаря клику мыши, компьютерной клавиатуры, или MIDI-контроллера. Попробуйте поместить в эти слоты несколько лупов прямо из браузера. Затем запустить их при помощи нажатия на значок «play», который имеется у каждого клипа (для более подробной информации о том, как загружать клипы в слоты, прочтите параграф «Браузер», который также находится в этой главе).
Каждый пустой слот режима сессии содержит квадратную кнопку «Stop» (внизу каждого столбца также есть кнопки «стоп», которые будут доступны даже тогда, когда вы забили семплами весь столбец, не оставив в нём свободного места). Клик на этот квадрат в одном из этих слотов будет являться сигналом к остановке любого играющего клипа в этом столбце.
У нас есть возможность удалять Stop-кнопки в пустых слотах. О том, для чего это нужно, вы сможете прочитать в Главе 4.
Также, имеется кнопка, которая называется «Stop All Clips» на мастер-треке справа. Эта кнопка, как видно из её названия, остановит все клипы на всех дорожках (как аудио, так и MIDI), как только будет нажата.
Треки и сцены
Столбцы в сетке Режима Сессии называются Tracks (дорожки), в то время как строки называются Scenes (сцены).
Тип дорожки определяет, что та или иная дорожка будет в себе содержать: audio tracks (аудио дорожки) могут содержать только аудио клипы, а Midi-tracks (MIDI дорожки) могут содержать в себе только миди-клипы. В режиме сессии также присутствуют Return-дорожки (дорожки возврата), которые не содержат и не могут содержать какие-либо клипы. О них мы поговорим позже в Главе 6 “Дорожки и роутинг сигналов”. Потом мы подробнее рассмотрим работу со сценами, а сейчас просто знайте, что сцены – это очень удобный способ организовывать музыкальные идеи. Например, когда у вас в сетке содержатся ударные, бас, и клавишные, при этом они отлично взаимодействуют друг с другом и прекрасно звучат. В этом случае просто перетяните все клипы, которые вам нравятся в одну строчку, чтобы они содержались в одной “сцене”.
Scene Launcher (Запуск Сцен)
Справа на экране вы можете видеть специальную дорожку, которая называется Master. Каждый слот этой дорожки содержит Scene Launch Button (кнопку запуска сцен в виде клавиши «Play»), которая используется для того, чтобы одновременно запускать каждый клип, содержащийся в сцене по горизонтали.
Микшер
Микшер в программе Ableton Live сделан из нескольких секций, которые могут быть показаны или спрятаны независимо друг от друга благодаря меню View, или при помощи упомянутых ранее круглых иконок (см. скриншот внизу).
Секция, содержащая базовые регуляторы микширования, такие как громкость (volume) и панорама (pan), называется Mixer (Микшер). Live может работать с несколькими различными видами дорожек, некоторые из них используют различные уникальные функции микшера, но большинство содержат одинаковые кнопки и кое-какие детали интерфейса. Давайте рассмотрим их на следующем скриншоте.
Также как и большинство функций в Режиме Сессии, микшер доступен и в Режиме Аранжировки. Однако, в Режиме Сессии он, на мой взгляд, наиболее интуитивен и нагляден, а также предоставляет несколько дополнительных функций. Я использую термин «Микшер Режима Сессии», когда мне необходимо разграничить один микшер от другого.
Давайте посмотрим на каждую секцию микшера дорожек в Режиме Сессии. На скриншоте я привожу их английские названия, но под ним вы сможете прочитать их расшифровку на русском.
Pan (Панорама): Этот кноб позволяет вращением влево или вправо отправить ваш сигнал соответственно влево или вправо в вашей стереопанораме.
Track Activator (Активатор Дорожки): В большинстве микшеров эта кнопка соответствует клавише “mute”, т.е. «заглушить». Когда мы выключаем эту кнопку на дорожке, мы тем самым заглушаем её.
Solo/Cue (Соло/Прослушка): активирование этой кнопки с буквой «S» глушит все остальные треки, оставляя играть только тот трек, на котором и была нажата эта клавиша. Если вы хотите нажать Solo больше чем на одном треке, то вам необходимо зажимать Ctrl + клик (Cmd + клик) при выборе дополнительного трека. Также вы можете изменить функцию Exclusive в Preferences во вкладке Record/Warp/Launch. Эта же кнопка может быть переключена в режим предпрослушки “Cue”, об этом мы поговорим в Главе 6, параграф 6.1. «Master Track».
Arm Record (Вооружение на запись): позволяет вам записывать новые аудио и миди клипы. В своих занятиях я переводил эту кнопку как «вооружение дорожки на запись». Это означает, что дорожка становится восприимчива к внешним сигналам (аудио или миди), и на неё может осуществляться запись. Если вы хотите «вооружить» сразу несколько дорожек, вам также как и в случае с solo/cue, следует использовать комбинации Ctrl + клик (Cmd + клик) при выборе дополнительного трека, или же изменить функцию Exclusive в Preferences во вкладке Record/Warp/Launch.
Если вы кликните и потащите вверх верхнюю границу секции микшера, то сможете изменить её размер, чтобы лучше видеть уровни громкости во время сведения. Развёрнутый вид способствует появлению информационной ячейки, которая будет показывать числовые значения максимальных пиков амплитуды звукового сигнала. Она называется Peak Level (Пиковый Уровень), и, щёлкнув на неё мышкой, вы можете сбросить её последнее значение.
SENDS (Посылы)
Input/Output (Вход/Выход)
Эта секция используется для записи, а также различных продвинутых техник маршрутизации (маршрутизацию ещё называют «роутингом»). Секция «Audio From» (вторая дорожка на скриншоте) используется для указания источника, из которого дорожка будет получать сигнал (Input, т.е. вход), в то время как секция «Audio To» определяет, куда этот сигнал пойдёт далее (Output, т.е. выход). Audio To состоит из двух меню: Input Type и Input Channel.
Для Миди-Дорожек (Midi Tracks), меню Input Type используется для выбора миди-девайса, сигналы которого вы желаете записать во время игры, или же для выбора дорожки, миди-сигналы с которой вы желаете записать. По умолчанию, это меню поставлено в значении All Ins (что означает All Inserts, «все входы»), что обычно работает вполне нормально. По крайней мере, пока у вас не появится очень навороченный сетап, в котором вы работаете сразу с несколькими миди-девайсами. И вам, к примеру, потребуется одновременно писать несколько партий на различные дорожки сразу с нескольких миди-девайсов. В этом случае вы можете выбрать в меню Input Channel определённый MIDI-канал для каждого девайса (Midi-channel), или оставить всё по умолчанию, что будет означать, что дорожка получает сигналы со всех миди-каналов.
Audio To, находящееся внизу этой секции, состоит из Output Type и Output Channel. Также как и Inputs, они могут использоваться для того, чтобы отправить аудио сигнал на внешние выходы (outputs) на вашей звуковой карте или миди-сигнал на внешние аппаратные средства (midi to). Также возможно обеспечить роутинг (маршуртизацию) сигнала на другие дорожки внутри вашего Live-сета. Я объясню всё, что связано с этой техникой в Главе 6.
Вы можете заметить, что меню Output Channel по умолчанию выключено. Оно залито серым цветом. Это потому что в Ableton по умолчанию включены две возможные настройки: перенаправление сигнала на Master или No Output (нет выхода). Ни один из них не имеет никаких особых настроек каналов. Но если вы подберёте другой тип выхода, например, Ext. Out (внешний выход), то это меню тут же активируется и позволит вам выбрать, из какого выхода вашей звуковой карты будет поступать сигнал этой дорожки.
Секция Monitor контролирует, будет или нет сигнал, который мы указали в «Audio From» слышен через микшер Ableton.
В нём есть три режима:
In: Входящий источник сигнала проходит через микшер всё время и будет слышен всегда. Попробуйте подключить микрофон к звуковой карте, указать его вход в Audio From, а затем включить этот режим. Все шумы будут пропущены через дорожку, и вы услышите их практически мгновенно. Осторожно! Этот режим может стать причиной обратной связи.
Auto: входящий сигнал проходит через микшер и слышен только когда дорожка «вооружена на запись» (включена кнопка «Arm Record»), и нет ни одного клипа, который воспроизводится на дорожке (если вы подключите микрофон так, как я указывал в предыдущем примере, вы услышите микрофон только при нажатии кнопки Arm Record).
Off: Входящий источник сигнала не пропускается через микшер и не слышится вообще.
Если вы опытный звукорежиссёр, тогда эти различные режимы могут быть совершенно понятны и банальны. Если нет, не волнуйтесь. Просто оставляйте на первых порах ваши треки в значении Auto (по умолчанию).
Я объясню различный роутинг и его настройки в следующих главах. При необходимости, вы всегда сможете вновь обратиться к этому параграфу, если вдруг забудете, какой режим что означает.
Кроссфейдер
Live также имеет кроссфейдер, который очень напоминает кроссфейдеры на Dj-оборудовании. На протяжении многих лет аналоговые кроссфейдеры использовались диджеями для того, чтобы обеспечивать смешивание двух треков вместе одним простым движением. Скретч-диджеи вывели техники владения кроссфейдером на невероятный уровень, трансформируя микшер в музыкальный инструмент.
Кроссфейдер, который есть в Live состоит из двух компонентов: собственно, сам кроссфейдер (находящийся внизу мастер-трека), и Crossfader Assign (т.е. Назначения Кроссфейдера), это кнопки «A» и «B», в самом низу каждой дорожки.
Для того чтобы использовать всё это, вам нужно щелчком мыши назначить определённые треки на A (левый) или B (правую) часть кроссфейдера. Как только вы сдвинете кроссфейдер вправо, то тем самым увеличите громкость всех дорожек с выбранной кнопкой B, в то время, как дорожки с включенной кнопкой A уменьшат свою громкость. Противоположные действия произойдут, если вы передвинете кроссфейдер в левое положение. Не назначенные дорожки будут игнорированы кроссфейдером, и будут играть, как ни в чём не бывало независимо от положения кроссфейдера.
Открытие контекстного меню кроссфейдера вызывает меню различных режимов перехода, которые определяют, какая огибающая (резкая или пологая) будет использоваться во время передвижения вашего кроссфейда. Режимы Constant, Dipped и Intermediate – это огибающие, которые медленно меняют вашу громкость на протяжении всего движения кроссфейдера. Во всех трёх режимах наблюдается снижение громкости для обеих сторон в центре позиции кроссфейда (Dipped режим уменьшает громкость больше всех, Constant-меньше) для компенсации перегруженности, которую вы можете получить из-за звучания двух треков одновременно, особенно если они весьма мощные, как танцевальные треки. Fast Cut, Slow Cut и Slow Fade имеют два источника на максимальных амплитудах (громкости), прежде чем центральная позиция будет достигнута. Slow Fade предоставляет наиболее длительный переход между двумя позициями, в то время как Fast Cut практически не содержит такого перехода.
Track Delay
Задержка дорожки (Track Delay) не является традиционным регулятором, и он обычно не представлен в мире аналоговых микшеров. Но в мире цифрового аудио функциональность этого параметра сложно недооценить.
Данный регулятор позволяет слегка задержать или наоборот поторопить исходящий сигнал (Output) с дорожки на небольшое время (измеряемое в миллисекундах или семплах). Это нужно для того, чтобы компенсировать медлительную аппаратуру или плагины, которые генерируют чрезмерную задержку. Этот параметр можно использовать просто в качестве креативного инструмента (теоретически, Ableton может автоматически компенсировать все задержки плагинов, но это зависит от того, насколько точно плагин репортует его задержку движку Аблетона, т.к. не все плагины делают это).
Положительные значения параметра Track Delay означают, что дорожка будет немного запаздывать, в то время как отрицательные значения показывают, что дорожка будет проигрываться немного раньше.
Помните, для того, чтобы услышать эффекты от применения Track Delay, Delay Compensation должна быть активирована в меню Options. Для того чтобы сделать меню Track Delay видимым внизу каждой дорожки Session View, выберите пункт Track Delay в меню View, или нажмите на круглую иконку с буквой «D» в правом углу экрана режима сессии.