Timeline/Sequencer GUI examples out there?

Hi!

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 :slight_smile:

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…

Definitely usefull. +1 :slight_smile:

Maybe you can get some inspiration here:


(openFrameworks timeline OSC sequencer)

3 Likes

Good idea, thanks, I’ll take a look at it!

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

Cheers

9 Likes

@ benkuper I’m interested on juce_timeline, there’s some tutorial/example to use it? thank you! :slight_smile:

Hello,
you can find implementation of it here : https://github.com/benkuper/BenTo and here https://github.com/benkuper/CrazyDance

2 Likes

@ benkuper really thank you!

Are there examples about juce_timeline without organicUI?

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…

3 Likes

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 :slight_smile: