# Kairos Software

#1

Hello,

As many of you probably know from node17, I’m currently working on a VL based timeline editor tool, which, hopefully, I will release in the first part of September as a vvvv pack.

I made this forum post to collect constructive suggestions and references from users.
So please, feel free to write ideas, features, UI suggestions (and reference images) regarding the ideal timeline tool that you would like to use.
Also pointing to other existing softwares could be useful.

Please, try to be essential, short and direct to the point(s) in order to not make this post unreadable and useless :)
And let’s skip the very basic features… like having undo and redo…

Natan

LINK Topics - 1) Timeline
#2

Do you aim at controlling large scenes/shows only?
My timeliner of choice would still have little instances all over the place when I need to animate/fade in/fade out elements in my application/exhibit.
Workaround would be to have one editor only, but different timeliner scenes which one could then instantiate in the patch as needed.

#3

I have been in timeline land for some time now, trying to bend existing options to fit my needs, my requirements are here in no particular order:

1. Step sequencer, often I need to step sequence things.
2. Higher than frame rate precision, especially with musical timing, having something that is independent of fluctuating frame rates is important.
3. record parameters live.
4. edit recorded paramters
5. NRT playback, often I do stuff live and record parameters but not video, I then render the frames in NRT mode. I assume this clashes a bit with 2. but perhaps it can be quantized to fit the framerate somehow… and in increment mode, there is no frame rate fluctuation.
6. Beats and Bars: I can see above that musical tempo is assumed, so I better mention it as a wish for a feature

EDIT: 7. Grouping of tracks

#4
1. Chapters, or inout points for a specific series of operations
2. Ability to browse next\previous frame, in\out points, beginning\end of the timeline
3. Ability to modify OTF its length: shorter, longer…
4. Bezier handles to interpolate nicely between points
4.1 With the ability to manually insert handle values. Would it be possible to calculate stuff somewhere in patch and then send that data to the handles?
5. Fast switching between different interpolation styles, linear to bezier and viceversa
6. Ability to set one point linear between two bezier, or per point interpolation styling
7. Ability to merge animations from different timelines, eg I make one animation in a timeline, another animation in another timeline -> merge those two in a third timeline. Obviously, it can be done in a single timeline too (asking for merging, not suggesting how to do it)
8. Highlighting certain parts of timeline (like, this is red = I have to launch this other thing; this is green = animation here is approved…)
9. Annotations for specific parts of timelines. A bit like 6, but also not: 6 would be for all tracks, note for each track, because I’m asking for…
10. Colors for tracks (where am I? Bottom, top, … What is this? gui or objects… And so on)
11. Track beginning (the one with name of track and other useful hints) always in sight. This means, track contents will be browsed and only a portion of it will always be visible unless you…
12. Zoom in\out tracks

I know I’m missing something…

EDIT: Here it is: Track disabling.

Last thing:

#5

Cool,
i missed your presentation at node, so i don´t know what it is already integrated,

These are my favorite features on a timeliner.

1. External devices easy connection (mostly midi controllers)
2. Multitrack realtime data recording from external device, and controller snapshot, as Sune pointed
3. Controller templates or User defined templates to share between people,
4. Controller MIDI feedback
5. Timeliner control via external devices, (for example a Launchpad to jump between the cues on the selected track, and other functions)
6. Tracks grouping. as Sune pointed
7. Multi loop/scenes per project, as h99 pointed
8. internal - external clock, as Sune pointed
9. Different kind of CLOCK OUT (MIDI, MTC, etc) simultaneous sync with other devices
I know that Sync is a bit topic on this kind of things,
but i hope the vvvv guys can improve it and get a robust and stable clock on VL.
10. import, merge, split, and append projects.
11. import, add, insert tracks.
12. Default values and interpolation method per track or defined by template

Is Audio already on the plan? VAudio VL pack?

1. Audio track (or tracks), with start position offset and simple controls, volume, pan.
2. Audio wave visualization based on the screen resolution.

thanks a lot for that Nathan

#6

Related to GUI

Advanced and Simple GUI switch, (also useful for small machines or when the GUI performance would be an issue)
For example when the timeliner is working as player, but you want to have access to some basic options like transport and play/stop controls, useful when it is operated by a person without experience.

And regarding to audio.

Obviously separate thread for audio playing, without glitches ;)

#7
• Allow nesting of timelines. So one timeline can be (part of) a track in another one. Like sequences in premiere.

• Integrated asset-handling

• creating / managing sequences

• import audio / video / midi / other timelines

• importer settings, e.g. interpret image-sequences as being 25 FPS.

• (re)naming

• grouping/organizing assets by tags and/or in folders

• relinking of moved assets

• replacing files, like videoproxies, in place

• Save as / serialize timeline to a human readable format that ideally adheres to some kind of standard.

#8

Hello Natan,

Sander Van Dijk has made an amazing work redesigning the After Effects timeline, layers and keyframes…
http://www.sandervandijk.tv/after-effects-features/

Adobe has never taken into account these ideas so far…
But there is a lot of great inspiration here (Sander created some videos and GIF examples, and guys in the comment section have a lot of good ideas too)

#9

I think nobody mentioned so far:
keyframes snapping to keyframes in other tracks …

#10

its really mindblowing to see how wide-ranging the needs of people are concerning a timeline. sounds like there can’t be just one being suitable for everyone.

for example, i just need plain animation and don’t care about recording, live inputs, midi mapping, asset management and so on.

therefore its good to see different approaches in the SOD

so my only suggestions for kairo would be:

• intuitve UI, with everything one would expect from a modern UI
• low cpu hit

#11

Hey,
regarding other softwares - I’m working with Ventuz a lot for the last two years, it’s Animation node is a state machine with timeline, and is a pleasure to use.
Might be a good study material, the software can be downloaded and tried for free.
http://www.ventuz.com/support/help/latest/AnimationEditor.html
http://www.ventuz.com/support/tutorial-08-keyframe-animation-basics

thanks

#12

Thanks guys for all these precious inputs.

As u7angel said, it’s really incredible to see how many needs and whishes related a timeline. It’s clear that is a key piece of software… :)

My intent is to first release a relatively simple tool, which will have all the functionalities of a basic timeline (as the old Timeliner node) plus the new feature of “dynamic keyframes”. These dynamic keyframes are for me the most innovative contribution of this research and I’d like to have as soon as possible some feedbacks from the community.
Then it will be a long journey to evolve this first version of Kairos.Timeline into something else, more rich and versatile. Actually, my final goal is to get something like an Ableton Live kind of software, but incredibly superior in terms of realtime contents management. This will be Kairos.

So, coming back to the roadmap (also a reply to @readme) , this first version will come as a “centralized” editor, in which you create tracks, group them, add and edit keyframes, and so on…
then there will be a set of nodes to set and retrieve data from it, like: GetTrack, SendChannel (to send any kind of data to a channel, received for example by a dynamic keyframe), SetKeyframe, SetCustomClock, …
I’ll probably also pack some of the Kairos.Timeline features as independent vvvv nodes, eg. a Track node, which contains all the features of a single track without the rest of kairos. this module would still allow you to create amazing gradients and fades…
obviously you can still instantiate many Kairos.Timelines as individual vvvv nodes, even if not best optimized approach.

few scattered replies to your suggestions:

@sunep

1. not in the first release, but def wanted
2. already now the runtime of the software is separated from the model and the editor, so it will be possible, i guess, to have some sort of independency from the vvvv fluctuating frame rate.
3. yes. It will be possible to record keyframes on the fly. I’m still thinking to a different mode in which you can record raw values, with less functionalities than keyframes but better performances.
4. and yes, editable keyframes.
5. this is totally possible (I also need it for NRT rendering). Since you can manually set the Time 64bit value (which is the position of the sampler that sample each track) you can read from the timeline as you like, eg. sending the time position of every frame from your vvvv patch…
6. right now I implemented just Time (in seconds) as the main time measurement. I already got a dynamic snap to quantize movements depending on the time zoom magnitude.
7. My plan is to put a toggle to switch between Time and Tempo (with BPM and Tempo Signature).
8. I definitively want to have hierarchies in tracks. I’m still thinking (and I’d like your suggestions) what kind of control you would have over tracks from the group level, and how to display groups in UI.

@h99

1. I already have this feature as “section markers”, which have a dedicated mini track under the time bar.
you can play from any of the section markers and even call from outside (eg. vvvv node).
what’s best: “section” or “chapter”?
2. sorry my ignorance, what’s OTF?
3. regarding frame interpolation:
• It will be per keyframe
• types: StepIn, StepOut, Tween (with all relative settings), bezier (being able to control two handles)
1. I’m still considering all this merging stuff… def not in this first version
2. do you mean sort of labels that you can put into the timeline of every track? like comments that you can place near the keyframes?

…chaos is my bread… :)

@lasal

1. to 5. will see how much i can get in terms of external control for this first version, but definitively wanted.
Audio:
I’d like to have Audio tracks in the future, don’t think in this first release.
Regarding GUI:
I already splitted completely the model+runtime part of the software from the editor (UI), so you can eventually edit the timeline then have just a much light player without any UI… …or design a minimal interface.

@bjoern

• nesting feature def is the direction of kairos. not for this first release
• serialization: I’ll def want to sort this part in a way that future version will be campatible with previous presets and scenes. so yes, I need to create a standard for this.

@guest
thanks for the link!

keyframes snapping to other keyframes: yes

@u7angel
you will get an animation tool already from the first version… …hopefully :)

@wide
thanks so much for the input. I’m downloading it and I’ll def give a try. tnx

I’ll keep you posted with the development news and I’ll ask here if I have doubts regarding some features
thanks to all

Nat

…and don’t stop to send me suggestions and links for references ;)

#13

I was shamelessly using a DVD term! Being a (time)line it should be nor chapter or section, but segment, no?

on the fly

Yes, I see I wrote point; that should have been keyframe obviously. Then, great and greater.

Merging logic would be very important, because it would let you sync keyframes and segments (I’m already calling it like this) and making many of the other requests, which I respectfully consider not part of a *barebone timeline, more easy to be integrated as external plug-ins, or modules if you like. It would allow complex animations with much less effort than now.
I understand that this should be more a reminder about keeping it in mind while building the timeline, than an actual request.

*barebone = including all that logic and operations and… required to manage values along time in the most flexible way.

Yup, something like that. Complex animations would need many details and cross-referencing: having the chance to put a note that says “recalculate this based on new data” or “sync with segment XYZ” would be immensely helpful.

Oh, dear, do you want some thread, with your bread?
No granny ever

#14

@dottore

what about the ui? will it be rendered by a vvvv dx11 renderer or are u working on your own window + optimized rendering ?

if not, this would a be request too, kairo should be just one node without the overhead of vvvv patch + vl patch since i guess this is eating cpu cycles for breakfest, no ?

#15

@u7angel
I’m currently developing the ui using craftlie library. It seems quite light and avoids too much vvvv patching.
for now is fine, but the plan is obviously to be independent from vvvv.

#16

Hello guys,
Quite a long time passed from my last words regarding Kairos, so let me update you about what’s going on.

The latest concepts and ideas I shared with you (at node and in the post) were mostly regarding a timeline tool that had this new feature of dynamic keyframes.
Obviously during summer development many things changed.
I’ve been in Berlin in august, for a development session dedicated to kairos.
Devvvvs were just great and fully supportive. together we dig into the software I had in mind, trying to abstract things and finding the strong principles to look for.

From the very beginning I realized that the software I had in mind wasn’t just a timeline.
Due to the fact that I urgently need the software for production, I changed plans and, instead of going for a timeline tool, I prioritized the development of another mode of kairos: the Matrix.

You can think at this Matrix mode as the Session View of ableton live. it’s basically the same thing.
Each parameter controlled with kairos is a column of the matrix (“channels” in ableton).
the rows represent some sort of “scenes”.
Each matrix cell contains a state (static or dynamic) of that parameter.
you can then click on a cell and trigger live its state, exactly like triggering the audio/midi clips in the ableton session view.
I decided to prioritize this Matrix mode because is the simplest way to define-design the state (scene/preset) of an entire parametric system. A preset is a row of the matrix, meaning a cell, empty or not, for each kairos parameter (column).
A timeline is already something more: it’s a way to organize over time different states (-scenes-presets) of a parameter.

In kairos the state of a parameter is define by a DataSource.
DataSources are the building blocks of your Kairos scene (eg. you may put DataSources into the Matrix cells).
A DataSource can be of different types:

• Static
It’s a static value for the parameter. It can be anything: a value, a spread of values, a color palette, etc…
Every data you can imagine which is static, stored in memory, not dynamically generated.
obviously there will be an editor to design each Static DataSource

• Dynamic
Any State that is dynamically generated. eg:

• LFO (obvs in a spreadable fashion)
• Perlin
• Random
• Audio Analysis
• Kinect Data
• Particle System

• Each Dynamic DataSource will have it’s own control UI, sort of inspektor, like the ctrl window of VST plugins (distort/reverb/…) in the sound editing softwares.
• Filter
A DataSource can take another DataSource Output as input, manipulate it and return it transformed. These kind of DataSources can be called Filters. eg.
• Linear Filter
• Damper
• Oscillator
• Levin
• Delay
• Container
Containers are very interesting DataSources: thet take a set of DataSources as Input plus a Model, a set of settings (specific for every container) that tells the container how to handle the incoming DataSources.
If you abstract enough, you can basically see most of the features of an advanced software like Ableton Live as a collection of Containers:
let’s take the timeline.
timeline container takes a Model that describes the keyframes position and all their settings (interpolation, dynamic/static, …). Then it takes also a spread of DataSources which might be the Dynamic DataSources available in the system that will be assigned to some dynamic keyframes.
The timeline container then has some functionalities to handle these contents, like some interpolation functions.
It takes the incoming dynamic DataSources. dispatch them to the assigned dynamic keyframes, then apply the interpolation between the relevant keyframes in order to give the final sample value.
Conceiving the Timeline as a DataSource (Container) allows to use it anywhere in kairos as you would do with any other DataSource (static value, an LFO, a SoundAnalysis value,…). You can put it into a Cell of the matrix, or even in a keyframe of another timeline (in this case it would become a clip, that you could instantiate as many times as you like).
I’ve got already a list of Containers that I’ll develop in the next future:
• Sampler 1D (Timeline)
• Sampler 2D-3D-… (Delaunay Sampling)
• Distance Field 1D-2D-3d-… (distance based sampling)
• Switcher (like a multiFlipFlop)
• Automata
• StepSequencer
• Patcher

By abstracting the software to this level it’s much easier to think at it in a modular way.
Another example is the matrix itself:
Each column can be seen as a Switcher Container in which you choose between different options (cells) to set the state of the parameter assigned to that column (multiFlipFlop behaviour that controls a Switch).

To achieve this kind of freedom, in which you are able to create DataSources, place them anywhere, enchain them, nest one into each other, and so on… a really simple, flexible but robust interface was needed.
@gregsn and @Elias did a great job in building a c# interface that we then implemented in vl.
This interface allows to patch some functionalities that are wrapped as Nodes, with Input and Outputs.
These nodes behave following a Pull model, like the nodes and patches in vvvv.
This means that if you don’t ask for their output value from bottom, they don’t get evaluated.
You are able to create DataSources on runtime, registering them into an engine, making them immediately available for other DataSources to be used.
Basically, this system makes the user a meta-patcher, able to create nodes and connect them in runtime without recompiling.
This is great. This is already in place.

Another aspect that I started to look at together with devvvvs is the UI.
I didn’t want to spend time in building a “static” UI for Kairos (Such a boooooring thing… hihihi), specially after focusing so much on modularization at all levels of the software.
Since the topic is very appealing for the vvvv/vl community in general, we set down at devvvvs place thinking to a nice way to achieve a good multi purpose modular UI library.
And @tonfilm kicked in, as you probably noticed from his post.
This is certainly a good opportunity for all of you to contribute to kairos development and, in general, to the development of a super cool and handy UI editor library.
I started creating some of the basic UI elements (like slider, Toggle/Push/Bang buttons, multiButtons, …) but we need to add many more.
You are welcome to partecipate!

So, at the end of this biblical post,
I’m sorry to disappoint those of you who were just waiting for a timeline tool in september. It simply won’t happen. :)
What is already happening it’s way more than a timeliner. it’s a flexible system that allows to manage realtime data in a nice new way.
Trust me, the wait is worth ;)
For all of you that offered support in development, I would love an hand on the UI part, as I said previously in the post. Let’s push it forward!

Hugs

Natan

#17

Thanks for the update! It really does sound worth the wait,

#18

Hello guys,
never say never… …a new kairos report :)
waiting for your feedbacks and suggestions.

ciaoo

#19

Sorry for the late entrance but I just now discovered this blessed initiative!
I recently stumbled upon this very nice timeline software and found it very original and inspiring. https://ossia.io/
Its kind of a condition based timeline…
Anyway, perhaps I totally beside the point… I am allready in love with Kairos!!!

Ofer

#20

Hey @ofersmi, thanks so much for the link!
Didn’t have time to dig deep into it but so far this ossia software looks very interesting.
I feel it’s full of cool concept and ideas.
thanks again for the input ;)

N