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.

385 lines
17KB

  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,MANUAL.html,manual) for more information.
  14. :: What it is not
  15. Non-DAW is *not* a wave editor. It is not a beat slicer. It is not a
  16. granular synthesis engine. It is *not* a clone of some proprietary DAW. It
  17. is not an /insert name of proprietary audio thing here/ killer. It is *not*
  18. limiting and restricting. It is *not* a monolithic DAW with internal mixing
  19. or EQ DSP. Non-DAW is intended to be one tool among many in your Linux audio
  20. toolbox.
  21. :: What is a DAW?
  22. The acronym DAW stands for Digital Audio Workstation. Of course, Non is
  23. software, so when we say DAW we imply a purely software based system. A DAW
  24. is used by modern studio engineers to record and arrange multitrack sessions
  25. of different musicians into a single song. Perhaps a more noble use of a
  26. DAW, and the one for which Non-DAW was specifically written, is to provide
  27. the mutli-instrumentalist individual with all the software necessary to
  28. quickly and conveniently record and arrange his compositions and produce a
  29. professional quality result.
  30. In this author's opinion, a DAW comprises the following functionality:
  31. * Non-linear, non-destructive arrangement of portions of audio clips.
  32. * Tempo and time signature mapping, with editing operations being closely aligned to this map.
  33. Since Non uses JACK for IO, some things traditionally considered to be within
  34. the scope of a monolithic DAW can be pared out:
  35. * Signal routing
  36. * Audio mixing
  37. * Hosting of plugins
  38. :: Why write another one?
  39. First and foremost, we can disregard all non-free DAWs because we do not
  40. waste our precious time and spirit on non-free and\/or proprietary software.
  41. This excludes virtually every other DAW in existence. Secondly, we require a
  42. DAW that runs on the GNU\/Linux operating system in conjunction with other
  43. free software, such as the JACK Audio Connection Kit, in a modular and
  44. cooperative and manner. Finally, we require a program that is powerful,
  45. fast, and reliable. No other software meets these requirements.
  46. The design of the Non DAW differs substantially from others. This is a good
  47. thing; for a clone of a bad design is doomed from the start.
  48. There is only one other DAW that is capable and free software, and its name
  49. is Ardour. Suffice it to say that the architecture of Ardour is incompatible
  50. with the requirements of speed and reliability. Other DAW-like free software
  51. programs, including Traverso and QTractor, are similarly limited (being of
  52. similar design), but suffer the additional burden of cumbersome legacy ALSA
  53. support and very a limited feature set.
  54. Given these options, we had no choice but to start from scratch, this time on
  55. a solid foundation, rather than attempting (in vain) to shoehorn good design
  56. into an existing code base.
  57. :: Features
  58. Non-DAW shares many features in common with other, similar projects. However,
  59. Non-DAW's unique architecture permits suprising new functionality.
  60. ::: Journaled Projects
  61. Unlike legacy DAWs, which keep project state in huge, memory wasting, hard
  62. to manage XML (or binary equivalent) trees, Non-DAW has the unique ability
  63. to store project state in a compact continuous journal of bidirectional
  64. delta messages--similar to the journal part of journaling filesystems--in
  65. plain ASCII.
  66. The Non-DAW disk format takes the form of a journal of delta messages. Each
  67. project file contains the complete history of that project since the last
  68. (optional) compaction operation. These journals are so terse that it is
  69. practical to keep the complete history of a project from the time it was
  70. first opened. No XML or other bloated, buggy, resource hungry format is
  71. employed. (Anyone suggesting the use of XML for anything related to this
  72. project will be shot on sight with incendiary rounds.)
  73. This has a number of highly desirable consequences. Among them:
  74. + Zero time spent 'saving' projects.
  75. + No need to 'save' projects manualy.
  76. + No need for CPU and RAM wasting 'autosave' function.
  77. + In the (unlikely) event of a crash, at most *one* transaction (user action) may be lost, and the project will *not* be invalidated.
  78. + Unlimited undo--potentially going back to the very moment the project was created (state of the template it was based on).
  79. + Undo history requires no additional RAM.
  80. + 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).
  81. Non-DAW's journalling capability can drastically change your workflow. No
  82. longer will you fear a system failure. No longer will your pinky finger
  83. become sore from hitting Control-S after every important change. No longer
  84. will you have to attempt, in vain, to manually edit a completely
  85. incomprehensible XML 'document', because Ardour has corrupted its memory and
  86. therefore the project you 'saved'.
  87. ::: Non-destructive editing
  88. Sound sources (audio files) are represented by /regions/. Any number of
  89. regions may represent different parts of the same source. All editing is
  90. performed on these region structures--the sound sources themselves are
  91. considered read-only (except for captures in-progress).
  92. ::: Unlimited tracks
  93. Tracks in a DAW are unlike tracks on tape in that a single track can contain
  94. more than one channel of audio. Each audio track has its own record, mute,
  95. solo, and gain, as well an active take and any number of inactive takes. A
  96. may also have any number of annotation and control sequences associated with
  97. it.
  98. ::: Unlimited takes
  99. A /take/ is a sequence of regions. Each track has /current take/, implied by
  100. 'the track', as well as any number of other, inactive takes. A track may be
  101. set to display all takes simultaneously, to ease the process of reviewing
  102. past takes or stitching together a new take from parts of previous takes.
  103. Old takes may be deleted, either one by one or all at once, when they are no
  104. longer required. Takes may not be transferred between tracks (there's no
  105. technical reason why they can't, but allowing this would be bad design).
  106. ::: Cross-fades
  107. Where regions overlap, a cross-fade exists. This means that the transition
  108. from region A to region B will be gradual rather than abrupt. The shape of
  109. the gain curve may be selected separately for region A and B of the
  110. cross-fade. Available curves include: Linear, Sigmoid, Logarithmic, and
  111. Parabolic.
  112. ::: Automation
  113. Each track can have associated with it any number of /control sequences/, a
  114. subset of which may be visible at any one time. Each control sequence
  115. comprises a series of /control points/, which collectively represent a graph
  116. of changes to a single controllable value over time. Anything may be
  117. controlled by a control track, including external software supporting OSC or
  118. MIDI control, although the most common application is mixer gain automation,
  119. where the value controlled is the fader level in the mixer.
  120. ::: Time/tempo mapping
  121. The time and tempo maps (rulers) affect where and how many bar\/beat lines
  122. are drawn. During playback they affect the time\/tempo of the JACK transport
  123. so that other programs, like the Non-Sequencer, can follow along in sync.
  124. #::: External control
  125. #
  126. # MIDI and OSC control allows mixer and automation to be controlled by eg. a
  127. # BCF2000.
  128. :: Components
  129. The Mixer and the Timeline are separate programs, connected through JACK.
  130. ::: Timeline
  131. All operations on the timeline are journaled, and therefore reversible.
  132. The following data belong to the timeline:
  133. = Tracks and Takes
  134. = Each Track has a number of input and output ports, a name, and
  135. = any number of attached sequences. All sequences but the current
  136. = (topmost) are inactive and do not generate sound or accept
  137. = captures. These sequences are referred to as /Takes/. Previous
  138. = takes may be swapped with the current sequence and all takes
  139. = may be shown on screen at once for easy splicing. Each track
  140. = can also have any number of Control Seqeunces attached to it,
  141. = in which case all control seqeunces generate control output
  142. = unless disconnected. The height of a track may be adjusted
  143. = and a track can be muted, soloed, or record-enabled.
  144. = Regions
  145. = Regions are the most common object on the timeline. Each region
  146. = represents a segment of some particular audio file. Waveforms
  147. = of all regions belonging to the same source are displayed in
  148. = the same hue. Each region has a normalization value and regions
  149. = can be selected individually or operated on in groups. Each
  150. = region has a fade-in and fade-out curve, and when two regions
  151. = overlap, this constitutes a cross-fade.
  152. = Control Points
  153. = Control points are arbitrarily placed points on a curve (or
  154. = line) from which continuous control values are interpolated
  155. = and sent out a JACK port (like a control voltage).
  156. = Time and Tempo Points
  157. = Time and Tempo points control the tempo and meter throughout
  158. = time. This information is used for drawing the measure lines
  159. = and snapping to the grid, as well as informing other JACK
  160. = clients of tempo changes throughout a song.
  161. = Annotation Points
  162. = Cue points are textual markers on the timeline. Common names
  163. = for cue points include "Verse 1", "Bridge", etc.
  164. = Annotation Regions
  165. = Annotation Regions are annotations with a definite duration.
  166. = These are useful for representing lyrics or other notes of a
  167. = timely nature. Each track may have any number of annotation
  168. = sequences associated with it, and these sequences can contain
  169. = a free mix of annotation points and annotation regions.
  170. #::: Mixer
  171. #
  172. # Mix data is stored separately from timeline data and is not journaled. This
  173. # makes it possible to do multiple mixes of a single project and switch
  174. # between them at will.
  175. #
  176. # Since the Mixer is an entirely separate unit, you may use any JACK capable
  177. # mixer client you want instead of, or in myriad combination with, the Non-DAW
  178. # Mixer. The one called LiveMix works well, but lacks many features of Non's
  179. # mixer. All operations on the mixer affect the current mix set state only
  180. # and are not journaled.
  181. #
  182. # The following data belong to the mixer:
  183. #
  184. #* track configuration (number of input channels, number of mix channels)
  185. #* track gain\/panning (controllable via automation)
  186. #* plugins (controllable via automation)
  187. #
  188. #:::: Panning
  189. #
  190. # The panning system in Non is different from other DAWs. In other DAWs, like
  191. # Ardour, each track has a number of inputs and a (larger) number of outputs
  192. # and (stereo only) panning is performed by the traditional, but inferior,
  193. # intensity method.
  194. #
  195. # In Non, each track has a panner, yes, but this does not actually affect the
  196. # track's output. The actual 'panning' (more properly, spatialization) is
  197. # performed for all tracks at the master output stage. Outputs from all tracks
  198. # are encoded into something similar to Ambisonic B-Format, using the spacial
  199. # locations from each track panner. This signal is then (optionally) decoded
  200. # to a specific speaker layout form the master output signals. Rendering can
  201. # be done either to the universal .amb format or any fixed configuration of
  202. # speakers (Quad, 5.1, 7.1, 10.1). A .amb file contains a complete soundfield
  203. # and can later be reduced to any fixed layout format, or even other types of
  204. # Ambisonic encodings.
  205. #
  206. # What this means is that, even for stereo mixes, the soundfield produced by
  207. # the output will be more stable, wider, and more realistic than anything
  208. # intensity panning can produce. It also means that moving a stereo mix to
  209. # surround is quite straight forward, and that surround mixes produced with
  210. # Non will be future-proof and far superior to anything achievable with 2D
  211. # intensity panning. This single feature clearly sets Non-DAW apart from
  212. # other (even proprietary) offerings.
  213. #
  214. #::: Router
  215. #
  216. # The router is simply an interface to the JACK port routing. It's a slightly
  217. # more practical than what you get from QJackCtl or Patchage.
  218. #
  219. #* jack port routing.
  220. #
  221. #::: Plugin Host
  222. #
  223. # Plugins are handled differently in Non-DAW versus other DAWs. The author has
  224. # enough first hand experience with LADSPA to know that plugins cannot be
  225. # trusted in a sensitive process. They fail, they crash, they stop responding.
  226. # For a DAW like Ardour, which uses plugins as, well, plugins, this means that
  227. # a single malfunctioning plugin can bring your entire project to its
  228. # knees--this is clearly an unacceptable interruption of the creative process.
  229. #
  230. # Aside from these stability issues, plugins present a conceptual problem.
  231. # They require each 'host' to implement a routing and control system similar,
  232. # but inferior to, what JACK already provides to fully fledged clients.
  233. # Likewise, fully fledged clients may display any GUI they like--a long
  234. # standing gripe in the LAD community being the lack of any provision for
  235. # wood-grain pixmaps, fan-sliders, and antialiased knobs in the LADSPA
  236. # standard.
  237. #
  238. # Until such time as LAD sees the light on this and other issues requiring the
  239. # application of thought and reason (don't hold your breath), Non will
  240. # continue to employ the following compromise:
  241. #
  242. # Plugins are hosted externally, in a dedicated host process, and routing
  243. # between them is accomplished via the JACK connection graph. In this
  244. # dedicated plugin host, we enforce some saner forms of interoperability than
  245. # the hoards of LAD could ever conceive. We give each plugin the appropriate
  246. # input and output ports, and define OSC control points for each plugin
  247. # parameter. We save and restore settings (without resorting to the patron
  248. # saint of idiots; XML).
  249. #
  250. # Using plugins in this way has the following advantage/disadvantage:
  251. #
  252. # Non-DAW may create more JACK ports than something like Ardour. *But*, Non
  253. # eliminates the need for stupid, buggy, irrational in-host routing such as
  254. # the rats-nest of connections one gets with sends/inserts in something like
  255. # Ardour.
  256. #
  257. # Truthfully, it is absurd for a JACK based DAW to re-implement nearly all of
  258. # JACK routing in-process simply for the sake of LADSPA.
  259. #-----
  260. #
  261. #: Notes
  262. #
  263. #* Why not use SpiralSynthModular (SSM) as our plugin host?
  264. # . In order for this to work SSM would need to be modified to
  265. # . support the following: LASH, OSC control of plugins, and just
  266. # . generally work with Jack. The OSS driver could be removed
  267. # . entirely. And the GUI optimized in order to make running
  268. # . multiple instances less taxing. Alternatively, the GUI could
  269. # . be restructured to allow a single SSM to host the plugins for
  270. # . all tracks.
  271. ; What does freedom have to do with this software?
  272. Non is /free software/. This means, briefly, that you are free use it as
  273. *you* wish, free to examine and adapt the source code, free to share it with
  274. your friends, and free to publish your changes to the source code.
  275. Furthermore, Non is /copyleft/, which means that you are free from the
  276. threat of some other entity taking over and denying you the above freedoms.
  277. The /free/ part of /free software/ doesn't refer to price any more than the
  278. /free/ in /free speech/ does.
  279. To learn why free software is so important to us (and why it should be
  280. important to you), please see the Free Software Foundation's website:
  281. #(url,http:\/\/www.fsf.org\/licensing\/essays\/free-sw.html,What is Free Software?)
  282. #(url,http:\/\/www.fsf.org\/licensing\/essays\/copyleft.html,What is Copyleft?)
  283. ; Donations
  284. Donations can take many forms. You can donate your time in code, either by
  285. sending it to me for review or cloning the git repository and publishing one
  286. containing your changes. You can donate your time in testing, documentation,
  287. artwork, indexing, etc. Or, if you don't feel that you possess the time or
  288. skills required for the above forms of donation, you can donate money
  289. instead. Money donated will help to ensure that I have the free time, good
  290. nutrition and enthusiasm required to implement new features. It can also be
  291. a more palpable way of saying "Thanks for caring." or "Job well done!"
  292. If you don't love this software, don't feel guilty about not contributing.
  293. If you do love it, then please help me improve it--in whatever manner you
  294. think is appropriate.
  295. #(url,http:\/\/non.tuxfamily.org\/donation.html,Make a donation)
  296. ; Distribution
  297. Development of the Non-DAW can be followed with Git:
  298. > git clone git://git.tuxfamily.org/gitroot/non/daw.git
  299. There are no pre-compiled binaries available.
  300. ; Requirements
  301. The following libraries are required to build Non-DAW
  302. * FLTK >= 1.1.7 (with `fluid`)
  303. * JACK >= 0.103.0
  304. * libsndfile >= 0.18.0
  305. The following are optional:
  306. * LASH >= 0.5.4
  307. ; Community
  308. Feel free to drop by the `#non` channel on irc.freenode.net.
  309. There is a mailing list `non-daw@lists.tuxfamily.org`.
  310. To subscribe, send a message with the subject 'subscribe' to
  311. #(email,non-daw-request@lists.tuxfamily.org).
  312. You can also browse the #(url,http:\/\/listengine.tuxfamily.org\/lists.tuxfamily.org\/non-daw\/,archive).