-
Notifications
You must be signed in to change notification settings - Fork 39
Parseq change log
Robin Fernandes edited this page Oct 12, 2023
·
11 revisions
- New "raw schedule" export section which allows you to copy & paste schedules generated in Parseq with ComfyUI (via FizzleDorf's custom nodes) or directly in plain Deforum.
- The following fields can now be controlled with Parseq:
clipskip
,noise_multiplier
,cadence_flow_factor
,redo_flow_factor
- You can now optionally show prompts and interpolated values at keyframes in the grid (see screenshot)
- You can shift all audio events by a fixed number of ms. This is useful when an algorithm detects events with a consistent offset.
- Fix: The audio event counter is correctly reset when you clear events.
- Fix: the defaults for the cn_N_end_guidance fields is now 1 instead of 100.
- cheat sheet for hotkeys
- some buttons to make scrolling and zooming less of a mystery. 🙂
- Fractional FPS and BPM are now supported
- All the Biquad filter options are now exposed
- Minor darkmode fixes to text in keyframe dialogs
- Dark mode. Toggle it from the button in the header. I have almost certainly missed some colours that need to be updated, so let me know if you spot anything that needs to be adjusted. Help very welcome – for the bits that aren't handled by MUI, the colour schemes are defined in this file.
- Import prompts. Supported formats are Deforum-style JSON (
{"frame number":"prompt"...}
) or flat files. Negative prompts split out using--neg
as the separator within the prompt. Imported prompts are added to existing prompts (no prompts are removed). - Hotkeys. Currently supported are:
-
ctrl/cmd-z
to undo,shift-ctlr/cmd-z
to redo -
space
to play/pause audio reference -
shift-space
to play audio reference from start -
ctrl-space
to play audio reference from last pause position -
shift-a
to add marker at current playback position.
-
- Add functions
info_match_since()
andinfo_match_until()
. - A brief description of what changed is visible for each version in the browser view for a given document.
- Live function documentation with examples: https://sd-parseq.web.app/functionDocs
- New functions
computed_at()
,info_match_gap()
,info_match_progress()
,recompute_if()
. See above docs for details. - Prompt frame positions are automatically updated if frame lock is seconds/beats and fps/bpm is changed. So no need to reposition all your prompts if you change from 20 to 30 fps.
- New context variable
last_frame
, which returns the last frame number. - New delta parameter on the
bez()
function, so you can specify the end value as a delta of the start value. - Allow maths expressions when editing value cells. Note that expressions are not persisted: the value is calculated immediately and the result is persisted.
- An option to generate Parseq data that will result in the animation being rendered in reverse.
- Choose whether common prompts should be appended or prepended option.
Common prompt & reorder prompts | Mini footer |
posneg() functions |
Named bezier curves | Noise functions | Bezier offset override |
---|---|---|---|---|---|
- Prompt changes no longer trigger so many saves & re-renders while you're typing, so you should see fewer slow-downs when typing your prompts (except with >10 prompts which can still be slow - still working on that…)
- If you have 2 or more prompts, you can now add a common prompt which is appended to the end of every prompt. No more copying & pasting common text across all your prompts!
- Added button to re-order prompts based on their start position.
- When importing a TimeSeries from audio, you can now see the spectrogram below the normal waveform.
- The footer can be unpinned so that it reduces to a single-line footer that expands on hover.
- New functions
posneg("prompt", weight)
andposneg_lora("loraName", weight)
which automatically copy prompt fragments between the positive and negative prompt depending on whether weight is a positive or negative number, to save you having to mess around with if/else statements. Example here (video description has link to parseq doc). - Tired of messing around with
x1,y1,x2,y2
when tweaking your bezier curves? You can now reference a curve name likebez(c="easeOut")
. Supports all values on https://easings.net/ except elastic an bounce, plus some convenience aliases. See the code for the full list. You can still work with the values from https://cubic-bezier.com/ if you don't like any of the pre-defined curves. - New smooth noise functions:
-
smrand()
, which is a simplex noise generator (smooth noise). Can take args min, max and sm which is a smoothing factor from 1 to 100. -
perlin()
which is essentially the same thing but using a perlin noise generator, another kind of smooth rand. -
vibe()
which plots points at random intervals and draws bezier curves between them. You can use argsmin
andmax
to define the value range for those points,pmin
andpmax
to define the distance range between the points (or justp
to override them to a single value), and the samec
orx1,y1,x2,y2
args asbez()
for defining the shape of the bezier curves.
-
- New
os
optional offset argument on bez() to override the render position of the current curve. 0 represents the start of the curve and 1 the end.
- Experimental camera movement preview section. Enjoy!
Sequence.02_1.mp4
- Improved load dialog with autocomplete.
- /raw route, to output only rendered JSON (example). Useful for testing and batch Deforum settings generation. Note that rendering is still all done client-side so this won't work as a curlable API, because you need to hit it with a javascript enabled browser. Works well with headless browsers e.g. playwright.
- Biquad filter available on reference audio.
- Loads of new maths functions and constants (
_cos
,_sin
,_tan
,PI
,E
etc...). Note that unlikesin
,sq
,saw
,pulse
andtri
, these new ones starting with_
are plain maths functions, not oscillators. - Allow creating new doc from existing doc ("clone current document" in the new dialog)
- Fixes to revert operations (prompts correctly restored on revert).
- Rework file browser UI: easier to list all documents and drill down into versions for a given document, add button to delete document, enable cloning specific version to new doc.
- Database management tools (import/export/clean/delete the full parseq database).
- Frame number now visible in grid even when locked to beats/seconds.
- Improve performance of load dialog (file list populated within ~1s with 300+ documents)
- Improved decimation algorithm for timeseries.
- Add an obvious shortcut to edit the final frame for those who thought Parseq was limited to 119 frames. 🙂
- All functionality from the Audio Analyser has been moved into other parts of the UI. The audio analyser is now deprecated and will be removed in upcoming versions.
- Load any custom time series for use in your Parseq formula. This means you can import any sequence of numbers to use within Parseq, and assign that sequence directly to a field or manipulate it within a formula. Load time series from CSV or from audio. Post-process the time series with smoothing, range exclusion, clamping and normalisation.
- Extract amplitude or estimated pitch from audio data into a time series. Integrated low/high/band-pass filter to pre-process the audio before the extraction.
- Audio event detection and event-to-keyframe generation is integrated into the Reference Audio section. You can also manually add events (double-click), remove events (shift-click) and drag events. Batches of generated keyframes can have custom labels, so you can distinguish e.g. bassdrum events from snaredrum events, and act upon those frames specifically in bulk edits (see below).
- Lock keyframes to their position in beats or seconds, so that if you change the FPS or BPM, your keyframes stay anchored in the same desired "position" (not the same frame).
- New "bulk edit" dialog, so you can quickly modify all frames that match a particular pattern.
- Add frames dialog improved: you can easily add frames every N frames/beats/seconds.
- Delete frames dialog improved: you can delete all frames matching a pattern.
- Major performance improvements. It should now be possible to work with 1000s of frames without the UI flaking out. For some techniques to improve the UX when working with large documents, see below.
- By popular demand, you can now load an audio file and see it alongside your keyframe data. Zoom, pan and markers are synchronized. This is not yet a full integration of the audio Analyser: you'll still need to use the Analyser tool for beat detection, audio event detection & pitch detection.
- Optionally enable markers to show beat positions on graph and audio waveform, given the document's BPM and FPS.
- Time units in the visual views can be switched between frames/seconds/beats.
- New
rand()
function for generating random values, optionally with seed for recreatability. See below for details. - Buttons to quickly switch the managed fields to none, all, or currently used fields.
Here's a short video demonstrating some of the above (no sound):
Sequence.01.mp4
- You can now mix & match Parseq-managed schedules with Deforum-managed schedules, and choose whether the prompt should be managed by Parseq or Deforum.
- Note: Delegating prompts to Deforum requires the latest Deforum extenion. Make sure you update! You should a table like this in your A1111 CLI output to help describe what is managed by Parseq vs Deforum:
- The prompt visual timeline is now clickable (you can move and resize prompts)
7Ohll5M.mp4
- Initial implementation range selection in the grid. Works for deletion only – not copy/cut/paste.
- Delete keyframes dialog accepts lists and is pre-populated based on the range selection.
H9JrRlX.mp4
- Improved UI with duplicated elements moved to footer.
- Revamped prompt management. Add unlimited prompts with defined frame ranges, and flexible composable diffusion weighting for overlapping prompts.
- New "Preview" section, allowing you to quickly see the value of all fields and the fully rendered prompt on each frame.
- Create new documents from templates (including a "blank" template). Only 2 templates available for now, suggestions / contributions welcome.
- UI improvements to grid: coloured columns, auto-resizing to match row count.
- Optionally show markers on graph, including prompt start/end positions and grid cursor location.
- Added functions
ceil()
andfloor()
, and variabless
(current position in seconds) andb
(current position in beats).
- Added an audio analyser. Use it to generate keyframes and values based on beats, events and pitch of an input audio file. Experimental! Details in documentation.
- Added an "info" field on keyframes so you can keep track of what each keyframe represents.
- New functions and variables available in your formula:
prev_computed_value
,slide(from, to, in)
,info_match(regex)
,info_match_last(regex)
,info_match_count(regex)
. Details in documentation. - Full parseq expressions can now be used directly in the prompts.
- Blank values are now permitted on the first and last frames (will use closest value or default value if none specified).
- Oscillator functions can now all take a
limit
(li
) argument to limit the number of repeated periods. - Support for new Deforum A1111 schedules (antiblur, hybrid comp). Sampler schedule is not available for now in Parseq (but you can use it directly in Deforum alongside your Parseq manifest).
- If you sign in at the top right (only Google sign-in supported for now, raise a feature request if this is too limiting), you can use 2 new upload features.
- Once signed in, you can now easily create a sharable URL for your parseq doc from the
Share...
dialog. - Also once signed in, you can upload the rendered output to a URL. With the latest version of the A1111 extension, you can refer to this URL in the Parseq manifest textbox, so you don't have to keep copying the full JSON data back and forth.
- Sparklines are now clickable, so you can show/hide data more easily.
- A simple Parseq document "Browser" is accessible from the
Load...
dialog that lets you see all the docs and versions in your local storage a bit more easily.
- Parseq script mode is now deprecated, and Deforum integration mode is the default. I will no longer develop the Parseq script for a1111, focussing instead on making Parseq play well with the Deforum extension for a1111. The Parseq script was destined to only ever be an inferior version of the Deforum extension. If you need to work with the legacy parseq script variables, you can try here: https://sd-parseq.web.app/legacy .
- New document management, peristed to local storage, with options to revert, share & import. Keyframe data is no longer stored in the URL (this caused issues on some browsers).
- New editable graph! You can add and update keyframes directly on the graph.