Proposal Crossfade

From Audacity Wiki
Revision as of 23:03, 17 April 2008 by Jeff Hussmann (talk | contribs)
Jump to: navigation, search
  • Display - The original mock-up is only effective at displaying a crossfade if a single linked fade that lasts the entire duration of the overlapping region is being displayed.
    • Single linked fade
    • Indicating Clip Overlap Regions
      • Zoomed Out - What does this text look like?
    • Single fade vs. Independent Fade

  • Summary

I want to build an intuitive interface for creating non-destructive cross-fades in Audacity.

Here is a link to the origin project suggestion on the Audacity GSoC ideas page. GSoC_Ideas#Intuitive_cross-fading

    • Stage 1 - half way target deliverables
    • end of summer deliverables
  • Proposal

For the first stage of the project, I will implement the basic functionality implied by the the cross-fade mockup at

  • Cross-fade functionality - For this stage of the project, the fade-in and fade-out shapes will be a single linked fade. Three fade shapes will be selectable.
    • Linear - A constant-gain cross fade in which a linear envelope decreasing from 1 to 0 over the course of the fade is applied to the left-hand clip and a linear envelope increasing from 0 to 1 is applied to the right-hand clip.
    • Logarithmic - A constant-power cross fade in which a logarithmically decreasing envelope is applied to the left-hand clip and the mirror image of this envelope is applied to the right-hand clip.
    • S-Curve - A commonly discussed fade shape - see for instance An envelope of 1/2+1/2 cos (2*pi*w/T) is applied to the left-hand clip where w is the number of samples from the start of the fade and T is the fade length in samples. The mirror image of this envelope is applied to the right-hand clip.
  • Display
    • Fade representation - A line will cut through the track display from the top at the fade start point to the bottom at the fade end point. Below the line, the left-hand clip will be rendered. Above the line, the right-hand clip will be rendered. For the linear and S-curve cross-fades, the two envelopes being applied to the clips sum to 1. This means that a single line shaped like the fade-out envelope is enough to completely visualize the cross-fade. In the logarithmic case, this is no longer true. More thought will need to be given to how to indicate that a logarithmic fade is being applied in a way that is consistent with what is actually being done.
    • Overlap extent - Since it will be possible for clips to overlap for longer than the actual duration of the fade, the total extent of the overlap needs to be displayed. I propose changing the track background to an unobtrusive color such as light yellow inside overlapping regions. Waveform data for the (enveloped into silence) portion of a clip that extends past the fade boundary will be rendered in red. (Alternatively, if this turns out to be too obtrusive, this data could simply not be rendered.) To ensure that the existence of cross-fade is visible no matter how far out the user zooms, this background color change will have a minimum pixel width (possibly a single pixel).

When a modifier is held down (I propose ctrl-shift), clips dragged near each other will no longer snap

    • draft gui images
      • zoomed in view
      • zoomed out view
    • define keystrokes and behavior


    • define mouse behavior
    • undo-stack
    • stereo track support
      • display different from mono tracks
    • crossfade type:
      • constant amplitude cross-fade
      • constant sum power cross-fade
      • fade-out-and-back-again "crossfade"
      • picker for fade type
    • presets / repeat effect (having done one cross fade, do the next one with the same 'parameters')
    • files/classes affected
      • planned changes to affected files

  • possible optional extensions
    • fade in/out with out another clip