Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // @target aftereffects
- (function createUI() {
- var dialog = new Window("palette", "Tempo Marker Generator", undefined);
- dialog.orientation = "column";
- dialog.alignChildren = ["left", "top"];
- dialog.spacing = 10;
- dialog.margins = 16;
- var bpmGroup = dialog.add("group");
- bpmGroup.orientation = "row";
- bpmGroup.spacing = 10;
- bpmGroup.add("statictext", undefined, "BPM:");
- var bpmInput = bpmGroup.add("edittext", undefined, "120");
- bpmInput.characters = 5;
- var durationGroup = dialog.add("group");
- durationGroup.orientation = "row";
- durationGroup.spacing = 10;
- durationGroup.add("statictext", undefined, "Duration (sec):");
- var durationInput = durationGroup.add("edittext", undefined, "10");
- durationInput.characters = 5;
- var buttonGroup = dialog.add("group");
- buttonGroup.orientation = "row";
- buttonGroup.spacing = 10;
- var applyButton = buttonGroup.add("button", undefined, "Apply");
- var cancelButton = buttonGroup.add("button", undefined, "Cancel");
- applyButton.onClick = function() {
- app.beginUndoGroup("Add Tempo Markers");
- try {
- var comp = app.project.activeItem;
- if (!comp || !(comp instanceof CompItem)) {
- alert("Please select a composition.");
- return;
- }
- var selectedLayers = comp.selectedLayers;
- if (selectedLayers.length === 0) {
- alert("Please select a layer.");
- return;
- }
- var bpm = parseFloat(bpmInput.text);
- var duration = parseFloat(durationInput.text);
- if (isNaN(bpm) || isNaN(duration)) {
- alert("Please enter valid numbers.");
- return;
- }
- var secondsPerBeat = 60 / bpm;
- for (var i = 0; i < selectedLayers.length; i++) {
- var layer = selectedLayers[i];
- if (!layer.property("ADBE Marker")) {
- alert("Cannot add markers to this type of layer.");
- continue;
- }
- var startTime = layer.inPoint;
- var endTime = startTime + duration;
- var markerProp = layer.property("ADBE Marker");
- var beatCount = 1;
- for (var time = startTime; time <= endTime; time += secondsPerBeat) {
- var marker = new MarkerValue("Beat " + beatCount);
- markerProp.setValueAtTime(time, marker);
- beatCount++;
- }
- }
- } catch (e) {
- alert("Error: " + e.toString());
- }
- app.endUndoGroup();
- };
- cancelButton.onClick = function() {
- dialog.close();
- };
- dialog.show();
- })();
- // @target aftereffects
- (function createUI() {
- var dialog = new Window("palette", "Tempo Marker Generator", undefined);
- dialog.orientation = "column";
- dialog.alignChildren = ["left", "top"];
- dialog.spacing = 10;
- dialog.margins = 16;
- var bpmGroup = dialog.add("group");
- bpmGroup.orientation = "row";
- bpmGroup.spacing = 10;
- bpmGroup.add("statictext", undefined, "BPM:");
- var bpmInput = bpmGroup.add("edittext", undefined, "120");
- bpmInput.characters = 5;
- var durationGroup = dialog.add("group");
- durationGroup.orientation = "row";
- durationGroup.spacing = 10;
- durationGroup.add("statictext", undefined, "Duration (sec):");
- var durationInput = durationGroup.add("edittext", undefined, "10");
- durationInput.characters = 5;
- var buttonGroup = dialog.add("group");
- buttonGroup.orientation = "row";
- buttonGroup.spacing = 10;
- var applyButton = buttonGroup.add("button", undefined, "Apply");
- var cancelButton = buttonGroup.add("button", undefined, "Cancel");
- applyButton.onClick = function() {
- app.beginUndoGroup("Add Tempo Markers");
- try {
- var comp = app.project.activeItem;
- if (!comp || !(comp instanceof CompItem)) {
- alert("Please select a composition.");
- return;
- }
- var selectedLayers = comp.selectedLayers;
- if (selectedLayers.length === 0) {
- alert("Please select a layer.");
- return;
- }
- var bpm = parseFloat(bpmInput.text);
- var duration = parseFloat(durationInput.text);
- if (isNaN(bpm) || isNaN(duration)) {
- alert("Please enter valid numbers.");
- return;
- }
- var secondsPerBeat = 60 / bpm;
- for (var i = 0; i < selectedLayers.length; i++) {
- var layer = selectedLayers[i];
- if (!layer.property("ADBE Marker")) {
- alert("Cannot add markers to this type of layer.");
- continue;
- }
- var startTime = layer.inPoint;
- var endTime = startTime + duration;
- var markerProp = layer.property("ADBE Marker");
- var beatCount = 1;
- for (var time = startTime; time <= endTime; time += secondsPerBeat) {
- var marker = new MarkerValue("Beat " + beatCount);
- markerProp.setValueAtTime(time, marker);
- beatCount++;
- }
- }
- } catch (e) {
- alert("Error: " + e.toString());
- }
- app.endUndoGroup();
- };
- cancelButton.onClick = function() {
- dialog.close();
- };
- dialog.show();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement