Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Timeline #462

Open
funwithtriangles opened this issue Oct 21, 2024 · 5 comments
Open

Timeline #462

funwithtriangles opened this issue Oct 21, 2024 · 5 comments

Comments

@funwithtriangles
Copy link
Member

funwithtriangles commented Oct 21, 2024

A timeline feature with keyframes that control params/shots/etc. Probably can be created as a plugin.

  • A project can have multiple timelines. These can be something tiny like a single param animating (we can potentially replace the anim input with this), or a whole animated thing with many things going on.
  • Timelines can be triggered with inputs such as midi or even keyframes from other timelines
  • Audio files can be dragged into a timeline, to allow easy sequencing for music videos, etc
  • Different playback options for timelines: speed, direction, loop, entry/exit points, etc
  • Timeline chapters. Define points on a timeline as a named chapter. Controls to skip between chapters.
  • Trigger track: not like traditional keyframes cos they only trigger things, but could have a nice labelling system to it's easy to see what each trigger is doing
  • A timeline can have "pause at marker" or "loop at marker" modes. This is very useful for live shows, you can have a timeline that automatically stops at certain points (markers) and is only progressed when the play button is pressed again
  • Conflict modes. Sometimes when a timeline starts, initial values of params will not match the keyframe value. The timeline should have a mode to work out what to do here. "Hard" just immediately makes it jump to that keyframe value, "soft" makes it interpolate from current value until the next frame.
  • Unsolved: need to think about how jumping around the timeline will work. When using triggers, we lose some notion of definitive state. For example, let's say we're at the end of a timeline and a bunch of triggers have already been set off, then we want to go back in time. How do we turn those triggers off if they are just events? For some things like enable/disable this is clear. Fired shots not so much. Perhaps shots can have a cleanup function...
@cale-bradbury
Copy link
Contributor

Audio and midi files being dragged in! Having the tracks midi will make it super easy to get ready-to-release daw-based tracks synced up for a music video/interactive online site

We have cc values that can be mapped to sliders, but note on/off could be mapped in a bunch of ways though

  • call shot on on/off/both
  • call specific value for given note value(s)
  • set slider value on on/off/both (either to note value, velocity, or a fixed value for all notes)
  • trigger an adsr etc. envelope for a slider
  • set boolean on/off
  • shots that take parameters
    -- pass on/off as bool
    -- pass note value as number on on

There are lots of options and I'm probably just scratching the surface, can start with a few and release as needed (even just dumping it into the update function and letting the sketch sort it out, though that's not as good for adaptability/reusability)

@cale-bradbury
Copy link
Contributor

Unsolved: need to think about how jumping around the timeline will work. When using triggers, we lose some notion of definitive state. For example, let's say we're at the end of a timeline and a bunch of triggers have already been set off, then we want to go back in time. How do we turn those triggers off if they are just events? For some things like enable/disable this is clear. Fired shots not so much. Perhaps shots can have a cleanup function...

Thinking that what a trigger does should probably be less state-dependent compared to a boolean toggle.

There could be per-timeline/per-layer options for how to handle a timeline jump;

  • ignore to do nothing and carry on
  • fire-all to fire everything in between the current time and the jump time
  • speed-up to not instantly jump but instead speed-up to the point over the remainder of the beat/bar/phase (I did this in a videogame to keep the waves synced to the music without a long delay after beating a wave, it felt really nice)
  • 'even-triggers' ensure a trigger has been called enough times to match the jumped points modulo of n (default 2) along the timeline (ie enable/disable trigger, if there are 4 more calls between now and then, nothing happens, 5 more calls and it will call once)

@funwithtriangles
Copy link
Member Author

These are really nice ideas Cale, hopefully we can have all these features one day. One more nice one:

  • "timeline unsynced" warning. A little icon appears on the timeline or on a specific track whenever the keyframes don't match the params (e.g. the user manually changed something). A "resync" button appears to put everything back in place.

@funwithtriangles
Copy link
Member Author

Also worth noting that this feature can most likely replace both the anim and step sequencer inputs. I'd rather not have to maintain too many features if things are possible in the timeline.

Technically it could also replace the LFO input but I still think there's enough value in having that as a separate thing.

@funwithtriangles
Copy link
Member Author

Haven't looked into it but maybe want to use a library like this...

https://animejs.com/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants