Thanks for taking these into account. No pressure.
Regarding interpolation between one-component values on timeline: linear is usually not enough to render eye-pleasing animations.
I don't know maybe catmull-rom can be used here also. Bezier curves are a standard in most of the graphic and motion software, are well documented and I guess there's a bunch of bits already available.
To be precise, these should be either quadratic or cubic beziers.
Normally they work with control points - so you have a keyframe point on a curve and 2 handle points laying on a tangent line at that keyframe which you use to modify easing of the curve at the keyframe.
You have 2 handles per keyframe and usually they are locked to the tangent. In some cases you can unlock them so that they are sharing the same tangent - then you'e manipulating incoming and outgoing portion of the curve independently, so you have 2 tangents and a discontinuity.
This example shows you 'unlocked' version (1st graph)
http://math.hws.edu/eck/cs424/notes2013/canvas/bezier.htmlThis is the 'locked' version used in most cases
http://www.victoriakirst.com/beziertool/But what could be useful for Synthclipse to keep things simple instead of developing a full graphic editor is an auto-bezier option. By that I mean that bezier functions are used for interpolation of values between keyframes, but the control points are generated automatically.
I think this example (scroll down to cubic or quadratic) may give you the idea. I saw a better one somewhere but can't seem to find it now.
http://www.drububu.com/animation/bezier_curves/https://www.desmos.com/calculator/cahqdxeshdThere's already a bunch of online JS implementations because bezier is being used since HTML5/CSS3 to create CSS-based animations.
Here are some other implementations.
http://jsfiddle.net/halfsoft/Gsz2a/Here's a package for Unity
https://www.assetstore.unity3d.com/en/#!/content/11278
I am not sure what exactly you may need technically to implement these, but there's a plenty of resources.
I bet there are high chances you find a ready-to use library or code bits that will do the most part of the job.