Devel/Annotator TODO's

From Clam

Contents

Annotator extractor merger (Jun GSoC)

  • Native windows compilation
    • Image:done.png Compiling the libraries
    • Image:done.png Compiling NetworkEditor
    • Image:done.png Compiling Annotator/vmqt
    • Image:done.png Compiling Annotator
    • Image:done.png Compiling the plugins (not required)
    • Image:done.png Compiling Voice2Midi (not required)
    • Update the native mingw compile wiki
  • Training tasks:
    • Take a look to the Pool related classes
    • Build a simple extractor (c++)
    • Build a pool to lab converter (python)

Widget related tasks

  • Make always visible playhead an option
  • Option to display the playhead always on the center while playing (piano roll mode)
  • Draggable handle for play position on the rulers
  • Shared time ruler and time scrollbar for all views
  • NetEditor scrolling segmentation view for Roman's chord extraction
  • Spectrogram view on the Annotator
  • Improve segmentEditor usability (better key bindings)
  • complete the segmenteditor modes
    • overlapping: not even implemented
    • unsized: added but not really tested
    • continuous/discontinuous: check adding at the end bug
  • Adding attributes to the segments on the segment editor
    • Labels
    • Heights
    • Colors
    • Fill Patterns


  • Investigate factoring plugins out of InstantViewPlugin.cxx or adding helper methods to reduce code repetition

Scheduled tasks

  • When no pool can be loaded do something. What?
    • Allow starting a pool from scratch
  • When a song is deleted, go to no-song state: unselect songs and clear its descriptors
  • Check schema loading when editing it on project properties
  • Dump back the edited segmentation on the proper way depending on the kind of segmentation
  • Initialize to the first segmentation after new schema
  • Handle no segmentation after new schema
  • Initialize to no song after project loading
  • Allow not selecting any song.
  • (?) Initialize to the first frame attribute after new schema
  • (?) When no frame attributes, hide the frame level attribute pannel
  • (?) When no segmentation, hide the segmentation pannel
  • Bug: Source Aggregator should rename the child scopes accordingly
  • Bug: Display message instead of crashing when incorrect segmentation points read
  • Bug: Display message instead of crashing when an attribute is missing
  • Bug: Ignore (not crashing) an unsupported attribute
  • Option: Playhead always visible
  • Feature: Key bindings for segment edition
  • Feature: Current segment always visible
  • The vertical rulers on the bpf editor are not displayed until a vertical resize
  • Syncronize zooms and scrolling among plot widgets
  • Support for <List> tag inside multiple item attributes (currently xoliver's annotations have to be checked to avoid the usage of this tag)

Unscheduled tasks

  • (Low priority) Strong dragging a bound (next and previous bounds are also moved)
    • Reproduce the previous behaviour but the limitation on previous and end bound
    • Dragging beyond next bounds move them
    • Dragging beyond next bounds move them limit lenght
    • Dragging beyond previous bounds move them
    • Dragging beyond previous bounds move them limits to 0
  • (low priority) Body dragging
  • (low priority) Body strong dragging
  • (low priority) Fix: ContinuousPolicy: When more than two onsets gets colapsed, you can't drag them. Solution: When picking when several onsets have the same value, the nearest one depends on the side you are clicking by index order.
  • Make Pool XML related errors being exceptions instead failed assertions
  • Change Onsets/Offsets into Beginnings Endings
  • Handling of attributes pending of annotation (have no data)
  • Error conditions on inserting and deleting on pools:
    • Error inserting outside range
    • Error inserting on non instanciated
    • Error remove outside range
    • Error remove on non instanciated
    • Test XML still works fine
    • Dealing with zero size scopes
  • TDD Implementation of SizelessSegmentation
  • TDD Implementation of OverlapingSegmentation
  • Corrections on XML dumping
    • [DONE] Simplify the RestrictedString XML
    • [DONE] Rename RestrictedString to Enumerated
    • Make the Enumerated be a CLAM Enum
    • Bound Text elements to allow using them on multielement scopes, not just the song one.
  • Updating changes on the annotation
    • Dump old data on the pool when changing the annotation
    • When segmentation moved change the underlying pool attribute
      • Option 1: Whenever it changes?
      • Option 2: On leave semgentation?
    • What to do with half edited attributes
    • Review that every edit marks the descriptors as changed.
  • Error/Warning message on segmentation errors when loading it
  • [Done] Not crashing so miserably when the click fails loading
  • (high priority) Reliable application flow
    • Viable project from scratch
      • 'New project' action choses a path for the project
      • [DONE] 'New project' action choses an schema
      • What to do when adding a file that has no pool?
    • [david] Reliable project file content
    • Make the file paths relative to the project dir location instead of the working dir
      • [DONE] Change the song files
      • [DONE] Change the schema files
      • [DONE] Fix: Not adding project path to absolute paths
      • Refactor the code to centralize path related operations
    • Convert filenames to backslashes in windows. Needed??
    • Consider independent pool and wave filenames.
  • Documentation into the Schema Browser
    • Adding an attribute on the description schema with the url or the xml
    • Make this documentation available to the schema browser
  • Heights
    • Clarify some aspects:
      • How to choose the attribute that is height controlled
      • How to feed the attribute to the editor
      • Which pool update policy
      • Mapping units and limits
    • Pick function (just in segmentation)
    • Drag function (just in segmentation)
    • Visual height hovering
      • Highlight
      • Tooltip 'Attribute: X units', pe. 'MaxFreq: 240Hz'
    • Visual height dragging
      • Add state for dragging heights
      • Entering and exiting the state
      • Comunicate drags
    • Cross updating table attributes and heights
  • (low priority) Colors by value
    • Clarify some aspects:
      • How to map attributes to colors?
      • Can the choosing method for height be used also for colors?
      • Should we force to be the same attribute for color and height?
      • Adding a thicker lower bar will illustrate better the color?


Global Goals for Simac

  • Numeric attributes does not get changed until you exit the cell
  • Descriptor Table Plugin for Chords
  • Frame view: Spectrum, Peaks
  • Segment modes: Unsized, Continuous... (Cal decidir prioritaris)
  • [Done] Segment display: Semitransparent box with opaque borders
  • Mapping segment pool attributes to segment colors
  • Mapping segment pool attributes to segment height
  • Tooltip: Height handle, Time handles & Body
  • Current Segment and keyboard segment navigation
  • Changing enums attributes with keys maps
  • Changing enums attributes with contextual menus
  • Defining the (keyboard, mouse) user interaction as a whole to be coherent

Done Tasks

  • [Done] Rework the validation of segmentations
  • [Done] Assure that the segmentations are well generated by the ClamExtractorExample
  • [Done] When no current audio set the plot range into positive
  • [Done] Implementation of Unsized segmentation
  • [Done] Encapsulate BPF's, limits, units, intervals inside EquidistantPointsFunction
  • [Done] Fix: Continuous segmentation fails loading. -> Due to zero onset being implicit
  • [Done] Format for saved segmentations depending on the kind of segmentation
  • [Done] Fix: Inserted segment attributes need to be initialized
  • [Done] Delete/Insert/Move segment -> Mark song as modified
  • [Done] Explicit descriptors save
  • [Done] Behave ok when no song selected
  • [Done] New project dialog
  • [Done] Editing project properties
  • [Done] Initialize the bpf if any lld was selected before song load.
  • [Done] Initialize the segmentation if any was selected before song load.
  • [Done] Bug: double free of project properties when edited
  • [Done] Fix: Clearing the song list after new project
  • [Done] Edit extractor on the lineedit affects the project
  • [Done] Opening boca files
    • [Done] Downloading/Uploading descriptors from services
  • [Done] Schema browser (or editor), and integrated descriptors documentation (or annotation instructions)

Done (Bennet GSoC)

(All being addressed as part of Bennett's GSoC work unless otherwise noted)

  • Image:done.pngAdd Properties to Attributes
    • Image:done.pngupdate ClamExtractorExample
    • Image:done.png On BuildSchema, add a call to add 'Frame::SpectrumMagnitude', guess or invent the bin gap and offset.
    • Image:done.png On MFCC2Pool get the write pool for such attribute and fill it.
    • Image:done.png Regenerate the example pool data
    • Image:done.pngadd properties to the FloatArray type on the schema
    • Image:done.pnguse such properties to fill the FloatArrayDataSource interface
    • Image:done.png PFADS::nBins() should be taken from the new attribute property NBins if available, if not, from the labels size as it is done now.
    • Image:done.png PFADS::getLabel should return:
      • Image:done.png The binLabel if bin<_binLabel size.
      • Image:done.png A numeric representation if the needed attribute properties is available
      • Image:done.png Empty string or 'ERR' if not
  • Image:done.png Update InstantViewPlugin
    • Image:done.png For BarGraph filter FloatArrays without binLabels AND without NBins
    • Image:done.png Adapt all the InstantViewPlugins to use the NBins when available.
    • Image:done.png Run the Annotator, add a BarGraph for SpectrumMagnitude and send adevelopment screenshot to the wiki ;-)
  • Image:done.png Add Scrolling Spectrogram View to NetworkEditor
    • tweaks:
    • Image:done.pngremove var duplication on value and colorindex- the real colorindex is cidx
    • Image:done.pngremove duped lines
    • Image:done.png make QT Designer plugin
      • Image:done.png add NetworkEditor/clamWidgetsPlugin/SpectrogramPlugin.*xx
      • Image:done.png update NetworkEditor/clamWidgetsPlugin/ClamWidgets.cxx
    • Image:done.png provide option to turn scrolling on or off similar to smoothing
    • Image:done.png investigate texture limit problem- connect Spectrogram to chordCorrelation port
    • Image:done.png Make the widget work on the Prototyper
    • Time accurate scrolling spectrogram
  • Image:done.png Refactor Low Level Descriptors Pane class to clean up Annotator and allow for multiple LLD panes
  • Image:done.png Synchronize views zoom
  • Image:done.png Synchronize views position
  • Image:done.png Fix scroll bar sincronization
  • Image:done.png Always visible playhead