Assists music production by grouping standalone programs into sessions. Community version of "Non Session Manager".
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

313 lines
14KB

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