2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
! title Non Mixer User Manual
|
|
|
|
! author Jonathan Moore Liles #(email,male@tuxfamily.org)
|
|
|
|
|
|
|
|
-- Table Of Contents
|
|
|
|
|
|
|
|
: User Manual
|
|
|
|
|
|
|
|
:: The Mixer
|
|
|
|
|
|
|
|
/ Mixer
|
|
|
|
< non-mixer-complex.png
|
|
|
|
|
|
|
|
The Non-Mixer is a stand-alone audio mixer, utilizing JACK as an
|
|
|
|
audio subsystem. At the time of writing, the architecture of
|
|
|
|
Non-Mixer is unique. By making the mixer stand-alone, concepts such
|
|
|
|
as busses, sends, and inserts are eliminated, as the same goals can
|
|
|
|
be achieved by simply adding more strips to the mixer.
|
|
|
|
|
2010-02-01 02:04:47 +01:00
|
|
|
Start by creating a new project (menu item `Project\/New`).
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
/ New Project
|
|
|
|
< new-project.png
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
After the project has been created. Hit `a` or choose `Mixer\/Add
|
2010-01-27 10:00:29 +01:00
|
|
|
Strip` from the menu to add a new strip to the mixer.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
::: Display Options
|
|
|
|
|
|
|
|
The display options, found in the `Options\/Display` submenu may be adjusted
|
|
|
|
to suit your needs. Set the color scheme, widget style, and other graphic
|
|
|
|
options to your liking. These options are global and affect all projects.
|
|
|
|
|
|
|
|
::: Mixer Strips
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
/ Mixer Strip
|
|
|
|
< single-strip.png
|
|
|
|
|
|
|
|
Each mixer strip has a name and color, each of which may be defined
|
|
|
|
by the user. Names, but not colors, must be unique. In addition,
|
|
|
|
each strip has controls to move it left or right (the arrows) in the
|
|
|
|
display and to remove it entirely (the 'X').
|
|
|
|
|
|
|
|
Strips start out in /narrow/ mode, with the /fader/ view
|
|
|
|
enabled. Click the desired button to toggle the mode or view.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
Each strip has a context menu which lists the available options
|
|
|
|
and their associated key-bindings. To bring up the context menu, `Right
|
|
|
|
|
2010-01-27 10:00:29 +01:00
|
|
|
The fader view comprises a large gain control and digital peak meter
|
|
|
|
indicator. These are automatically connected to the default gain and
|
2010-01-31 08:41:33 +01:00
|
|
|
meter modules of the strip's signal chain.
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
To see how an audio signal traveling through this strip will be
|
|
|
|
processed, switch to its /signal/ view.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
:::: Navigation
|
2010-01-27 10:00:29 +01:00
|
|
|
|
2010-02-01 02:04:47 +01:00
|
|
|
A strip is focused when you click on it. Focus can be moved among
|
|
|
|
strips with the `Tab` and `Shift-Tab` keys.
|
2010-01-27 10:00:29 +01:00
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
:::: Control
|
|
|
|
|
|
|
|
The focused strip can be moved in the display order via the `[` and
|
|
|
|
`]` keys. `Delete` removes a strip (with confirmation dialog). `n`
|
|
|
|
and `w` set the focused strip's width to /narrow/ or /wide/,
|
|
|
|
respectively, and `f` and `s` switch between /fader/ and /signal/
|
|
|
|
views. The strip's context menu can be invoked without the mouse by
|
|
|
|
hitting the `Menu` key (assuming your keyboard has one).
|
|
|
|
|
|
|
|
:::: Signal Chain
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
The signal chain view of a mixer strip provides a way to view and
|
|
|
|
manipulate the signal processing of a mixer strip.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
::::: Modules
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
/ Modules
|
|
|
|
< modules.png
|
|
|
|
|
|
|
|
All signal processing in Non Mixer occurs in /Modules/. Modules are
|
|
|
|
signal processing abstractions providing ports for audio and control
|
2010-01-31 08:41:33 +01:00
|
|
|
I\/O and, in addition, some simple user interface. Sink and source
|
2010-01-27 10:00:29 +01:00
|
|
|
modules carry audio out of and into JACK.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
Modules are displayed as named blocks. Some modules (e.g. the Meter
|
|
|
|
module) may have additional GUI components.
|
2010-01-27 10:00:29 +01:00
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
Each module has zero or more audio I\/O ports and zero or more
|
2010-01-27 10:00:29 +01:00
|
|
|
control ports. Audio routing between modules is handled
|
|
|
|
automatically. Modules with mono audio configurations (one channel
|
|
|
|
in, one channel out) can be automatically adjusted to support any
|
|
|
|
number of discrete channels. Modules with more (related) channels,
|
|
|
|
however, introduce restrictions on the order in which modules can be
|
|
|
|
chained.
|
|
|
|
|
|
|
|
An indicator in the upper left-hand corner of each module block
|
|
|
|
indicates whether the module has any parameters bound to controls.
|
|
|
|
|
|
|
|
Non Mixer has several built-in modules. They are:
|
|
|
|
|
|
|
|
= JACK
|
|
|
|
= Performs JACK I\/O
|
|
|
|
= Gain
|
|
|
|
= Applies gain in dB
|
|
|
|
= Meter
|
2010-02-01 02:04:47 +01:00
|
|
|
= Digital Peak Meter
|
2010-01-27 10:00:29 +01:00
|
|
|
= Mono Pan
|
|
|
|
= Performs intensity panning of a mono signal into a stereo signal.
|
|
|
|
= Plugin
|
|
|
|
= Hosts a LADSPA plugin
|
|
|
|
|
2012-02-09 11:01:36 +01:00
|
|
|
:::::: OSC Control
|
|
|
|
|
|
|
|
The input parameters of all modules are controllable via OSC,
|
|
|
|
regardless of whether the parameter is set as controllable.
|
|
|
|
|
|
|
|
The format of the automatically generated OSC path names is as follows:
|
|
|
|
|
2012-02-26 11:51:33 +01:00
|
|
|
> /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]
|
2012-02-09 11:01:36 +01:00
|
|
|
|
|
|
|
The UDP port that the OSC server binds to can be set by providing
|
|
|
|
the `--osc-port` command-line option. Without this option, a random
|
|
|
|
port will be bound automatically (the exact OSC URL will always be
|
|
|
|
printed to the console as a line beginning with "OSC: ").
|
|
|
|
|
|
|
|
The default path accepts a float value between 0.0 and 1.0 (a
|
2012-02-26 11:51:33 +01:00
|
|
|
Control Voltage like signal) which will be automatically scaled to
|
|
|
|
the allowable range of the control.
|
2012-02-09 11:01:36 +01:00
|
|
|
|
|
|
|
A path ending in \/unscaled is also available, which accepts exact values,
|
|
|
|
which will be clamped to the allowable range. For example:
|
|
|
|
|
2012-02-26 11:51:33 +01:00
|
|
|
> /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]/unscaled
|
2012-02-09 11:01:36 +01:00
|
|
|
|
|
|
|
If same module\/plugin is used twice in a signal chain
|
2012-02-28 07:34:25 +01:00
|
|
|
(e.g. multiple Gain stages), then a position dependent sequence
|
|
|
|
number will be appended to the module name. For example, a path
|
|
|
|
might look like the following:
|
2012-02-09 11:01:36 +01:00
|
|
|
|
2012-02-28 07:34:25 +01:00
|
|
|
> /strip/Foo/Gain.1/Gain_(dB)
|
2012-02-09 11:01:36 +01:00
|
|
|
|
|
|
|
For the second instance of the Gain module on the strip named 'Foo'.
|
|
|
|
|
2012-02-26 11:51:33 +01:00
|
|
|
Non-DAW accesses these same signals via a more advanced signal
|
|
|
|
routing layer on top of OSC. Any module parameter is easily
|
|
|
|
controlled via Control Sequences in Non-DAW without the need to
|
|
|
|
specify an OSC URL.
|
2012-02-09 11:01:36 +01:00
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
:::::: Manipulation
|
2010-01-27 10:00:29 +01:00
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
Left-clicking on a module brings up a Module Parameter Editor window
|
|
|
|
for the selected module.
|
|
|
|
|
|
|
|
Right-clicking on a module brings up a context menu allowing you
|
|
|
|
manipulate the module, as well as to pick a new module to insert
|
|
|
|
before the selected one in the chain.
|
|
|
|
|
|
|
|
Middle-clicking on a module toggles its activation state (the audio
|
|
|
|
signal will bypass inactive modules).
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
Control+Right-clicking on a module causes it to be removed from the
|
|
|
|
chain (modules added by default cannot be removed).
|
|
|
|
|
2010-02-01 02:04:47 +01:00
|
|
|
The focused module may also be controlled via the keyboard. `Menu`
|
|
|
|
brings up the context menu for the focused module. `Space` opens the
|
|
|
|
module parameter editor, `b` toggles the bypassed state, and
|
|
|
|
`Delete` removes the module from the chain (without confirmation!).
|
|
|
|
`Control-X`, `Control-C` and `Control-V`, cut, copy, and paste
|
|
|
|
modules, respectively. Modules may be copied within or across chain
|
|
|
|
boundaries. The normal module I\/O constraints also apply to pasted
|
|
|
|
modules.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
:::::: Module Parameter Editor
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
/ Module Parameter Editor
|
|
|
|
< gverb-parameters-knobs.png
|
|
|
|
|
|
|
|
The Module Parameter Editor is used to alter the values of a
|
2010-01-31 08:41:33 +01:00
|
|
|
module's parameters, and in addition, to bind its parameters to
|
2010-01-27 10:00:29 +01:00
|
|
|
controls. A menu button in the upper left-hand corner allows you to
|
|
|
|
select between knob, vertical slider and horizontal slider controls.
|
|
|
|
|
|
|
|
/ Horizontal Sliders
|
|
|
|
< gverb-parameters-hsliders.png
|
|
|
|
|
|
|
|
/ Vertical Sliders
|
|
|
|
< gverb-parameters-vsliders.png
|
|
|
|
|
|
|
|
Underneath each control is a bind button. Clicking adds a new
|
|
|
|
control to the chain's /Controls/ view and binds it to the parameter
|
|
|
|
in question. For simplicity, only one control at a time may be bound
|
|
|
|
to a given parameter.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
:::::: Controls
|
2010-01-27 10:00:29 +01:00
|
|
|
|
|
|
|
/ Control View
|
|
|
|
< controls.png
|
|
|
|
|
|
|
|
The control view of a chain groups together all of the controls
|
|
|
|
bound to parameters of modules in that chain. The default mode of
|
|
|
|
controls is /Manual/. Right click on a control to bring up a menu
|
2010-01-31 08:41:33 +01:00
|
|
|
which will allow you to select one of the available control I\/O
|
2010-01-27 10:00:29 +01:00
|
|
|
methods to use. When /Control Voltage/ (CV) is selected, a CV input
|
|
|
|
port will be created on the containing mixer strip's JACK
|
|
|
|
client. The control will now accept values from that input. A
|
|
|
|
control bound and configured in this way can then be connected to
|
2010-01-31 08:41:33 +01:00
|
|
|
the output of a Non-DAW control sequence using your favorite
|
2010-01-27 10:00:29 +01:00
|
|
|
connection manager.
|
|
|
|
|
|
|
|
{ NOTE:
|
|
|
|
{ All knob and slider controls respond to mousewheel
|
|
|
|
{ events. Hold down the `Ctrl` key while scrolling the mousewheel to
|
|
|
|
{ achieve finer resolution.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
::::::: Control Voltages
|
2010-01-31 06:54:17 +01:00
|
|
|
|
|
|
|
The control voltage concept should be familiar to anyone who has
|
2010-01-31 08:41:33 +01:00
|
|
|
experience with analog modular synthesizers. MIDI, while having
|
|
|
|
definite advantages in many respects, multiplexes control data in
|
|
|
|
such a way as to make connecting one MIDI control to a parameter
|
|
|
|
involve a significant inconvenience, usually requiring the
|
|
|
|
adjustment of settings on both ends of the connection in order to
|
2010-01-31 06:54:17 +01:00
|
|
|
separate the control data streams.
|
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
Control Voltages, on the other hand, provide a simple 1:1 source to
|
|
|
|
sink relationship and offer much higher resolution, both in time and
|
|
|
|
value, than can be natively expressed through MIDI. The chief
|
|
|
|
advantage of CV in the context of Non-DAW is the ease with which an
|
|
|
|
control sequence can be connected to a mixer module parameter. If
|
|
|
|
you have a MIDI controller that you'd like to use to control
|
|
|
|
parameters of Non-Mixer, consider /jm2cv/, a JACK MIDI to Control
|
|
|
|
Voltage daemon which was written by Peter Nelson specifically for
|
|
|
|
use with Non-Mixer. jm2cv can be acquired by:
|
2010-01-31 06:54:17 +01:00
|
|
|
|
|
|
|
> git clone git://fuzzle.org/jm2cv.git
|
|
|
|
|
2012-02-27 02:54:52 +01:00
|
|
|
|
2012-02-26 11:51:33 +01:00
|
|
|
{ NOTE:
|
2012-02-27 02:54:52 +01:00
|
|
|
{ The use of Control Signals (OSC) should be preferred for most types
|
|
|
|
{ of parameter automation, as LADSPA plugins are incapable of
|
|
|
|
{ processing Control Voltage signals at full audio resolution anyway.
|
|
|
|
|
|
|
|
:::::: Spatialization
|
|
|
|
|
|
|
|
/ Spatialization Control on a Strip
|
|
|
|
< spatialization-on-strip.png
|
|
|
|
|
|
|
|
Non-Mixer supports Ambisonic spatialization via the excellent amb-\*
|
|
|
|
LADSPA plugin set and others. Whenever a LADSPA plugin is added to a
|
|
|
|
strip whose set of parameters include parameters named Azimuth and
|
|
|
|
Elevation, Non-Mixer will detect this and automatically attach a
|
|
|
|
Spatializer control to these parameters. The Spatializer will be
|
|
|
|
displayed at the bottom of the mixer strip. A larger version of the
|
|
|
|
control may also be found in the Module Parameter Editor.
|
|
|
|
|
|
|
|
/ Larger Spatialization Control
|
|
|
|
< spatialization-in-mpe.png
|
|
|
|
|
|
|
|
The spatialization control may be visualized as moving the sound
|
|
|
|
source across the surface of a hemispherical dome enclosing the
|
|
|
|
listener.
|
|
|
|
|
|
|
|
The output of the spatializing plugin may be routed into a decoding
|
|
|
|
plugin following it the same strip or, more usefully, the output of
|
|
|
|
a number of Ambisonic panning plugins on different strips may be
|
|
|
|
routed (through JACK) into a single master decoder instance on a
|
|
|
|
final strip.
|
2012-02-26 11:51:33 +01:00
|
|
|
|
2010-01-31 08:41:33 +01:00
|
|
|
::: Projects
|
|
|
|
|
|
|
|
A Non-Mixer project is a directory where Non-Mixer keeps the strip
|
|
|
|
settings, project specific settings, and some meta-data. A project
|
|
|
|
is completely self-contained. You can rename a project as simply as:
|
|
|
|
|
|
|
|
> $ mv Project-A Project-B
|
|
|
|
|
2010-01-27 10:00:29 +01:00
|
|
|
:::: JACK I/O
|
|
|
|
|
|
|
|
Each mixer strip is presented as a separate JACK "client". This
|
|
|
|
helps to avoid the necessity of internally duplicating JACK's
|
|
|
|
routing logic and, with JACK2, permits the possibility of parallel
|
|
|
|
execution of mixer strip signal chains.
|
|
|
|
|
|
|
|
The JACK client name of each strip will correspond to the name of the strip.
|
|
|
|
|
|
|
|
{ NOTE:
|
|
|
|
{ The JACK API makes implementing this far more difficult and kludgey than it should have to be.
|
|
|
|
{ Please petition your local JACK developer to accept jack_client_set_name() into the API.
|
|
|
|
|
|
|
|
/ Patchage
|
|
|
|
< non-mixer-and-non-daw-in-patchage.png
|