beatwaves.net

System architecture

Main functionality

The session merger is capable of importing parts from one Ardour session to another. A 'part' is anything defined in the session file (XML). This includes regions, tracks, settings etc. The merger reads a session file and imports parts of it into an already open session according to the users selections.

Element classes

The program shall be made extensible by using a polymorphic element class representing a certain type of XML node or some XML attribute. Different element classes can be easily added without changing GUI code.

The element base class will have a strictly defined interface, that each derived class must implement, including at least the following functions:

  • Getting textual information on the element to be presented in the UI.
  • Checking whether or not the element can be moved to another session cleanly
    • Sessions have certain properties, that can have only one instance (e.g. start and end markers), that have to be overwritten if imported (causing loss of information).
    • Some elements can not be directly imported, but need additional actions, not necessarily yet implemented (e.g. samplerate conversion).
    • If user input is needed to determine actions needed for successfully importing the element, a dialog should be represented to the user
  • Moving the element to another session
    • element id's must be updated
    • files related to the element have to be moved and possibly renamed
    • many other actions might be necessary depending on the element type

Element handlers

Element handlers are also a polymorphic class, implemented in a similar way to element classes, each related to a certain element class. Element handlers are responsible for at least the following tasks:

  • finding the elements from XML that the related element class can handle
  • creating new instances of the respective element class
  • registering the elements with a higher level component

Merging dialog

The interface for merging elements shall be a dialog in Ardour. The user shall be able to select components from a session to be merged into the open session. As long as different element and element handler classes implement the given interface they will work with the dialog class.

All constructive input is welcome! (leave a comment below)

Tags:

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
(minus eight) plus (minus four) equals
Solve this math question and enter the solution with digits. E.g. for "two plus four = ?" enter "6".