Waveform 2.0

Registered by RJ Skerry-Ryan

This is a refresh of the waveform viewer and a consolidation of the backend used to calculate the waveform overview and the waveform display.

>> Top of the todo list (for 1.11?) :
See all opened bugs

 >> Nice to have
- Add "EndOfTrack" in overview
- Finalize "simple" version of signal waveform renders (less demanding renderers, could be based on : "draw a low-frequency outline of the waveform to help indicate the beat in addition to the normal waveform")

>> Recent updates:
- make the simple GL version a little bit nicer (update with GL Filterer code)
- rework WOverview (cues colors/range color/cursor size & position)

>> Done so far:
- try to remove flickering of filtered/simple GL version
- overlapped waveform righ/left with top/center/bottom alignment specified in skins
- Finalize GLSL version signal render (experimental)
- Manage "spinny" endering with the central WaveformWidgetFactory to prevent Qt event loop flood
- GLSL version is testable but far from been stable ...
- low/mid/color is read from skin (may be updated)
- Add signal color fallback for skins with only one color for the signal
- Pre-computed waveform (for both main and summary) stored in separated table
- Filtered low/mid/high waveform data (packed)
- Waveform analysis of main and summary merged
- Introduce waveform completion concept to display actual analysis progress
- New Qt-based filtered waveform signal renderers
- Rework of Range/Cues/BeatGrid in main waveform viewport
- Rework of overview signal (now based on filtered data)
- Introduction GLSL (shader based) signal render
- Zoomable waveform
- Introduction of end-of-track display (need work)

---------------------------------------------------------------

Here some of the proposition when we start the waveform-2.0, some of those will be implement some not.

1) Consolidate AnalyserWaveform and AnalyserWavesummary into one >> OK
2) Store the waveform in a Waveform object on the Track >> OK
3) Store the Waveform in a new database table for waveforms only >> OK-TODO
4) Revamp the waveform renderer to allow multiple waveforms displayed in one waveform widget >> OK?
5) Revamp the waveform renderer to color the waveforms based on the audio >> OK
6) Allow the waveform renderer to draw a low-frequency outline of the waveform to help indicate the beat in addition to the normal waveform >> OK-TODO
7) Allow the waveform to be a mono / one-sided >> OK
8) Allow the waveform overview to be customizable via skin. >> PARTIALLY-OK

Blueprint information

Status:
Complete
Approver:
Albert Santoni
Priority:
High
Drafter:
RJ Skerry-Ryan
Direction:
Approved
Assignee:
Thomas Vincent
Definition:
Approved
Series goal:
Accepted for 1.11
Implementation:
Implemented
Milestone target:
milestone icon 1.11.0
Started by
RJ Skerry-Ryan
Completed by
RJ Skerry-Ryan

Whiteboard

I wonder about the utility of writing our own OpenGL code directly and skipping Qt's buggy implementation. http://www.khronos.org/files/opengl4-quick-reference-card.pdf

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.