describe method
Human readable steps, in the order they run.
Implementation
List<String> describe() => [
if (clearLooks) 'Remove the looks (filters) from every clip',
if (clearEffects) 'Remove all timed effects',
for (final e in removeEffects) 'Remove the ${e.label} effect',
if (clearText) 'Remove all text and captions',
if (clearCaptions && !clearText) 'Remove the captions',
if (clearStickers) 'Remove the stickers',
if (removeMusic) 'Remove the music',
if (resetCrop) 'Undo crops and zooms',
if (ratio != null) 'Set ratio to ${ratio!.label}',
if (fillMode != null) '${fillMode!.label} every clip in the frame',
if (highlightLength != null)
'Pick the best ${highlightLength!.inSeconds}s for a short',
if (reframe) 'Crop each clip to keep the face in frame',
if (removeSilence) 'Cut out silent pauses',
if (speed != null) 'Play clips at ${_speedLabel(speed!)}',
if (targetLength != null)
'Shorten the video to ${targetLength!.inSeconds}s',
if (clipVolume != null)
clipVolume == 0 ? 'Mute the original sound' : 'Turn the original sound back on',
if (musicPrompt != null && !noMusic) 'Add AI music if there is none',
if (musicVolume != null)
musicVolume! > 1 ? 'Make the music louder' : 'Make the music quieter',
if (beatEvery != null)
'Cut on ${beatEvery == 1 ? 'every beat' : 'every ${beatEvery!.round()} beats'}',
if (effect != null) 'Apply the ${effect!.label} look',
if (zoomCuts) 'Alternate zoom-in cuts',
if (transition == ClipTransition.none) 'Remove the transitions',
if (transitionMix != null)
'Vary the transitions: ${transitionMix!.map((t) => t.label.toLowerCase()).join(', ')}'
else if (transition != null && transition != ClipTransition.none)
'Add ${transition!.label.toLowerCase()} transitions',
for (final (e, span) in timedEffects) 'Add the ${e.label} effect ${span.label}',
if (audioCleanup == AudioCleanup.voice) 'Studio voice: less noise, clearer speech',
if (audioCleanup == AudioCleanup.denoise) 'Reduce background noise',
if (audioCleanup == AudioCleanup.none) 'Turn noise reduction off',
if (captions) 'Generate captions from speech',
if (hookText != null) 'Add the title "$hookText"',
if (stickers.isNotEmpty) 'Add ${stickers.join(' ')} sticker${stickers.length == 1 ? '' : 's'}',
];