Выражения. Свойство audioActive After Effects

 

 

Список эффектов и не только After Effects
Выражения After Effects список

 

В After Effects свойство audioActive используется в выражениях для определения, воспроизводится ли звук на слое в текущий момент времени. Оно возвращает логическое значение

 

 

true — если слой воспроизводит звук в текущий момент времени.

false — если звук не воспроизводится (например, тишина, отключен, за пределами in/out, прозрачность 0 и т.д.).

Синтаксис

layer(«Имя слоя»).audioActive;

audioActive работает только для аудиослоёв или слоёв, содержащих звук.

Оно не измеряет громкость, а просто определяет, играет ли звук в текущий момент времени.

Используется в основном как логическое условие.

Физически отключить звук слоя, то есть как будто нажал на значок динамика 🕪 в таймлайне, невозможно. Но можно поступить по другому. Сдвинуть аудио слой на таймлайне или так как я поступил в композиции 4

——
1

thisComp.layer(«Музыка»).audioActive;

——
2

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

if (thisComp.layer(«Музыка»).audioActive) {[200, 200]; // Масштаб 200%, если звук включён
} else {[100, 100]; // Масштаб 100%, если звук выключен
}

Масштаб текста будет меняться в зависимости от состояния audioActive

—————
4

Аудио слой порезан на 4 куска. Каждому новому слою дано новое имя от Музыка1 до Музыка4
Через один слой отключен в ручную звук. Значек динамика. Масштаб Текстового слоя меняется в зависимости включен звук или нет от 100% до 200%

if (thisComp.layer(«Музыка1»).inPoint <= time && time < thisComp.layer(«Музыка1»).outPoint) {
thisComp.layer(«Музыка1»).audioActive ? [200, 200] : [100, 100];
} else if (thisComp.layer(«Музыка2»).inPoint <= time && time < thisComp.layer(«Музыка2»).outPoint) {
thisComp.layer(«Музыка2»).audioActive ? [200, 200] : [100, 100];
} else if (thisComp.layer(«Музыка3»).inPoint <= time && time < thisComp.layer(«Музыка3»).outPoint) {
thisComp.layer(«Музыка3»).audioActive ? [200, 200] : [100, 100];
} else if (thisComp.layer(«Музыка4»).inPoint <= time && time < thisComp.layer(«Музыка4»).outPoint) {
thisComp.layer(«Музыка4»).audioActive ? [200, 200] : [100, 100];
} else {[100, 100];
}

Можно упростить код написав через цикл

var result = [100, 100]; // значение по умолчанию
for (i = 1; i <= 4; i++) { Lay = thisComp.layer(«Музыка» + i); if (time >= Lay.inPoint && time < Lay.outPoint) {
result = Lay.audioActive ? [200, 200] : [100, 100];
break;
}
}

или так

var result = [100, 100]; // значение по умолчанию
for (i = 1; i <= 4; i++) { Lay = thisComp.layer(«Музыка» + i); if (time >= Lay.inPoint && time < Lay.outPoint) {
result = Lay.audioActive ? [200, 200] : [100, 100];
}
}
result;