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.

293 lines
11KB

  1. ! title Non Mixer User Manual
  2. ! author Jonathan Moore Liles #(email,male@tuxfamily.org)
  3. -- Table Of Contents
  4. : User Manual
  5. :: The Mixer
  6. / Mixer
  7. < non-mixer-complex.png
  8. The Non-Mixer is a stand-alone audio mixer, utilizing JACK as an
  9. audio subsystem. At the time of writing, the architecture of
  10. Non-Mixer is unique. By making the mixer stand-alone, concepts such
  11. as busses, sends, and inserts are eliminated, as the same goals can
  12. be achieved by simply adding more strips to the mixer.
  13. Start by creating a new project (menu item `Project\/New`).
  14. / New Project
  15. < new-project.png
  16. After the project has been created. Hit `a` or choose `Mixer\/Add
  17. Strip` from the menu to add a new strip to the mixer.
  18. ::: Display Options
  19. The display options, found in the `Options\/Display` submenu may be adjusted
  20. to suit your needs. Set the color scheme, widget style, and other graphic
  21. options to your liking. These options are global and affect all projects.
  22. ::: Mixer Strips
  23. / Mixer Strip
  24. < single-strip.png
  25. Each mixer strip has a name and color, each of which may be defined
  26. by the user. Names, but not colors, must be unique. In addition,
  27. each strip has controls to move it left or right (the arrows) in the
  28. display and to remove it entirely (the 'X').
  29. Strips start out in /narrow/ mode, with the /fader/ view
  30. enabled. Click the desired button to toggle the mode or view.
  31. Each strip has a context menu which lists the available options
  32. and their associated key-bindings. To bring up the context menu, `Right
  33. The fader view comprises a large gain control and digital peak meter
  34. indicator. These are automatically connected to the default gain and
  35. meter modules of the strip's signal chain.
  36. To see how an audio signal traveling through this strip will be
  37. processed, switch to its /signal/ view.
  38. :::: Navigation
  39. A strip is focused when you click on it. Focus can be moved among
  40. strips with the `Tab` and `Shift-Tab` keys.
  41. :::: Control
  42. The focused strip can be moved in the display order via the `[` and
  43. `]` keys. `Delete` removes a strip (with confirmation dialog). `n`
  44. and `w` set the focused strip's width to /narrow/ or /wide/,
  45. respectively, and `f` and `s` switch between /fader/ and /signal/
  46. views. The strip's context menu can be invoked without the mouse by
  47. hitting the `Menu` key (assuming your keyboard has one).
  48. :::: Signal Chain
  49. The signal chain view of a mixer strip provides a way to view and
  50. manipulate the signal processing of a mixer strip.
  51. ::::: Modules
  52. / Modules
  53. < modules.png
  54. All signal processing in Non Mixer occurs in /Modules/. Modules are
  55. signal processing abstractions providing ports for audio and control
  56. I\/O and, in addition, some simple user interface. Sink and source
  57. modules carry audio out of and into JACK.
  58. Modules are displayed as named blocks. Some modules (e.g. the Meter
  59. module) may have additional GUI components.
  60. Each module has zero or more audio I\/O ports and zero or more
  61. control ports. Audio routing between modules is handled
  62. automatically. Modules with mono audio configurations (one channel
  63. in, one channel out) can be automatically adjusted to support any
  64. number of discrete channels. Modules with more (related) channels,
  65. however, introduce restrictions on the order in which modules can be
  66. chained.
  67. An indicator in the upper left-hand corner of each module block
  68. indicates whether the module has any parameters bound to controls.
  69. Non Mixer has several built-in modules. They are:
  70. = JACK
  71. = Performs JACK I\/O
  72. = Gain
  73. = Applies gain in dB
  74. = Meter
  75. = Digital Peak Meter
  76. = Mono Pan
  77. = Performs intensity panning of a mono signal into a stereo signal.
  78. = Plugin
  79. = Hosts a LADSPA plugin
  80. :::::: OSC Control
  81. The input parameters of all modules are controllable via OSC,
  82. regardless of whether the parameter is set as controllable.
  83. The format of the automatically generated OSC path names is as follows:
  84. > /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]
  85. The UDP port that the OSC server binds to can be set by providing
  86. the `--osc-port` command-line option. Without this option, a random
  87. port will be bound automatically (the exact OSC URL will always be
  88. printed to the console as a line beginning with "OSC: ").
  89. The default path accepts a float value between 0.0 and 1.0 (a
  90. Control Voltage like signal) which will be automatically scaled to
  91. the allowable range of the control.
  92. A path ending in \/unscaled is also available, which accepts exact values,
  93. which will be clamped to the allowable range. For example:
  94. > /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]/unscaled
  95. If same module\/plugin is used twice in a signal chain
  96. (e.g. multiple Gain stages), then a position dependent sequence
  97. number will be appended to the module name. For example, a path
  98. might look like the following:
  99. > /strip/Foo/Gain.1/Gain_(dB)
  100. For the second instance of the Gain module on the strip named 'Foo'.
  101. Non-DAW accesses these same signals via a more advanced signal
  102. routing layer on top of OSC. Any module parameter is easily
  103. controlled via Control Sequences in Non-DAW without the need to
  104. specify an OSC URL.
  105. :::::: Manipulation
  106. Left-clicking on a module brings up a Module Parameter Editor window
  107. for the selected module.
  108. Right-clicking on a module brings up a context menu allowing you
  109. manipulate the module, as well as to pick a new module to insert
  110. before the selected one in the chain.
  111. Middle-clicking on a module toggles its activation state (the audio
  112. signal will bypass inactive modules).
  113. Control+Right-clicking on a module causes it to be removed from the
  114. chain (modules added by default cannot be removed).
  115. The focused module may also be controlled via the keyboard. `Menu`
  116. brings up the context menu for the focused module. `Space` opens the
  117. module parameter editor, `b` toggles the bypassed state, and
  118. `Delete` removes the module from the chain (without confirmation!).
  119. `Control-X`, `Control-C` and `Control-V`, cut, copy, and paste
  120. modules, respectively. Modules may be copied within or across chain
  121. boundaries. The normal module I\/O constraints also apply to pasted
  122. modules.
  123. :::::: Module Parameter Editor
  124. / Module Parameter Editor
  125. < gverb-parameters-knobs.png
  126. The Module Parameter Editor is used to alter the values of a
  127. module's parameters, and in addition, to bind its parameters to
  128. controls. A menu button in the upper left-hand corner allows you to
  129. select between knob, vertical slider and horizontal slider controls.
  130. / Horizontal Sliders
  131. < gverb-parameters-hsliders.png
  132. / Vertical Sliders
  133. < gverb-parameters-vsliders.png
  134. Underneath each control is a bind button. Clicking adds a new
  135. control to the chain's /Controls/ view and binds it to the parameter
  136. in question. For simplicity, only one control at a time may be bound
  137. to a given parameter.
  138. :::::: Controls
  139. / Control View
  140. < controls.png
  141. The control view of a chain groups together all of the controls
  142. bound to parameters of modules in that chain. The default mode of
  143. controls is /Manual/. Right click on a control to bring up a menu
  144. which will allow you to select one of the available control I\/O
  145. methods to use. When /Control Voltage/ (CV) is selected, a CV input
  146. port will be created on the containing mixer strip's JACK
  147. client. The control will now accept values from that input. A
  148. control bound and configured in this way can then be connected to
  149. the output of a Non-DAW control sequence using your favorite
  150. connection manager.
  151. { NOTE:
  152. { All knob and slider controls respond to mousewheel
  153. { events. Hold down the `Ctrl` key while scrolling the mousewheel to
  154. { achieve finer resolution.
  155. ::::::: Control Voltages
  156. The control voltage concept should be familiar to anyone who has
  157. experience with analog modular synthesizers. MIDI, while having
  158. definite advantages in many respects, multiplexes control data in
  159. such a way as to make connecting one MIDI control to a parameter
  160. involve a significant inconvenience, usually requiring the
  161. adjustment of settings on both ends of the connection in order to
  162. separate the control data streams.
  163. Control Voltages, on the other hand, provide a simple 1:1 source to
  164. sink relationship and offer much higher resolution, both in time and
  165. value, than can be natively expressed through MIDI. The chief
  166. advantage of CV in the context of Non-DAW is the ease with which an
  167. control sequence can be connected to a mixer module parameter. If
  168. you have a MIDI controller that you'd like to use to control
  169. parameters of Non-Mixer, consider /jm2cv/, a JACK MIDI to Control
  170. Voltage daemon which was written by Peter Nelson specifically for
  171. use with Non-Mixer. jm2cv can be acquired by:
  172. > git clone git://fuzzle.org/jm2cv.git
  173. { NOTE:
  174. { The use of Control Signals (OSC) should be preferred for most types
  175. { of parameter automation, as LADSPA plugins are incapable of
  176. { processing Control Voltage signals at full audio resolution anyway.
  177. :::::: Spatialization
  178. / Spatialization Control on a Strip
  179. < spatialization-on-strip.png
  180. Non-Mixer supports Ambisonic spatialization via the excellent amb-\*
  181. LADSPA plugin set and others. Whenever a LADSPA plugin is added to a
  182. strip whose set of parameters include parameters named Azimuth and
  183. Elevation, Non-Mixer will detect this and automatically attach a
  184. Spatializer control to these parameters. The Spatializer will be
  185. displayed at the bottom of the mixer strip. A larger version of the
  186. control may also be found in the Module Parameter Editor.
  187. / Larger Spatialization Control
  188. < spatialization-in-mpe.png
  189. The spatialization control may be visualized as moving the sound
  190. source across the surface of a hemispherical dome enclosing the
  191. listener.
  192. The output of the spatializing plugin may be routed into a decoding
  193. plugin following it the same strip or, more usefully, the output of
  194. a number of Ambisonic panning plugins on different strips may be
  195. routed (through JACK) into a single master decoder instance on a
  196. final strip.
  197. ::: Projects
  198. A Non-Mixer project is a directory where Non-Mixer keeps the strip
  199. settings, project specific settings, and some meta-data. A project
  200. is completely self-contained. You can rename a project as simply as:
  201. > $ mv Project-A Project-B
  202. :::: JACK I/O
  203. Each mixer strip is presented as a separate JACK "client". This
  204. helps to avoid the necessity of internally duplicating JACK's
  205. routing logic and, with JACK2, permits the possibility of parallel
  206. execution of mixer strip signal chains.
  207. The JACK client name of each strip will correspond to the name of the strip.
  208. { NOTE:
  209. { The JACK API makes implementing this far more difficult and kludgey than it should have to be.
  210. { Please petition your local JACK developer to accept jack_client_set_name() into the API.
  211. / Patchage
  212. < non-mixer-and-non-daw-in-patchage.png