Skip to content

[FR]: Add a simple way to render an Edit on a background thread #228

@drowaudio

Description

@drowaudio
  • High level API that takes an Renderer::Parameters and renders an Edit on a background thread
  • Returns immediately with a handle
  • Runs on a an internal background thread
  • Takes a std::function that it calls on completion
  • Handle:
    • Progress
    • Thumbnail
  • Move Renderer::Parameters to its own file
    • Add sensible defaults
    • Add builder pattern for options
    • Remove separateTracks
    • Take a vector of Tracks rather than bits
  • Make static functions to create common Render::Parameters
  • Ideally rendered files will be scoped so completion has to take ownership of them or they will be deleted
  • Options to add upstream/downstream tracks
  • Tests:
    • Two clips on two audio tracks
    • Submix/folder: Include sub tracks by default
    • Clip on audio track inside submix
      • Render audio track
        • Include upstream submix parent (should be audible with gain change)
        • Exclude upstream submix parent (should be as if it wasn't in a submix i.e. no gain change)
      • Render submix
        • Include downstream (clips should be audible)
      • Tracks that feed in to other tracks
        • Two audio tracks, one with a clip which feeds in to the other
        • Render the source track, should be as if track was rendered by itself (without feeding in to the other)
        • Render destination track, should render both
    • Side chain: Source side chain tracks should be included by default
      • One track with sin tone and sidechain compressor, second track with kick samples feeding side chain
      • Rendering just the sin track should give the pumping
      • Rendering just the second should be the normal kick
      • Rendering both should give the kick and the pumped sin
    • Mute/solo/isolate: Rendering should not affect the mute/solo states by default
    • Aux send/return: Include aux sends by default
      • Option to disable them
    • Rack source tracks: Don't include Rack source tracks by default
      • Option to include other Rack source tracks

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions