Unlike legacy DAWs, which keep project state in huge, memory wasting, hard
to manage XML (or binary equivalent) trees, Non-DAW has the unique ability
to store project state in a compact continuous journal of bidirectional
delta messages--similar to the journal part of journaling filesystems--in
plain ASCII.
The Non-DAW disk format takes the form of a journal of delta messages. Each
project file contains the complete history of that project since the last
(optional) compaction operation. These journals are so terse that it is
practical to keep the complete history of a project from the time it was
first opened. No XML or other bloated, buggy, resource hungry format is
employed. (Anyone suggesting the use of XML for anything related to this
project will be shot on sight with incendiary rounds.)
This has a number of highly desirable consequences. Among them:
+ Zero time spent 'saving' projects.
+ No need to 'save' projects manualy.
+ No need for CPU and RAM wasting 'autosave' function.
+ In the (unlikely) event of a crash, at most *one* transaction (user action) may be lost, and the project will *not* be invalidated.
+ Unlimited undo--potentially going back to the very moment the project was created (state of the template it was based on).
+ Undo history requires no additional RAM.
+ 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).
Non-DAW's journalling capability can drastically change your workflow. No
longer will you fear a system failure. No longer will your pinky finger
become sore from hitting Control-S after every important change. No longer
will you have to attempt, in vain, to manually edit a completely
incomprehensible XML 'document', because Ardour has corrupted its memory and
therefore the project you 'saved'.
::: Non-destructive editing
Sound sources (audio files) are represented by /regions/. Any number of
regions may represent different parts of the same source. All editing is
performed on these region structures--the sound sources themselves are
considered read-only (except for captures in-progress).
::: Unlimited tracks
Tracks in a DAW are unlike tracks on tape in that a single track can contain
more than one channel of audio. Each audio track has its own record, mute,
solo, and gain, as well an active take and any number of inactive takes. A
may also have any number of annotation and control sequences associated with
it.
::: Unlimited takes
A /take/ is a sequence of regions. Each track has /current take/, implied by
'the track', as well as any number of other, inactive takes. A track may be
set to display all takes simultaneously, to ease the process of reviewing
past takes or stitching together a new take from parts of previous takes.
Old takes may be deleted, either one by one or all at once, when they are no
longer required. Takes may not be transferred between tracks (there's no
technical reason why they can't, but allowing this would be bad design).
::: Cross-fades
Where regions overlap, a cross-fade exists. This means that the transition
from region A to region B will be gradual rather than abrupt. The shape of
the gain curve may be selected separately for region A and B of the
cross-fade. Available curves include: Linear, Sigmoid, Logarithmic, and
Parabolic.
::: Automation
Each track can have associated with it any number of /control sequences/, a
subset of which may be visible at any one time. Each control sequence
comprises a series of /control points/, which collectively represent a graph
of changes to a single controllable value over time. Anything may be
controlled by a control track, including external software supporting OSC or
MIDI control, although the most common application is mixer gain automation,
where the value controlled is the fader level in the mixer.
::: Time/tempo mapping
The time and tempo maps (rulers) affect where and how many bar\/beat lines
are drawn. During playback they affect the time\/tempo of the JACK transport
so that other programs, like the Non-Sequencer, can follow along in sync.
:: Components
The Mixer and the Timeline are separate programs, connected through JACK.
::: Timeline
All operations on the timeline are journaled, and therefore reversible.
The following data belong to the timeline:
= Tracks and Takes
= Each Track has a number of input and output ports, a name, and
= any number of attached sequences. All sequences but the current
= (topmost) are inactive and do not generate sound or accept
= captures. These sequences are referred to as /Takes/. Previous
= takes may be swapped with the current sequence and all takes
= may be shown on screen at once for easy splicing. Each track