| 
							- 
 - ! title		The Non DAW
 - ! author	Jonathan Moore Liles #(email,male@tuxfamily.org)
 - ! date		March 1, 2008
 - ! extra		#(image,logo,icon.png)
 - 
 - -- Table Of Contents
 - 
 - : Overview
 - 
 - < tle.png
 - 
 - :: Description
 - 
 -   The Non DAW is a powerful, reliable and fast modular Digital Audio
 -   Workstation system, released under the GNU General Public License
 -   (GPL). It utilizes the JACK Audio Connection Kit for
 -   inter-application audio I\/O and the FLTK GUI toolkit for a fast and
 -   lightweight user interface.
 - 
 -   Please see the #(url,MANUAL.html,Manual) for more information (and
 -   lots of screenshots).
 - 
 - :: What it is not
 - 
 -   Non-DAW is *not* a wave editor. It is not a beat slicer. It is not a
 -   granular synthesis engine. It is *not* a clone of some proprietary DAW.  It
 -   is not an /insert name of proprietary audio thing here/ killer. It is *not*
 -   limiting and restricting.  It is *not* a monolithic DAW with internal mixing
 -   or EQ DSP. Non-DAW is intended to be one tool among many in your Linux audio
 -   toolbox.
 - 
 - :: What is a DAW?
 - 
 -   The acronym DAW stands for Digital Audio Workstation. Of course, Non is
 -   software, so when we say DAW we imply a purely software based system.  A DAW
 -   is used by modern studio engineers to record and arrange multitrack sessions
 -   of different musicians into a single song. Perhaps a more noble use of a
 -   DAW, and the one for which Non-DAW was specifically written, is to provide
 -   the mutli-instrumentalist individual with all the software necessary to
 -   quickly and conveniently record and arrange his compositions and produce a
 -   professional quality result.
 - 
 -   In this author's opinion, a DAW comprises the following functionality:
 - 
 - * Non-linear, non-destructive arrangement of portions of audio clips.
 - * Tempo and time signature mapping, with editing operations being closely aligned to this map.
 - 
 -   Since Non uses JACK for IO, some things traditionally considered to be within
 -   the scope of a monolithic DAW can be pared out into JACK and Non Mixer:
 - 
 - * Signal routing
 - * Audio mixing
 - * Hosting of plugins
 - 
 - :: Why write another one?
 - 
 -   First and foremost, we can disregard all non-free DAWs because we do not
 -   waste our precious time and spirit on non-free and\/or proprietary software.
 -   This excludes virtually every other DAW in existence. Secondly, we require a
 -   DAW that runs on the GNU\/Linux operating system in conjunction with other
 -   free software, such as the JACK Audio Connection Kit, in a modular and
 -   cooperative and manner.  Finally, we require a program that is powerful,
 -   fast, and reliable.  No other software meets these requirements.
 - 
 -   The design of the Non DAW differs substantially from others. This is a good
 -   thing; for a clone of a bad design is doomed from the start.
 - 
 -   There is only one other DAW that is capable and free software, and its name
 -   is Ardour.  Suffice it to say that the architecture of Ardour is incompatible
 -   with the requirements of speed and reliability. Other DAW-like free software
 -   programs, including Traverso and QTractor, are similarly limited (being of
 -   similar design), but suffer the additional burden of cumbersome legacy ALSA
 -   support and very a limited feature set.
 - 
 -   Given these options, we had no choice but to start from scratch, this time on
 -   a solid foundation, rather than attempting (in vain) to shoehorn good design
 -   into an existing code base.
 - 
 - :: Features
 - 
 -   Non-DAW shares many features in common with other, similar projects. However,
 -   Non-DAW's unique architecture permits surprising new functionality.
 - 
 - ::: Journaled Projects
 - 
 -   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 track 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
 - 	= can also have any number of Control Sequences attached to it,
 - 	= in which case all control sequences generate control output
 - 	= unless disconnected. The height of a track may be adjusted
 - 	= and a track can be muted, soloed, or record-enabled.
 - = Regions
 - 	= Regions are the most common object on the timeline.  Each region
 - 	= represents a segment of some particular audio file. Waveforms
 - 	= of all regions belonging to the same source are displayed in
 - 	= the same hue. Each region has a normalization value and regions
 - 	= can be selected individually or operated on in groups. Each
 - 	= region has a fade-in and fade-out curve, and when two regions
 - 	= overlap, this constitutes a cross-fade.
 - = Control Points
 - 	= Control points are arbitrarily placed points on a curve (or
 - 	= line) from which continuous control values are interpolated
 - 	= and sent out a JACK port (like a control voltage).
 - = Time and Tempo Points
 - 	= Time and Tempo points control the tempo and meter throughout
 - 	= time.  This information is used for drawing the measure lines
 - 	= and snapping to the grid, as well as informing other JACK
 - 	= clients of tempo changes throughout a song.
 - = Annotation Points
 - 	= Cue points are textual markers on the timeline. Common names
 - 	= for cue points include "Verse 1", "Bridge", etc.
 - = Annotation Regions
 - 	= Annotation Regions are annotations with a definite duration.
 - 	= These are useful for representing lyrics or other notes of a
 - 	= timely nature. Each track may have any number of annotation
 - 	= sequences associated with it, and these sequences can contain
 - 	= a free mix of annotation points and annotation regions.
 - 
 - ; What does freedom have to do with this software?
 - 
 -   Non is /free software/. This means, briefly, that you are free use it as
 -   *you* wish, free to examine and adapt the source code, free to share it with
 -   your friends, and free to publish your changes to the source code.
 -   Furthermore, Non is /copyleft/, which means that you are free from the
 -   threat of some other entity taking over and denying you the above freedoms.
 -   The /free/ part of /free software/ doesn't refer to price any more than the
 -   /free/ in /free speech/ does.
 - 
 -   To learn why free software is so important to us (and why it should be
 -   important to you), please see the Free Software Foundation's website:
 - 
 -   #(url,http:\/\/www.fsf.org\/licensing\/essays\/free-sw.html,What is Free Software?)
 -   #(url,http:\/\/www.fsf.org\/licensing\/essays\/copyleft.html,What is Copyleft?)
 - 
 - ; Donations
 - 
 -   Donations can take many forms. You can donate your time in code, either by
 -   sending it to me for review or cloning the git repository and publishing one
 -   containing your changes. You can donate your time in testing, documentation,
 -   artwork, indexing, etc. Or, if you don't feel that you possess the time or
 -   skills required for the above forms of donation, you can donate money
 -   instead. Money donated will help to ensure that I have the free time, good
 -   nutrition and enthusiasm required to implement new features.  It can also be
 -   a more palpable way of saying "Thanks for caring." or "Job well done!"
 - 
 -   If you don't love this software, don't feel guilty about not contributing.
 -   If you do love it, then please help me improve it--in whatever manner you
 -   think is appropriate.
 - 
 -   #(url,http:\/\/non.tuxfamily.org\/donation.html,Make a donation)
 - 
 - ; Distribution
 - 
 -   Development of the Non-DAW and Non-Mixer can be followed with Git:
 - 
 - > git clone git://git.tuxfamily.org/gitroot/non/daw.git
 - 
 -   There are no pre-compiled binaries available.
 - 
 - ; Requirements
 - 
 -   The following libraries are required to build Non DAW and Non Mixer
 - 
 - * FLTK >= 1.1.7 (with `fluid`)
 - * JACK >= 0.103.0
 - * libsndfile >= 0.18.0
 - * liblo >= 0.26
 - * libsigc++ >= 2.0.0
 - 
 - ; Community
 - 
 -   Feel free to drop by the `#non` channel on irc.freenode.net.
 - 
 -   There is a mailing list `non-daw@lists.tuxfamily.org`.
 - 
 -   To subscribe, send a message with the subject 'subscribe' to
 -   #(email,non-daw-request@lists.tuxfamily.org).
 - 
 -   You can also browse the #(url,http:\/\/listengine.tuxfamily.org\/lists.tuxfamily.org\/non-daw\/,archive).
 
 
  |