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

ROADMAP #1

Open
46 of 74 tasks
roymacdonald opened this issue Apr 18, 2020 · 3 comments
Open
46 of 74 tasks

ROADMAP #1

roymacdonald opened this issue Apr 18, 2020 · 3 comments

Comments

@roymacdonald
Copy link
Owner

roymacdonald commented Apr 18, 2020

TO DO

  • Implement scroll sliders for ofxMUI trying to rescue as much as possible from ofxTimeline2 and ofxPanels

  • scrollbar zoomers

  • Make functional mockup of the UI

  • make functional data holder that translates the ofParameter to add a time dimension.

  • Parameter sliders in header

  • implement time transport (time Controller).

    • code only
    • gui (just a simple panel with buttons and time code view)
    • time translations (timecode, frame based, bpm and musically based.)
  • backend controller.
    holds data and syncs with gui. In charge of updating the ofParameter’s values.

  • Optimize:

    • rendering. Implement a single renderer class in charge of doing all. Use VboMeshes and an general Fbo which gets redrawn only when needed. Most of the time all items remain static, besides the playhead and time display
    • gui updating. seems to be redundant.
      • Still more optimizatiion and cleaning seems posible
  • TImeRuler

    • labels still needs a bit of improvement
  • Trackheader

    • Parameter Sliders
    • buttons
      • mute
      • solo
      • rec
  • Implemented data types

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t
    • size_t
    • float
    • double
    • glm::vec2
    • glm::vec3
    • glm::vec4
    • glm::quat (it is possible to tween between these using spherical lerp, although seems to be a glm experimental feature)
    • glm::mat4 (it is also possible to tween between these using glm::mix, although it is not implemented in ofxGui, so some more work needs to be done)
    • bool
    • void (because of how templating works you can not hold a void value so the whole timed data structures dont work. Yet, a simple list of the time where it gets triggered should work. Partially implemented in Keyframed)
    • ofColor
    • ofShortColor
    • ofFloatColor
    • ofRectangle (it is partially supported in ofxGui.)
      • Make PR to the OF core with fix for full support in ofxGui
  • Selector (selectors are mutually exclusive);

    • Keyframes selector
    • Regions selector
    • Select using keys
  • Track

    • make selectable
    • Highlight when selected
  • Region

    • make selectable
    • Highlight when selected
    • activate/deactivate keyframes when inside/outside of it (when changing the region in and out)
    • move keyframes when moving region (almost everything needed is there, just notify the controller about the dragging)
  • TracksPanel

    • Add GrabHandles to for moving and resizing when autoFill is disabled.
  • TimeControl

    • implement trigger() functon. ( Starts again from zero whenever called)
  • Keyframes

    • non linear easing (use ofxEasing? or something simpler, use handles? bezier handles?)
  • copy and paste.

  • undo/redo

  • mouse scroll usage

    • vert and horz move
    • zoom in/out using modifier key. Center zooming on mouse position
  • Keyboard shortcuts manager.

  • Examples:

    • Basic
    • AllParameterTypes (needs cleanup)
    • second window
    • not adjusting to window
    • independent timelines
    • One timeline triggers another one

Timeline GUI Structure

  • Main container: inherits from track group .
    • Timeruler and playhead. (it is also in charge of making the time to pixel and pixel to time conversions)
    • Track Headers
      • Track Header (has pointer to the track, and moves and scales following the track)
    • Tracks panel :
      • Other trackGroups
        • Track
      • Track (stores pointer to header. keeps the ofParameter)
        • Regions
          • Background( render video or waveform or nothing)
          • KeyFrames
            • KeyFrame
              • time
              • value (float, which then translates to the ofParameter)
@awilkie1
Copy link

Might want to consider Strings, noticed that its an ofParameter but not accessible in here.

@roymacdonald
Copy link
Owner Author

Thanks @awilkie1
I will add strings. I left em out as I thought it did not make sense to have strings in the timeline but then I realized that these can be used as a "named bang";
best

@awilkie1
Copy link

Yes, would be super useful! I'm making an OSC/UDP tool, being able to make bangs containing string which can be inputted via the GUI would be super slick

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

2 participants