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

Refactoring of TimeManager #152

Open
geraldmwangi opened this issue Dec 4, 2016 · 10 comments
Open

Refactoring of TimeManager #152

geraldmwangi opened this issue Dec 4, 2016 · 10 comments

Comments

@geraldmwangi
Copy link
Contributor

geraldmwangi commented Dec 4, 2016

I would like to suggest a redesign of TimeManager class and the TimeObserver class.
The features I would like to implement are the following:

  • Flexible bar/beat measure (5/4, 7/8 ..)
  • Finer Quantization for all Events. Currently luppp quantizes bar-wise. SooperLooper could be a reference
  • Nudge functionality: instantly set the first beat, to correctly sync luppp with other musicians.
    together with Tap-tempo a drummer, percussionist could controll the TimeManager with a pad for Nudge,
    and another pad for Tap-tempo
  • Jack time slave. Luppp currently only operates as master
  • Adjustable metronome sound per beat. Usefull for complicated measures
  • Optional per scene capability: Ability for individual bar measure, tempo, quantization per scene
  • Probably OT: librubberband for time-stretching of the clips

Some of the features can be implemented separately (rubberband, jack slave), but the others must be done in one redesign of TimeManager. Am I missing more features/aspects?

@harryhaaren
Copy link
Member

I presume that the new TimeManager will be able to ramp BPM on the fly? It would be a pity to lose that functionality (even though its currently buggy..)

Agreed that LibRubberband is OT for this rework (so should be a seperate PR) and that JACK time slave is "additional" when done (so can be done later, to avoid having to rework twice).

The main TimeManager and TimeObserver indeed need refactoring in one big bang, please refrain from starting this work until #153 is completed (it will cause any patches no longer apply cleanly).

@harryhaaren harryhaaren added this to the future release milestone Dec 4, 2016
@geraldmwangi
Copy link
Contributor Author

"ramp BPM on the fly?": Do you mean change BPM on the fly? Yes, that is a must.

  • rubberband: I think I want to tackle this one first in a first PR, since I want to have it available ASAP
  • Time slave: I rethought this. I think slave feature must be done together with the bar/measure stuff, because when in slave mode, luppp receives that info from the time master. At least during the redesign I'll think of the provisions to later implement the slave feature. Maybe a TimeBaseSource class that abstracts jack time base, midi time base, or luppps internal time base. This way the rest of luppp is always in slave mode to the TimeBaseSource, whatever that is!

I'll wait until you give me the o.k. to go!

@harryhaaren
Copy link
Member

Just a note that the code-restyle is complete (#153), so building branches on current master will be easy to merge. Commit 01f71ec is the new code style, including a command to run in order to format code the same as the current codebase.

@nanu-c
Copy link

nanu-c commented Feb 1, 2017

luppp and hydrogen and seq24 are not working well together because of the jack time master, sequentially seq24 crashes and sometimes hydrogen crashes when I try mistakenly to stop the time in one of the two programs but not in luppp

@harryhaaren
Copy link
Member

I love the idea of JACK Transport. Unfortunatly its not as easy to implement as it might seem.
RE other programs crashing, thats for their bug trackers.
RE Luppp not behaving as it should; that is known, and should be addressed by this refactoring work.

Note also that the restlying of the codebase is completed, so theres' nothing (bar time and priority) stopping this work from going ahead :)

@geraldmwangi
Copy link
Contributor Author

geraldmwangi commented Feb 7, 2017 via email

@harryhaaren
Copy link
Member

@geraldmwangi - thanks for the update - no stressure (stress / pressure :)

@georgkrause
Copy link
Member

Hey @geraldmwangi, how are things going? ;)

@geraldmwangi
Copy link
Contributor Author

geraldmwangi commented Aug 29, 2017 via email

@harryhaaren
Copy link
Member

@geraldmwangi ouch - sorry to hear that - Good luck! -H

@georgkrause georgkrause removed this from the future release milestone Jul 18, 2018
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

4 participants