Since this surely has been created several dozen times with JUCE, I imagine there might be an example out there, or even library, that I could use or learn from!
You know, the standards for any event sequencing, such as a piano roll or other: a ruler at the top with time/bars/beats. A zoom-scroll slider, a viewport where notes/events/values can be added, etc. Or an audio waveform zoomed & sliced. Or video clips arranged in time. You know the one
It is not rocket science, but still, if there’s anything that can save me some time and not have to reinvent the wheel, I’d love to look at it!
Especially the time/beats/bars slider sounds like a component that would even make sense to include as a standard component in JUCE…
Hi there, if anyone’s still interested, i created a timeline juce module. For now it heavily depends on a whole subframeworks i created call OrganicUI, but with a bit of fiddling you can separate the dependencies.
You can find a software using this timeline here : http://benjamin.kuperberg.fr/chataigne/
and the repo to the juce_timeline here : https://github.com/benkuper/juce_timeline
It’s pretty easy. We have one that’s not published but roughly:
Make a class called TimelineController and have it store start and end positions for the currently viewed area.
You can add in zoom, snapping and stuff to this - we have methods like getViewedRange(), zoomIn(), zoomOut(), setLeftPositionTo(…). It’s a fairly simple class really - it just stores the start and end positions of the view (and maybe the maximum and minimum values of those) - pop a listener callback setup on itso your UI objects can find out when the view changes.
It can be agnostic about the units it works in, we have the same code which is sometimes used for things measured in seconds, sometimes in beats…
Make a ruler object that listens to the TimelineController. The only annoying bit of code is to get the thing that displays the ruler subdivisions correctly. I wouldn’t use my code as a reference here - it works but I don’t like it.
Once you’ve got that set up, everything else is pretty easy, scrollbars, having waveforms track the TimelineController position…
Hello,
no there is not, this is a module that is entirely using organicui. But the concepts are there so you could theorically port it to a standalone version, but good luck with that