Last minute documentation updates.
[nondaw.git] / timeline / doc / OVERVIEW.mu
blob81ad15e16e989510f95daf99ad9bcf1b042a0c78
2 ! title         The Non DAW
3 ! author        Jonathan Moore Liles #(email,male@tuxfamily.org)
4 ! date          March 1, 2008
5 ! extra         #(image,logo,logo.png)
7 -- Table Of Contents
9 : Overview
11 :: Description
13   The Non DAW is a powerful, reliable and fast modular Digital Audio
14   Workstation system, released under the GNU General Public License
15   (GPL). It utilizes the JACK Audio Connection Kit for
16   inter-application audio I\/O and the FLTK GUI toolkit for a fast and
17   lightweight user interface.
19   Please see the #(url,MANUAL.html,Manual) for more information.
21 :: What it is not
23   Non-DAW is *not* a wave editor. It is not a beat slicer. It is not a
24   granular synthesis engine. It is *not* a clone of some proprietary DAW.  It
25   is not an /insert name of proprietary audio thing here/ killer. It is *not*
26   limiting and restricting.  It is *not* a monolithic DAW with internal mixing
27   or EQ DSP. Non-DAW is intended to be one tool among many in your Linux audio
28   toolbox.
30 :: What is a DAW?
32   The acronym DAW stands for Digital Audio Workstation. Of course, Non is
33   software, so when we say DAW we imply a purely software based system.  A DAW
34   is used by modern studio engineers to record and arrange multitrack sessions
35   of different musicians into a single song. Perhaps a more noble use of a
36   DAW, and the one for which Non-DAW was specifically written, is to provide
37   the mutli-instrumentalist individual with all the software necessary to
38   quickly and conveniently record and arrange his compositions and produce a
39   professional quality result.
41   In this author's opinion, a DAW comprises the following functionality:
43 * Non-linear, non-destructive arrangement of portions of audio clips.
44 * Tempo and time signature mapping, with editing operations being closely aligned to this map.
46   Since Non uses JACK for IO, some things traditionally considered to be within
47   the scope of a monolithic DAW can be pared out into JACK and Non Mixer:
49 * Signal routing
50 * Audio mixing
51 * Hosting of plugins
53 :: Why write another one?
55   First and foremost, we can disregard all non-free DAWs because we do not
56   waste our precious time and spirit on non-free and\/or proprietary software.
57   This excludes virtually every other DAW in existence. Secondly, we require a
58   DAW that runs on the GNU\/Linux operating system in conjunction with other
59   free software, such as the JACK Audio Connection Kit, in a modular and
60   cooperative and manner.  Finally, we require a program that is powerful,
61   fast, and reliable.  No other software meets these requirements.
63   The design of the Non DAW differs substantially from others. This is a good
64   thing; for a clone of a bad design is doomed from the start.
66   There is only one other DAW that is capable and free software, and its name
67   is Ardour.  Suffice it to say that the architecture of Ardour is incompatible
68   with the requirements of speed and reliability. Other DAW-like free software
69   programs, including Traverso and QTractor, are similarly limited (being of
70   similar design), but suffer the additional burden of cumbersome legacy ALSA
71   support and very a limited feature set.
73   Given these options, we had no choice but to start from scratch, this time on
74   a solid foundation, rather than attempting (in vain) to shoehorn good design
75   into an existing code base.
77 :: Features
79   Non-DAW shares many features in common with other, similar projects. However,
80   Non-DAW's unique architecture permits surprising new functionality.
82 ::: Journaled Projects
84   Unlike legacy DAWs, which keep project state in huge, memory wasting, hard
85   to manage XML (or binary equivalent) trees, Non-DAW has the unique ability
86   to store project state in a compact continuous journal of bidirectional
87   delta messages--similar to the journal part of journaling filesystems--in
88   plain ASCII.
90   The Non-DAW disk format takes the form of a journal of delta messages. Each
91   project file contains the complete history of that project since the last
92   (optional) compaction operation.  These journals are so terse that it is
93   practical to keep the complete history of a project from the time it was
94   first opened. No XML or other bloated, buggy, resource hungry format is
95   employed. (Anyone suggesting the use of XML for anything related to this
96   project will be shot on sight with incendiary rounds.)
98   This has a number of highly desirable consequences. Among them:
100 + Zero time spent 'saving' projects.
101 + No need to 'save' projects manualy.
102 + No need for CPU and RAM wasting 'autosave' function.
103 + In the (unlikely) event of a crash, at most *one* transaction (user action) may be lost, and the project will *not* be invalidated.
104 + Unlimited undo--potentially going back to the very moment the project was created (state of the template it was based on).
105 + Undo history requires no additional RAM.
106 + Project format is insanely simple and easy to manipulate with sed or awk scripts, should the need arise (see the included `remove-unused-sources` script for an example).
108   Non-DAW's journalling capability can drastically change your workflow. No
109   longer will you fear a system failure. No longer will your pinky finger
110   become sore from hitting Control-S after every important change. No longer
111   will you have to attempt, in vain, to manually edit a completely
112   incomprehensible XML 'document', because Ardour has corrupted its memory and
113   therefore the project you 'saved'.
115 ::: Non-destructive editing
117   Sound sources (audio files) are represented by /regions/. Any number of
118   regions may represent different parts of the same source. All editing is
119   performed on these region structures--the sound sources themselves are
120   considered read-only (except for captures in-progress).
122 ::: Unlimited tracks
124   Tracks in a DAW are unlike tracks on tape in that a single track can
125   contain more than one channel of audio. Each audio track has its own
126   record, mute, solo, and gain, as well an active take and any number
127   of inactive takes. A track may also have any number of annotation
128   and control sequences associated with it.
130 ::: Unlimited takes
132   A /take/ is a sequence of regions. Each track has /current take/, implied by
133   'the track', as well as any number of other, inactive takes. A track may be
134   set to display all takes simultaneously, to ease the process of reviewing
135   past takes or stitching together a new take from parts of previous takes.
136   Old takes may be deleted, either one by one or all at once, when they are no
137   longer required. Takes may not be transferred between tracks (there's no
138   technical reason why they can't, but allowing this would be bad design).
140 ::: Cross-fades
142   Where regions overlap, a cross-fade exists. This means that the transition
143   from region A to region B will be gradual rather than abrupt. The shape of
144   the gain curve may be selected separately for region A and B of the
145   cross-fade. Available curves include: Linear, Sigmoid, Logarithmic, and
146   Parabolic.
148 ::: Automation
150   Each track can have associated with it any number of /control sequences/, a
151   subset of which may be visible at any one time. Each control sequence
152   comprises a series of /control points/, which collectively represent a graph
153   of changes to a single controllable value over time. Anything may be
154   controlled by a control track, including external software supporting OSC or
155   MIDI control, although the most common application is mixer gain automation,
156   where the value controlled is the fader level in the mixer.
158 ::: Time/tempo mapping
160   The time and tempo maps (rulers) affect where and how many bar\/beat lines
161   are drawn. During playback they affect the time\/tempo of the JACK transport
162   so that other programs, like the Non-Sequencer, can follow along in sync.
164 :: Components
166   The Mixer and the Timeline are separate programs, connected through JACK.
168 ::: Timeline
170   All operations on the timeline are journaled, and therefore reversible.
172   The following data belong to the timeline:
174 = Tracks and Takes
175         = Each Track has a number of input and output ports, a name, and
176         = any number of attached sequences. All sequences but the current
177         = (topmost) are inactive and do not generate sound or accept
178         = captures. These sequences are referred to as /Takes/. Previous
179         = takes may be swapped with the current sequence and all takes
180         = may be shown on screen at once for easy splicing. Each track
181         = can also have any number of Control Sequences attached to it,
182         = in which case all control sequences generate control output
183         = unless disconnected. The height of a track may be adjusted
184         = and a track can be muted, soloed, or record-enabled.
185 = Regions
186         = Regions are the most common object on the timeline.  Each region
187         = represents a segment of some particular audio file. Waveforms
188         = of all regions belonging to the same source are displayed in
189         = the same hue. Each region has a normalization value and regions
190         = can be selected individually or operated on in groups. Each
191         = region has a fade-in and fade-out curve, and when two regions
192         = overlap, this constitutes a cross-fade.
193 = Control Points
194         = Control points are arbitrarily placed points on a curve (or
195         = line) from which continuous control values are interpolated
196         = and sent out a JACK port (like a control voltage).
197 = Time and Tempo Points
198         = Time and Tempo points control the tempo and meter throughout
199         = time.  This information is used for drawing the measure lines
200         = and snapping to the grid, as well as informing other JACK
201         = clients of tempo changes throughout a song.
202 = Annotation Points
203         = Cue points are textual markers on the timeline. Common names
204         = for cue points include "Verse 1", "Bridge", etc.
205 = Annotation Regions
206         = Annotation Regions are annotations with a definite duration.
207         = These are useful for representing lyrics or other notes of a
208         = timely nature. Each track may have any number of annotation
209         = sequences associated with it, and these sequences can contain
210         = a free mix of annotation points and annotation regions.
212 ; What does freedom have to do with this software?
214   Non is /free software/. This means, briefly, that you are free use it as
215   *you* wish, free to examine and adapt the source code, free to share it with
216   your friends, and free to publish your changes to the source code.
217   Furthermore, Non is /copyleft/, which means that you are free from the
218   threat of some other entity taking over and denying you the above freedoms.
219   The /free/ part of /free software/ doesn't refer to price any more than the
220   /free/ in /free speech/ does.
222   To learn why free software is so important to us (and why it should be
223   important to you), please see the Free Software Foundation's website:
225   #(url,http:\/\/www.fsf.org\/licensing\/essays\/free-sw.html,What is Free Software?)
226   #(url,http:\/\/www.fsf.org\/licensing\/essays\/copyleft.html,What is Copyleft?)
228 ; Donations
230   Donations can take many forms. You can donate your time in code, either by
231   sending it to me for review or cloning the git repository and publishing one
232   containing your changes. You can donate your time in testing, documentation,
233   artwork, indexing, etc. Or, if you don't feel that you possess the time or
234   skills required for the above forms of donation, you can donate money
235   instead. Money donated will help to ensure that I have the free time, good
236   nutrition and enthusiasm required to implement new features.  It can also be
237   a more palpable way of saying "Thanks for caring." or "Job well done!"
239   If you don't love this software, don't feel guilty about not contributing.
240   If you do love it, then please help me improve it--in whatever manner you
241   think is appropriate.
243   #(url,http:\/\/non.tuxfamily.org\/donation.html,Make a donation)
245 ; Distribution
247   Development of the Non-DAW and Non-Mixer can be followed with Git:
249 > git clone git://git.tuxfamily.org/gitroot/non/daw.git
251   There are no pre-compiled binaries available.
253 ; Requirements
255   The following libraries are required to build Non DAW and Non Mixer
257 * FLTK >= 1.1.7 (with `fluid`)
258 * JACK >= 0.103.0
259 * libsndfile >= 0.18.0
261 ; Community
263   Feel free to drop by the `#non` channel on irc.freenode.net.
265   There is a mailing list `non-daw@lists.tuxfamily.org`.
267   To subscribe, send a message with the subject 'subscribe' to
268   #(email,non-daw-request@lists.tuxfamily.org).
270   You can also browse the #(url,http:\/\/listengine.tuxfamily.org\/lists.tuxfamily.org\/non-daw\/,archive).