[linux-audio-dev] Structure

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] Structure
From: P.J.Leonard (P.J.Leonard_AT_bath.ac.uk)
Date: to syys   02 1999 - 05:07:33 EDT


tatus: O
X-Status:
X-Keywords:
X-UID: 3757

Hello Linux audio people,

 Since there has been some interest in tracks and events I will
contribute my own little scheme for your musings. This structure is
the result of a few years evolution. What follows is the skeleton of the
structure.

 The class structure is [A] == abstract

    Component[A]
     / \
 Part Gesture[A]
             / | \
          Note Effect Sweep whatever

 A Component is not completely abstract it has

    A parent (another component, root of song has a null parent)
    next and prev pointers to implement an double linked list.
    time (used relative to its parents time to get absolute)
    voiceId (used to resolve the device patch etc. if this is null
                 the inherits the parent voice)
    trackId (used for cosmetics GUI stuff for vertical placement)

 A Part contians a linked list components. This gives you the
tree structure for a song.

 To sequence this structure you need to implement a part sequencer
and the sequencers for the concrete gestures. For example a note
sequencer generates 2 events NOTEON then NOTEOFF. A sweep gesture
generates many events for a given effect to make a nice wah for example.

 All the sequencing is done in real time with real time priority.
So all events get stuffed straight out to devices
(at present using OSS with dump straight away but will migratiate to
ALSA once it stabalises).

 The plan is to include real audio as another gesture.
 Software synths would look like another midi device.
 
 Please note and feel free to comment on the following:

  the lack of tracks in this scheme.
  the abitrary depth of recursion in the Parts within Parts etc.
  the nightmare of designing a user interface for such a beast.
  Editing is done in a lazy fashion. I never delete any components
  so you do not get problems because with dangling pointers. Later
  I may implemnt some garba


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:25:53 EST