/usr/share/doc/libtse3-dev/Song.html is in libtse3-dev 0.3.1-4.3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | <html>
<head>
<title>Song class hierarchy</title>
</head>
<body bgcolor=#ffffff text=#000000>
<table width=100% cellspacing=0 cellpadding=1 border=0 bgcolor=#000000><tr><td>
<table width=100% cellspacing=0 cellpadding=1 border=0><tr><td valign=center bgcolor=#c8d559>
<table width=100% cellspacing=0 cellpadding=0 border=0><tr>
<td align=left width=30%><b> TSE3 documentation<b></td>
<td align=center width=30%>Version 0.3.1</td>
<td align=right width=30%>
<a href="index.html"><b>Index</b></a>
<a href="api/index.html">API</a>
<a href="Version.html">Version</a>
<a href="Structure.html">Structure</a>
</td>
</tr></table>
</td></tr></table>
</td></tr></table>
<h1>Song class hierarchy</h1>
<p>
TSE3 has been designed in an object oriented fashion. Hence it takes an
object oriented approach to it's song structure. This provides a lot of the
powerful expressive features of the system.
<p>
The follows a class diagram of the song structure, which is explained below.
<pre><b>
+--------+ 1+----------------+
| Song |---------------+-------| TempoTrack |
+--------+ | +----------------+
| | |
| | | 1+----------------+
*| | +-------| TimeSigTrack |
+---------+ |in PhraseList | +----------------+
| Track | | |
+---------+ | | 1+----------------+
| | +-------| FlagTrack |
time ordered| +------+ +----------------+
*| *|
+----+----+ 1+----------+
| Part |------| Phrase |
+---------+ +----------+
</b></pre>
<p>
The <b>Song</b> is a description of a particular piece of music. It consists
primarily of <b>Tracks</b>, <b>Parts</b> and <b>Phrases</b>. Tracks are the sections of a Song
that play simultaneously. They correspond loosely to the different people in
a band playing together. One Track can perhaps handle the melody whilst
another handles the bassline and yet another the drum beat.
<p>
Phrases are (typically small) snatches of music. They are recorded by the
user can stored in a <b>PhraseList</b> in the Song. Once a Phrase has been recorded
it needs to be placed into a Track to make some sound during playback of the
Song. This is achieved with a Part.
<p>
Parts represent the physical placement of a Phrase in a Track. Since you can
have any number of Parts in different Tracks using the same Phrase, it is
easy to edit the one Phrase and change how each Part sounds. There is no
messy ghosting or memory expensive copying of data.
<p>
Both Tracks and Parts contain a number of parameters that can affect the MIDI
data that they produce. For example, Parts contain a number of real time
filters such as linear quantise and velocity window clipping. Both also have
a set of MIDI controls (such as pan, volume, program etc) that can be sent at
their start.
<p>
In addition to these Song components, there are additional tracks known as
the <i>Master Tracks</i>. They are
<dl>
<dt><b>The TempoTrack</b></dt>
<dd>
This defines any tempo changes that occur in the Song. The TempoTrack can be
disabled preventing tempo changes from occurring during playback.
</dd>
<dt><b>The TimeSig Track</b></dt>
<dd>
This defines any time signature changes that occur in the Song. A change in
time signature does not effect the recorded data but does affect the
metronome at playback. The TimeSigTrack can be disabled preventing time
signature changes from occurring during playback.
</dd>
<dt><b>The FlagTrack</b></dt>
<dd>
This is a track holding a number of general purpose markers. They do not
affect playback in any way, but allow the user to mark certain positions to
find it easier to navigate to them.
</dd>
<dt><b>The Left and Right Markers</b></dt>
<dd>
The Song also contains two marker positions about which 'repeat' takes place,
if enabled. When playback reaches the right marker it jumps to the position
of the left one.
</dd>
</dl>
<h3>More on Phrases</h3>
<p>
Phrases are not an editable type: once you have created a Phrase that
MIDI data it contains will remain as it is until the Phrase is deleted.
<p>
To create a Phrase you use a <b>PhraseEdit</b> object. This is an editable type of
Phrase, which once editing is completed can be used to create a Phrase.
<p>
These classes both inherit from a base <b>MidiData</b> class as shown below.
<pre><b>
+------------+
| MidiData |
+------------+
^ ^
| |
+----------+ +--------------+
| Phrase | | PhraseEdit |
+----------+ +--------------+
| Title |
+----------+
</b></pre>
<p>
The effect of editing a Phrase is achieved by creating a new Phrase with the same name
as an existing Phrase, making all Parts that use the old Phrase now use the new Phrase,
deleting the old Phrase and putting the new Phrase into the PhraseList. This operation
is provided in the Song class.
<body bgcolor=#ffffff text=#000000>
<table width=100% cellspacing=0 cellpadding=1 border=0 bgcolor=#000000><tr><td>
<table width=100% cellspacing=0 cellpadding=1 border=0><tr><td valign=center bgcolor=#c8d559>
<table width=100% cellspacing=0 cellpadding=0 border=0><tr>
<td align=left width=30%> © Pete Goodliffe, 2001-2003</td>
<td align=center width=30%><a href="Copyright.html">Copyright</a></td>
<td align=right width=30%><a href="Psalm150.html">Psalm 150</a> </td>
</tr></table>
</td></tr></table>
</td></tr></table>
</body>
</html>
|