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.

334 lines
14KB

  1. ! title The Non Sequencer
  2. ! author Jonathan Moore Liles #(email,wantingwaiting@users.sf.net)
  3. ! date Oct 13 2007
  4. ! keywords Non Jack ALSA FLTK
  5. ! extra #(url,http://non.tuxfamily.org,Home)
  6. --
  7. : Description
  8. < non-new-about.png
  9. :: Guiding Principles
  10. + Flexibility
  11. + Efficiency
  12. + Purpose
  13. + Grace
  14. Non has many modes and functions. Where flexibility comes at a small
  15. cost, we prefer to be flexible and make up the difference
  16. elsewhere. Where arbitrary limitations are reasonable and necessary,
  17. Non enforces them, but not without being forced into it. Where it is
  18. easier to be inefficient than efficient, but the efficiency matters,
  19. we prefer to put in the (small amount of) work required to be
  20. efficient, often resulting in thousand-fold performance gains; this
  21. may sound like an obvious statement, but, in fact, design for
  22. efficiency is a rare practice in this (Linux Audio/'Modern'
  23. software) arena. Although it is tempting to implement a kitchen sink
  24. in every program, we resist the urge. Non has the purpose of being a
  25. real-time sequencer and anything outside of that scope is a job for
  26. another day. If there is something related to the task at hand that
  27. a computer can do instantly and easily, but which requires labor for
  28. you, Non tries to do it for you so that you can continue making
  29. music without being bothered. Non's user interface is designed to
  30. combine the stark functionality and speed of hardware with the
  31. degrees of freedom of software.
  32. : The Interface
  33. The interface is quite simple and is based on the excellent FLTK
  34. (1.1.x) toolkit. (Versions \< 1 of Non were based on raw Xlib and a
  35. few Motif widgets.) The author examined many toolkits before
  36. beginning, and has absolutely no interest in pursuing GTK or Qt--Non
  37. simply doesn't require much of a toolkit, and these are incapable of
  38. providing less than total excess.
  39. Non's GUI is highly optimized. Common operations are designed to be
  40. as fast as possible. Where other sequencers completely monopolize
  41. the CPU when scrolling, etc., Non performs smoothly--even on
  42. antiquated hardware. It is not technically difficult to achieve
  43. such speed. And, in fact, it is a shame that more developers don't
  44. consider good (or even just reasonable) performance a priority.
  45. :: The Pattern Editor
  46. < non-pattern-editor.png
  47. Upon invocation, Non enters the pattern editor and loads Pattern
  48. 1. The pattern editor presents a grid interface--the heart a step
  49. sequencer. You can toggle a note on the grid by entering its
  50. coordinates with the keyboard or clicking an intersection with the
  51. mouse. The length of patterns is unlimited and no special action is
  52. required lengthen them (simply adding notes beyond the "end" is
  53. enough.) Non can present grids in one of two modes, expanded and
  54. compacted. In the compacted view, only named rows are displayed;
  55. this means that only the notes the current instrument or scale will
  56. consume vertical space--resulting in far more efficient use of
  57. screen real-estate. Any notes are made invisible by the compacted
  58. view will be silenced.
  59. You may add, remove, transpose, move, and edit notes, as well as
  60. trigger/mute patterns, while the transport is running.
  61. The resolution of the pattern display can be adjusted (the default
  62. is one point per 1\/16th note), and, additionally, the canvas can be
  63. zoomed horizontally and vertically as necessary. However, it is
  64. highly recommended that you avoid creating 'vertical' compositions,
  65. that is, one should place each part in a separate pattern and avoid
  66. the need to scroll about looking for notes.
  67. Tonic patterns have a choice of scale and key, which limits the
  68. display to only valid notes. This /row-compaction/ can be turned
  69. off, if desired, so that all 128 notes are visible. Or simply choose
  70. the /chromatic/ mapping if you are not creating scale based music.
  71. Percussion, or other sample-based patterns can be assigned an
  72. /instrument/ mapping, which again limits the display to only those
  73. notes for which names and volumes have been provided. The instrument
  74. definition format is simple ASCII file containing one name, note and
  75. volume percentage per line.
  76. Individual patterns may be soloed or muted right from the pattern
  77. editor.
  78. Each pattern has a setting for output MIDI channel and sequencer
  79. port--and these may also be changed while the transport is running.
  80. ::: The Notes
  81. The type (duration) of note to be inserted can be adjusted in the
  82. pattern editor (control+mouse-wheel). The velocity of individual
  83. notes may be adjusted (mouse-wheel), and is the current value is
  84. reflected in the color of the note. Ranages may also be /inserted/
  85. and /deleted/, a commonly required operation during composition, but
  86. one that is, sadly, missing from many sequencers.
  87. < non-cursors.png
  88. ::: Recording
  89. A pattern can be recorded via MIDI in one of four modes:
  90. = Merge (the most familiar/least useful)
  91. = In this mode recorded events are merged into the pattern on each pass
  92. = through the loop. This is how most sequencers work, but it usually just
  93. = results in a jumble of notes that require much manual cleaning up.
  94. = Overwrite (each pass [with input] replaces the previous contents of the pattern)
  95. = This is like merge mode, except that the pattern is cleared before
  96. = the recorded events are input. If note notes have been played during
  97. = a loop, the pattern remains unchanged. This is a great way to just get
  98. = a part down without having to remove your hands from the instrument.
  99. = Layer (each pass [with input] goes into a new pattern)
  100. = This is just like overwrite mode, except that the pattern actually
  101. = overwritten is a duplicate. Use this mode to record several loops of
  102. = the same length without removing your hands from the instrument.
  103. = New
  104. = In this mode, all recorded events are placed into a new pattern (of
  105. = whatever length) when recording is stopped.
  106. # It is especially useful if you bind Record to a MIDI footswitch.
  107. ::: The Event Editor
  108. < non-event-editor-notes.png
  109. For situations requiring close inspection, fine-adjustments or
  110. entering of non-note data, the Event Editor allows one to edit the
  111. raw MIDI event list of a pattern. A common use is to insert program
  112. or control change events.
  113. Like everything else in Non, the Event Editor is real-time--change a
  114. note and you'll see and hear the result as the pattern plays.
  115. :: The Phrase Editor
  116. Phrases are to patterns as patterns are to notes. Switching to the
  117. Phrase Editor brings up Phrase 1, where each row corresponds to an
  118. existing /pattern/. The grid of the Phrase Editor is fixed at one
  119. column-per-beat. This view is somewhat similar to a timeline view in
  120. other sequencers, but do not be deceived--Phrases may be many in
  121. number and are triggered just like patterns.
  122. When a node on the Phrase Editor grid is activated, the length of
  123. the cue event inserted will be the same as that of the pattern being
  124. triggered. Adjusting the duration of this event will cause the
  125. pattern be cut short or looped. If the length of a referenced
  126. pattern is changed, this will *not* be reflected in the Phrase
  127. display. You must either re-insert or adjust the length of the
  128. reference.
  129. It is recommended that, to avoid confusion, you first compose all of
  130. the patterns you need for a phrase, and only then bring up the
  131. phrase editor.
  132. Editing operations are the same as those for the Pattern Editor.
  133. :: The Sequence Editor
  134. The Sequence Editor defines the sequence of playback. The interface
  135. is a list of phrases, to be played sequentially, beginning from bar
  136. 1. It is not necessary to include all existing phrases in the
  137. playlist. Phrases can be moved up and down the playlist, inserted
  138. and deleted. The editor displays the start bar of each phrase in
  139. addition to its number and name.
  140. This sequence->phrase->pattern hierarchy allows for logical,
  141. expressive compositions--without the labor intensive
  142. copy/paste/duplicate work-flow imposed by other sequencers.
  143. For example, suppose you have a song with a 12 bar progression that
  144. repeats 4 times. This 12 bar sequence is composed of many patterns,
  145. each a few measures in length and roughly corresponding to the
  146. chords in the progression.
  147. In another sequencer you would be required to use clumsy copy\/paste
  148. operations to destructively extend the 12 bar sequence. Then if you
  149. wanted to change a part of that subsequence later, you would have to
  150. go edit each instance of it on the 'timeline' view. This is absurdly
  151. inefficient for the operator.
  152. In Non you simply create your patterns, assemble them into logical
  153. phrases, and then assemble these phrases into a sequence that
  154. determines the entire song. This approach is similar to the
  155. bottom-up approach of factored languages such as Forth.
  156. :: Pattern Triggers
  157. < non-pattern-triggers.png
  158. Next to the sequence playlist is an array of pattern triggers. Here
  159. one can monitor the progress of multiple patterns during playback
  160. and cause them to be muted etc.
  161. The left mouse button toggles muting, the middle button toggles
  162. soloing, and the right button brings up the given pattern in the
  163. pattern editor.
  164. Playing patterns appear green, the solo pattern appears red, and
  165. muted patterns appear gray,
  166. : MIDI
  167. :: IO
  168. Non utilizes the Jack MIDI transport. Jack MIDI is an emerging MIDI
  169. transport for Linux. Since Jack already provides similar routing as
  170. the ALSA Sequencer interface, little is lost--besides compatibility
  171. with existing programs. (Jack has an aseq bridge capability, but in
  172. order to benefit from Jack MIDI, both sequencer and synth must use
  173. Jack). The Jack MIDI API is extremely limited in comparison to the
  174. very capable ALSA API, but this is a problem for the programmer, not
  175. the user.
  176. At the time of writing, Non is one of only two sequencers to use
  177. Jack MIDI natively.
  178. :: Non Files
  179. The format of `.non` files is a variation of SMF-2. In an SMF-2
  180. file, each track chunk represents a pattern. Because Non groups
  181. patterns into /phrases/, this usage of SMF-2 is probably not
  182. compatible with other implementations (although, the author has
  183. never actually seen another program that could play back SMF-2
  184. anyway.)
  185. Each phrase is stored as a track of MIDI Cue messages, each
  186. referring to a pattern to be triggered. The sequence\/playlist is
  187. stored as the first track, and consists of a list of Cue Point
  188. meta-events referring to phrases.
  189. Also in the first track is a sequencer specific meta-event (ID
  190. "Non!") containing song data that cannot be readily expressed with
  191. existing meta events, and some versioning info to aid future
  192. compatibility.
  193. In short, the author has done the utmost to save sequences in a
  194. standard format--within reason; SMF was hardly designed with a
  195. program like Non in mind--instead of some ad-hoc ASCII format (which
  196. would have been *far* easier to implement), or worse, buggy, bulky,
  197. and unmaintainable XML.
  198. :: Exports
  199. In addition to saving and loading `.non` files, Non can export
  200. individual patterns as flat, SMF-0 MIDI files.
  201. :: Imports
  202. SMF-0 files can be imported as a new pattern (all channels merged),
  203. or SMF-1 (such as those written by Seq24) and SMF-2 (ever seen one
  204. of these?) can be imported as N new patterns (selected from a track
  205. list.) All imported patterns are set to display the Chromatic scale,
  206. in order that no notes be hidden from view.
  207. This should make it easy to migrate any existing patterns that you
  208. may have over to Non, or to permit editing of Non patterns in
  209. external programs (for graphic controller tweaking perhaps?)
  210. : Synchronization
  211. Non's transport is driven by the Jack Transport, so in order to sync
  212. Non with a DAW like Ardour, you must set Ardour to be the Jack
  213. Timebase Master. Therefore, all tempo mapping and time signature
  214. information should be manipulated in the Timebase Master--Non will
  215. respond to these changes automatically. If there is no Timebase
  216. Master registered when Non starts, it will take over that role
  217. instead. This is useful if you simply plan to use Non as a musical
  218. instrument.
  219. : Control
  220. Non creates two MIDI input ports, one for /performance/ data and one
  221. for /control/ data. The control port is used to control Non with
  222. hardware MIDI controllers, such as the BCF2000, or other software.
  223. The performance port is used to record musical data into patterns.
  224. : Playback
  225. The playback mode can be toggled between Pattern, Sequence and
  226. Trigger. In Pattern mode (the default), all patterns are played
  227. simultaneously, from the beginning, and looped forever. Since
  228. patterns may differ widely in length, interesting compositions are
  229. possible. In this mode, Non makes for a very intuitive software
  230. instrument--rivaled only by the excellent program FreeWheeling (a
  231. live audio looper.)
  232. In Sequence mode, playback strictly follows the sequence list and
  233. the Jack transport, and does not loop. This mode is suitable for
  234. parallel compositions between Non and a Jack Timebase Master capable
  235. DAW.
  236. Trigger mode is very much like Pattern mode, except that all
  237. patterns begin muted and must be enabled via the trigger view.
  238. : Sister Projects
  239. Much of the inspiration to move forward with Non was derived from JP
  240. Mercury's highly useful and successful FreeWheeling
  241. looper. Mr. Mercury is a visionary.
  242. But the closest sister of Non has to be the amazingly capable
  243. ZynAddSubFX soft-synth by Nasca Octavian Paul. ZynAddSubFX, like
  244. Non, utilizes the FLTK GUI toolkit, and has recently begun to
  245. support Jack MIDI (albeit in a limited fashion.) This is, hands
  246. down, the best synth available for Linux, and probably one of the
  247. best period. If all you have is Non and Zyn, you have all that you
  248. require to make great music.
  249. Of course, this section can hardly go without mention of Rob Buse's
  250. Seq24. It was the author's unending frustration with the abysmal
  251. performance and absurd limitations of Seq24 that, more than any
  252. other single factor, inspired him to write Non. The most
  253. frustrating aspect was that, prior to Non, Seq24 was, in the
  254. author's opinion, the best sequencer available on Linux. Seq24,
  255. which claims to be light and free of bloat is, without comparison,
  256. the slowest, most poorly optimized sequencer the author has
  257. tried. Even the huge, snarling beast that is RoseGarden out performs
  258. Seq24 in every way but start time.
  259. Those days are over.