Add documentation for mixer and restructure supporting tree.

pull/3/head
Jonathan Moore Liles 2010-01-27 03:00:29 -06:00
parent 13b3ddc301
commit 85ed4a8e02
42 changed files with 2065 additions and 130 deletions

View File

@ -35,9 +35,9 @@ config:
-include .config
export SYSTEM_PATH:=$(prefix)/share/non-daw/
export DOCUMENT_PATH:=$(prefix)/share/doc/non-daw/
export PIXMAP_PATH:=$(prefix)/share/pixmaps/non-daw/
export SYSTEM_PATH:=$(prefix)/share/
export DOCUMENT_PATH:=$(prefix)/share/doc/
export PIXMAP_PATH:=$(prefix)/share/pixmaps/
# a bit of a hack to make sure this runs before any rules
ifneq ($(CALCULATING),yes)
@ -119,9 +119,12 @@ install: all
@ echo -n "Installing..."
@ install Timeline/timeline $(prefix)/bin/non-daw
@ install Mixer/mixer $(prefix)/bin/non-mixer
@ mkdir -p $(SYSTEM_PATH)
@ mkdir -p $(PIXMAP_PATH)
@ cp pixmaps/*.png $(PIXMAP_PATH)
@ mkdir -p $(SYSTEM_PATH)/non-daw
@ mkdir -p $(PIXMAP_PATH)/non-daw
@ mkdir -p $(SYSTEM_PATH)/non-mixer
@ mkdir -p $(PIXMAP_PATH)/non-mixer
@ cp pixmaps/non-mixer/*.png $(PIXMAP_PATH)/non-mixer
@ cp pixmaps/non-daw/*.png $(PIXMAP_PATH)non-daw
@ $(MAKE) -s -C doc install
@ echo "$(DONE)"
ifneq ($(USE_DEBUG),yes)

View File

@ -890,7 +890,7 @@ Fl::check();} {}
} {
code {char pat[256];
snprintf( pat, 256, "file://%s%s.html", DOCUMENT_PATH, file );
snprintf( pat, 256, "file://%s/non-daw/%s.html", DOCUMENT_PATH, file );
open_url( pat );} {}
}
@ -966,7 +966,7 @@ if ( logo_box->image() )
Fl_Box logo_box {
label {<LOGO>}
private xywh {51 180 418 235} box ROUNDED_BOX color 53 labelfont 1 labelsize 18 align 16
code0 {o->image( Fl_Shared_Image::get( INSTALL_PREFIX "/share/pixmaps/non-daw/logo2.png" ) );}
code0 {o->image( Fl_Shared_Image::get( PIXMAP_PATH "non-daw/logo2.png" ) );}
code1 {o->label( NULL );}
}
Fl_Text_Editor notes_field {

View File

@ -1,6 +1,11 @@
NM_SRCS=$(wildcard non-mixer/*.mu)
SRCS=$(wildcard *.mu)
ND_SRCS=$(wildcard non-daw/*.mu)
OBJS=$(SRCS:.mu=.html)
NM_OBJS=$(NM_SRCS:.mu=.html)
ND_OBJS=$(ND_SRCS:.mu=.html)
%.html: %.mu
@ echo Mupping $<...
@ -16,9 +21,11 @@ upload: all
@ rm -f index.html
install:
@ mkdir -p $(DOCUMENT_PATH)
@ cp $(OBJS) *.png mup.css ../COPYING $(DOCUMENT_PATH)
@ ln -sf $(PIXMAP_PATH)/logo.png $(DOCUMENT_PATH)
@ mkdir -p $(DOCUMENT_PATH)/non-daw
@ mkdir -p $(DOCUMENT_PATH)/non-mixer
@ cp $(ND_OBJS) non-daw/*.png non-daw/mup.css ../COPYING $(DOCUMENT_PATH)/non-daw
@ cp $(NM_OBJS) non-mixer/*.png non-mixer/mup.css ../COPYING $(DOCUMENT_PATH)/non-mixer
# @ ln -sf $(PIXMAP_PATH)/logo.png $(DOCUMENT_PATH)
clean:
rm -f $(OBJS)
rm -f $(OBJS) $(NM_OBJS) $(ND_OBJS)

View File

@ -47,6 +47,8 @@ March 1, 2008<br>
<ul><li><a href="#n:1.6.1.">1.6.1. Timeline</a>
<li><a href="#n:1.6.2.">1.6.2. Mixer</a>
</ul></ul><li><a href="#u:1.">What does freedom have to do with this software?</a>
<li><a href="#u:2.">Donations</a>
@ -64,7 +66,7 @@ March 1, 2008<br>
The Non DAW is a powerful, reliable and fast modular Digital Audio Workstation system, released under the GNU General Public License (GPL). It utilizes the JACK Audio Connection Kit for inter-application audio I/O and the FLTK GUI toolkit for a fast and lightweight user interface.
</p>
<p>
Please see the <a class=ext href="MANUAL.html">manual</a> for more information.
Please see the <a class=ext href="non-daw/MANUAL.html">Non DAW Manual</a> and <a class=ext href="non-mixer/MANUAL.html">Non Mixer Manual</a> for more information.
</p>
<h2 id="n:1.2.">1.2. What it is not</h2>
<p>
@ -80,7 +82,7 @@ In this author's opinion, a DAW comprises the following functionality:
<ul><li><span>Non-linear, non-destructive arrangement of portions of audio clips.</span>
<li><span>Tempo and time signature mapping, with editing operations being closely aligned to this map.</span>
</ul><p>
Since Non uses JACK for IO, some things traditionally considered to be within the scope of a monolithic DAW can be pared out:
Since Non uses JACK for IO, some things traditionally considered to be within the scope of a monolithic DAW can be pared out into JACK and Non Mixer:
</p>
<ul><li><span>Signal routing</span>
<li><span>Audio mixing</span>
@ -100,7 +102,7 @@ Given these options, we had no choice but to start from scratch, this time on a
</p>
<h2 id="n:1.5.">1.5. Features</h2>
<p>
Non-DAW shares many features in common with other, similar projects. However, Non-DAW's unique architecture permits suprising new functionality.
Non-DAW shares many features in common with other, similar projects. However, Non-DAW's unique architecture permits surprising new functionality.
</p>
<h3 id="n:1.5.1.">1.5.1. Journaled Projects</h3>
<p>
@ -159,7 +161,7 @@ The following data belong to the timeline:
</p>
<dl>
<dt><em>Tracks and Takes</em></dt>
<dd>Each Track has a number of input and output ports, a name, and any number of attached sequences. All sequences but the current (topmost) are inactive and do not generate sound or accept captures. These sequences are referred to as <i>Takes</i>. Previous takes may be swapped with the current sequence and all takes may be shown on screen at once for easy splicing. Each track can also have any number of Control Seqeunces attached to it, in which case all control seqeunces generate control output unless disconnected. The height of a track may be adjusted and a track can be muted, soloed, or record-enabled.</dd>
<dd>Each Track has a number of input and output ports, a name, and any number of attached sequences. All sequences but the current (topmost) are inactive and do not generate sound or accept captures. These sequences are referred to as <i>Takes</i>. Previous takes may be swapped with the current sequence and all takes may be shown on screen at once for easy splicing. Each track can also have any number of Control Sequences attached to it, in which case all control sequences generate control output unless disconnected. The height of a track may be adjusted and a track can be muted, soloed, or record-enabled.</dd>
<dt><em>Regions</em></dt>
<dd>Regions are the most common object on the timeline. Each region represents a segment of some particular audio file. Waveforms of all regions belonging to the same source are displayed in the same hue. Each region has a normalization value and regions can be selected individually or operated on in groups. Each region has a fade-in and fade-out curve, and when two regions overlap, this constitutes a cross-fade.</dd>
<dt><em>Control Points</em></dt>
@ -171,6 +173,33 @@ The following data belong to the timeline:
<dt><em>Annotation Regions</em></dt>
<dd>Annotation Regions are annotations with a definite duration. These are useful for representing lyrics or other notes of a timely nature. Each track may have any number of annotation sequences associated with it, and these sequences can contain a free mix of annotation points and annotation regions.</dd>
</dl>
<h3 id="n:1.6.2.">1.6.2. Mixer</h3>
<p>
The Non Mixer is a stand-alone application. It is a complement to Non DAW, but neither program requires the other in order to function.
</p>
<p>
Implementing the mixer functionality in a separate program, connected to Non-DAW via JACK presents a number of advantages:
</p>
<ul><li><span>Eliminates the need for an internal connection management interface</span>
<li><span>Improves overall system stability</span>
<li><span>Increases parallelism (utilizes multiple cores)</span>
<li><span>Adds flexibility</span>
<li><span>Eliminates the need for cumbersome concepts and interfaces such as 'sends', 'groups', 'inserts' and 'busses'.</span>
</ul><p>
Multiple instances of the mixer can be run together in order to organize groups of channels and manage them with your preferred window manager.
</p>
<p>
Each mixer strip runs as a separate JACK client. In JACK2, this can translates into the DSP workload being spread across multiple CPU cores.
</p>
<p>
Since the Mixer is an entirely separate unit, you may use any JACK capable mixer client you want instead of, or in myriad combination with, the Non-DAW Mixer. The one called LiveMix works well, but lacks many features of Non's mixer. All operations on the mixer affect the current mix set state only and are not journaled.
</p>
<p>
The mixer's design is modular, with all DSP occurring in discrete modules. One module hosts LADSPA plugins and the mixer is capable of receiving control (automation) data for any module parameter from Non-DAW (or another program) via JACK.
</p>
<p>
Control data is expressed as Control Voltage (CV).
</p>
<h1 id="u:1.">What does freedom have to do with this software?</h1>
<p>
Non is <i>free software</i>. This means, briefly, that you are free use it as <b>you</b> wish, free to examine and adapt the source code, free to share it with your friends, and free to publish your changes to the source code. Furthermore, Non is <i>copyleft</i>, which means that you are free from the threat of some other entity taking over and denying you the above freedoms. The <i>free</i> part of <i>free software</i> doesn't refer to price any more than the <i>free</i> in <i>free speech</i> does.
@ -204,11 +233,12 @@ There are no pre-compiled binaries available.
</p>
<h1 id="u:4.">Requirements</h1>
<p>
The following libraries are required to build Non-DAW
The following libraries are required to build Non DAW and Non Mixer
</p>
<ul><li><span>FLTK >= 1.1.7 (with `fluid`)</span>
<li><span>JACK >= 0.103.0</span>
<li><span>libsndfile >= 0.18.0</span>
<li><span>liblrdf >= 0.1.0</span>
</ul><p>
The following are optional:
</p>

View File

@ -16,7 +16,8 @@
inter-application audio I\/O and the FLTK GUI toolkit for a fast and
lightweight user interface.
Please see the #(url,MANUAL.html,manual) for more information.
Please see the #(url,non-daw%(slash)MANUAL.html,Non DAW Manual) and
#(url,non-mixer%(slash)MANUAL.html,Non Mixer Manual) for more information.
:: What it is not
@ -44,7 +45,7 @@
* Tempo and time signature mapping, with editing operations being closely aligned to this map.
Since Non uses JACK for IO, some things traditionally considered to be within
the scope of a monolithic DAW can be pared out:
the scope of a monolithic DAW can be pared out into JACK and Non Mixer:
* Signal routing
* Audio mixing
@ -77,7 +78,7 @@
:: Features
Non-DAW shares many features in common with other, similar projects. However,
Non-DAW's unique architecture permits suprising new functionality.
Non-DAW's unique architecture permits surprising new functionality.
::: Journaled Projects
@ -161,11 +162,6 @@
are drawn. During playback they affect the time\/tempo of the JACK transport
so that other programs, like the Non-Sequencer, can follow along in sync.
#::: External control
#
# MIDI and OSC control allows mixer and automation to be controlled by eg. a
# BCF2000.
:: Components
The Mixer and the Timeline are separate programs, connected through JACK.
@ -183,8 +179,8 @@
= captures. These sequences are referred to as /Takes/. Previous
= takes may be swapped with the current sequence and all takes
= may be shown on screen at once for easy splicing. Each track
= can also have any number of Control Seqeunces attached to it,
= in which case all control seqeunces generate control output
= can also have any number of Control Sequences attached to it,
= in which case all control sequences generate control output
= unless disconnected. The height of a track may be adjusted
= and a track can be muted, soloed, or record-enabled.
= Regions
@ -214,108 +210,40 @@
= sequences associated with it, and these sequences can contain
= a free mix of annotation points and annotation regions.
#::: Mixer
#
# Mix data is stored separately from timeline data and is not journaled. This
# makes it possible to do multiple mixes of a single project and switch
# between them at will.
#
# Since the Mixer is an entirely separate unit, you may use any JACK capable
# mixer client you want instead of, or in myriad combination with, the Non-DAW
# Mixer. The one called LiveMix works well, but lacks many features of Non's
# mixer. All operations on the mixer affect the current mix set state only
# and are not journaled.
#
# The following data belong to the mixer:
#
#* track configuration (number of input channels, number of mix channels)
#* track gain\/panning (controllable via automation)
#* plugins (controllable via automation)
#
#:::: Panning
#
# The panning system in Non is different from other DAWs. In other DAWs, like
# Ardour, each track has a number of inputs and a (larger) number of outputs
# and (stereo only) panning is performed by the traditional, but inferior,
# intensity method.
#
# In Non, each track has a panner, yes, but this does not actually affect the
# track's output. The actual 'panning' (more properly, spatialization) is
# performed for all tracks at the master output stage. Outputs from all tracks
# are encoded into something similar to Ambisonic B-Format, using the spacial
# locations from each track panner. This signal is then (optionally) decoded
# to a specific speaker layout form the master output signals. Rendering can
# be done either to the universal .amb format or any fixed configuration of
# speakers (Quad, 5.1, 7.1, 10.1). A .amb file contains a complete soundfield
# and can later be reduced to any fixed layout format, or even other types of
# Ambisonic encodings.
#
# What this means is that, even for stereo mixes, the soundfield produced by
# the output will be more stable, wider, and more realistic than anything
# intensity panning can produce. It also means that moving a stereo mix to
# surround is quite straight forward, and that surround mixes produced with
# Non will be future-proof and far superior to anything achievable with 2D
# intensity panning. This single feature clearly sets Non-DAW apart from
# other (even proprietary) offerings.
#
#::: Router
#
# The router is simply an interface to the JACK port routing. It's a slightly
# more practical than what you get from QJackCtl or Patchage.
#
#* jack port routing.
#
#::: Plugin Host
#
# Plugins are handled differently in Non-DAW versus other DAWs. The author has
# enough first hand experience with LADSPA to know that plugins cannot be
# trusted in a sensitive process. They fail, they crash, they stop responding.
# For a DAW like Ardour, which uses plugins as, well, plugins, this means that
# a single malfunctioning plugin can bring your entire project to its
# knees--this is clearly an unacceptable interruption of the creative process.
#
# Aside from these stability issues, plugins present a conceptual problem.
# They require each 'host' to implement a routing and control system similar,
# but inferior to, what JACK already provides to fully fledged clients.
# Likewise, fully fledged clients may display any GUI they like--a long
# standing gripe in the LAD community being the lack of any provision for
# wood-grain pixmaps, fan-sliders, and antialiased knobs in the LADSPA
# standard.
#
# Until such time as LAD sees the light on this and other issues requiring the
# application of thought and reason (don't hold your breath), Non will
# continue to employ the following compromise:
#
# Plugins are hosted externally, in a dedicated host process, and routing
# between them is accomplished via the JACK connection graph. In this
# dedicated plugin host, we enforce some saner forms of interoperability than
# the hoards of LAD could ever conceive. We give each plugin the appropriate
# input and output ports, and define OSC control points for each plugin
# parameter. We save and restore settings (without resorting to the patron
# saint of idiots; XML).
#
# Using plugins in this way has the following advantage/disadvantage:
#
# Non-DAW may create more JACK ports than something like Ardour. *But*, Non
# eliminates the need for stupid, buggy, irrational in-host routing such as
# the rats-nest of connections one gets with sends/inserts in something like
# Ardour.
#
# Truthfully, it is absurd for a JACK based DAW to re-implement nearly all of
# JACK routing in-process simply for the sake of LADSPA.
#-----
#
#: Notes
#
#* Why not use SpiralSynthModular (SSM) as our plugin host?
# . In order for this to work SSM would need to be modified to
# . support the following: LASH, OSC control of plugins, and just
# . generally work with Jack. The OSS driver could be removed
# . entirely. And the GUI optimized in order to make running
# . multiple instances less taxing. Alternatively, the GUI could
# . be restructured to allow a single SSM to host the plugins for
# . all tracks.
::: Mixer
The Non Mixer is a stand-alone application. It is a complement to Non
DAW, but neither program requires the other in order to function.
Implementing the mixer functionality in a separate program, connected
to Non-DAW via JACK presents a number of advantages:
* Eliminates the need for an internal connection management interface
* Improves overall system stability
* Increases parallelism (utilizes multiple cores)
* Adds flexibility
* Eliminates the need for cumbersome concepts and interfaces such as 'sends', 'groups', 'inserts' and 'busses'.
Multiple instances of the mixer can be run together in order to
organize groups of channels and manage them with your preferred
window manager.
Each mixer strip runs as a separate JACK client. In JACK2, this can
translates into the DSP workload being spread across multiple CPU
cores.
Since the Mixer is an entirely separate unit, you may use any JACK capable
mixer client you want instead of, or in myriad combination with, the Non-DAW
Mixer. The one called LiveMix works well, but lacks many features of Non's
mixer. All operations on the mixer affect the current mix set state only
and are not journaled.
The mixer's design is modular, with all DSP occurring in discrete
modules. One module hosts LADSPA plugins and the mixer is capable of
receiving control (automation) data for any module parameter from
Non-DAW (or another program) via JACK.
Control data is expressed as Control Voltage (CV).
; What does freedom have to do with this software?
@ -361,11 +289,12 @@
; Requirements
The following libraries are required to build Non-DAW
The following libraries are required to build Non DAW and Non Mixer
* FLTK >= 1.1.7 (with `fluid`)
* JACK >= 0.103.0
* libsndfile >= 0.18.0
* liblrdf >= 0.1.0
The following are optional:
@ -381,4 +310,3 @@
#(email,non-daw-request@lists.tuxfamily.org).
You can also browse the #(url,http:\/\/listengine.tuxfamily.org\/lists.tuxfamily.org\/non-daw\/,archive).

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

449
doc/non-daw/mup.css Normal file
View File

@ -0,0 +1,449 @@
/* Example CSS Style for MUP */
a:link {
color: yellow;
}
a:visited {
color: olive;
}
a:active {
color: white;
}
a:link:hover {
text-decoration: underline;
}
/* #(url) */
a.ext:link {
color: red;
text-decoration: none;
border-bottom: dashed silver 1;
}
a.ext:visited {
color: darkred;
border-bottom: dashed silver 1;
text-decoration: none;
}
/* #(ref) */
a.int:link {
border-bottom: dashed silver 0.15em;
}
a.int:link:hover {
text-decoration: none;
color: white;
}
/*
a[href^="#"]:link {
border-bottom: dashed silver 0.15em;
}
a[href^="#"]:link:hover {
text-decoration: none;
color: white;
}
*/
p:contains("Warning:") {
background: #d00;
color: white;
border: dotted gray 0.5em;
display: block;
}
/* First letter of first paragraph of every chapter */
/*
h1 + p:first-letter {
text-transform: uppercase;
float: left;
line-height: 0.8em;
font-size: 350%;
font-family: Serif;
letter-spacing: 0;
margin-right: 0.1em;
margin-top: 0.1em;
border: solid gray 1px;
padding: 1px;
color: #d00;
text-shadow: #666 3px 3px 3px;
}
*/
/* First paragraph of every chapter */
/*
h1 + p {
text-indent: 0;
}
*/
/* cover */
#cover * {
background: transparent;
}
#cover {
position: relative;
background: #da0;
color: black;
text-align: center;
margin: 0;
padding: 0.5em;
}
#cover h1, #cover h3 {
text-shadow: #444 0.2em 0.2em 0.2em;
color: white;
border: none;
letter-spacing: 0.2em;
line-height: 0.8em;
margin-left: 2em;
margin-right: 2em;
}
#cover h1:before, #cover h1:after {
content: "::";
font-size: 300%;
color: black;
}
#cover h1:before {
position: absolute;
top: 0.2em;
left: 0.1em;
}
#cover h1:after {
position: absolute;
top: 0.2em;
right: 0.1em;
}
#cover hr {
display: none;
}
hr:first-child {
display: none;
}
hr {
height: 0.2em;
background: #555;
color: #555;
margin-left: 0.5em;
}
#cover a:visited {
color: black;
}
/* endnote */
#endnote {
color: black;
}
/* TOC */
#toc {
position: relative;
}
#toc hr {
}
#toc h1 {
}
#toc ul {
font-size: 125%;
font-weight: bold;
margin-bottom: 1em;
}
#toc ul ul {
font-size: 90%;
font-weight: normal;
margin-bottom: 0;
}
#toc li {
list-style: none;
}
#toc a:link {
border-bottom: 0;
}
body {
margin: 0;
background: #222;
color: white;
font-family: Arial, sans-serif;
}
/* */
#body {
position: relative;
margin: 0.5em;
padding: 0.5em;
}
/* ;, : */
h1 {
color: #ff0;
border-bottom: solid #444 0.1em;
}
/* ::, :::, ::::, :::::, :::::: */
h2, h3, h4, h5, h6 {
color: #dd0;
}
/* tables, figures */
.fig caption {
color: gray;
text-align: center;
/* Required for Mozilla */
margin: auto;
}
.fig table {
border: none;
margin: auto;
/* border-collapse: collapse; */
}
/* / */
.fig.table th {
border: none;
background: gray;
color: black;
}
/* [ */
.fig.table td {
border: none;
background: silver;
color: black;
padding-left: 1em;
padding-right: 1em;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
/* < */
.fig.image table {
border: dashed silver 0.2em;
background: transparent;
/* Every browser should support border radii */
-moz-border-radius: 0.5em;
border-radius: 0.5em;
}
.fig.image tr, .fig.image td {
border: none;
background: transparent;
padding: 0;
}
/* */
p {
margin-right: 2%;
text-align: justify;
text-indent: 1em;
}
/* > */
.example *
{
background: transparent;
}
.example table
{
margin: 0;
padding: 0;
table-layout: fixed;
width: 100%;
caption-side: top;
overflow: auto;
}
.example caption
{
caption-side: top;
}
.example {
}
.example p {
display: inline;
margin: 0;
padding: 0;
text-align: center;
}
.example pre {
margin-top: 0;
font-family: Monospace;
padding: 1em;
border: dashed 0.3em gray;
background: #111;
color: white;
display: block;
overflow: auto;
/* Every browser should support border radii */
-moz-border-radius: 0.5em;
border-radius: 0.5em;
}
/* " */
/*
.quote:before {
float: left;
font-size: 500%;
content: "\201C";
}
*/
/*
blockquote:after {
content: "\201D";
}*/
.quote blockquote {
padding: 0.5em;
margin-left: 0.5em;
font-family: Serif;
border-left: solid 0.4em gray;
/* background: #333; */
color: white;
}
/* ^ */
small {
/*
color: silver;
font-size: 50%;
*/
}
.footnote p {
color: silver;
margin: 0;
}
/* Popup footnotes */
.footnote p {
display: none;
}
.footnote p:target {
display: block;
overflow: auto;
position: fixed;
left: auto;
bottom: 0;
right: 0;
max-width: 50%;
border: solid 0.3em white;
-moz-border-radius: 0.5em;
background: black;
padding: 0.2em;
}
/* { */
.admonition * {
background: transparent;
color: white;
}
.admonition dl
{
display: table;
margin: 0;
padding: 0;
background: #333;
border: dotted black 0.3em;
width: 90%
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.admonition dt
{
display: table-cell;
vertical-align: center;
border-right: solid silver 0.4em;
font-weight: bold;
font-size: 115%;
font-family: Serif;
background: gray;
width: 0;
text-shadow: black 0.15em 0.15em 0.15em;
}
.admonition dd
{
padding-left: 0.4em;
display: table-cell;
width: 100%;
text-align: justify;
}
.admonition table
{
margin: 0;
padding: 0;
background: #333;
border: dotted black 0.3em;
width: 90%
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.admonition td {
width: 100%;
text-align: justify;
}
.admonition td:first-child:contains("Warning:") {
background: #900;
}
.admonition td:first-child:contains("Caution:") {
background: #960;
}
.admonition td:first-child:contains("Note:") {
background: #690;
}
.admonition td:first-child {
border-right: solid silver 0.4em;
font-weight: bold;
font-size: 115%;
font-family: Serif;
background: gray;
width: 0;
text-shadow: black 0.15em 0.15em 0.15em;
}
/* #(b) */
/* b { color: olive; } */
/* #(c) */
tt {
color: #7f0;
}
/* ! keywords ... */
p em {
color: gray;
font-style: normal;
font-weight: bold;
}
/* *, + */
/* Bullet, numbe */
li {
color: #f0f;
}
/* Text */
li span, li p {
color: white;
}
li p {
color: red;
display: block;
}
ul {
list-style-type: square;
}
dl {
margin-left: 2%;
margin-top: 1em;
}
/* = */
dt {
background: #181818;
padding: 0.2em;
font-variant: small-caps;
font-weight: bold;
color: #f0f;
}
dd {
color: white;
text-align: justify;
margin-right: 5%;
}
dt a:link, dt a:visited {
color: #f0f;
}
dt a:link:hover {
color: silver;
text-decoration: underline;
}

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

198
doc/non-mixer/MANUAL.html Normal file
View File

@ -0,0 +1,198 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta name="generator" content="Generated by MUP v3.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="mup.css">
<title>Non Mixer User Manual</title>
</head>
<body>
<div id=cover>
<h1>Non Mixer User Manual</h1>
<h3></h3>
<address>
Jonathan Moore Liles <a href="mailto:male@tuxfamily.org">&lt;male@tuxfamily.org&gt;</a><br>
January 21, 2010<br>
</address><hr></div>
<div id=body>
<div id=toc>
<h1 id=toc>Table Of Contents</h1>
<ul>
<li><a href="#n:1.">1. User Manual</a>
<ul><li><a href="#n:1.1.">1.1. The Mixer</a>
<ul><li><a href="#n:1.1.1.">1.1.1. Mixer Strip</a>
<ul><li><a href="#n:1.1.1.1.">1.1.1.1. Signal Processing</a>
<ul><li><a href="#n:1.1.1.1.1.">1.1.1.1.1. Signal Chain</a>
<ul><li><a href="#n:1.1.1.1.1.1.">1.1.1.1.1.1. Modules</a>
<ul><li><a href="#n:1.1.1.1.1.1.1.">1.1.1.1.1.1.1. Module Parameter Editor</a>
<li><a href="#n:1.1.1.1.1.1.2.">1.1.1.1.1.1.2. Controls</a>
</ul></ul></ul><li><a href="#n:1.1.1.2.">1.1.1.2. JACK I/O</a>
</ul></ul></ul></ul></ul><hr></div>
<h1 id="n:1.">1. User Manual</h1>
<h2 id="n:1.1.">1.1. The Mixer</h2>
<center><div class="fig image"><table id="Fig.1.1" border=1>
<caption>
<strong>Fig. 1.1.</strong> Mixer
</caption>
<tr><td><img src="non-mixer-complex.png" alt="fig. 1.1"></td></tr>
</table></div></center>
<p>
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.
</p>
<p>
Start by creating a new project.
</p>
<center><div class="fig image"><table id="Fig.1.2" border=1>
<caption>
<strong>Fig. 1.2.</strong> New Project
</caption>
<tr><td><img src="new-project.png" alt="fig. 1.2"></td></tr>
</table></div></center>
<p>
<h3 id="n:1.1.1.">1.1.1. Mixer Strip</h3>
<center><div class="fig image"><table id="Fig.1.3" border=1>
<caption>
<strong>Fig. 1.3.</strong> Mixer Strip
</caption>
<tr><td><img src="single-strip.png" alt="fig. 1.3"></td></tr>
</table></div></center>
<p>
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').
</p>
<p>
Strips start out in <i>narrow</i> mode, with the <i>fader</i> view enabled. Click the desired button to toggle the mode or view.
</p>
<p>
The fader view comprises a large gain control and digital peak meter indicator. These are automatically connected to the default gain and meter modules of the strips signal chain.
</p>
<p>
To see how an audio signal traveling through this strip will be processed, switch to its <i>signal</i> view.
</p>
<h4 id="n:1.1.1.1.">1.1.1.1. Signal Processing</h4>
<h5 id="n:1.1.1.1.1.">1.1.1.1.1. Signal Chain</h5>
<p>
The signal chain view of a mixer strip provides a way to view and manipulate the signal processing of a mixer strip.
</p>
<h6 id="n:1.1.1.1.1.1.">1.1.1.1.1.1. Modules</h6>
<center><div class="fig image"><table id="Fig.1.4" border=1>
<caption>
<strong>Fig. 1.4.</strong> Modules
</caption>
<tr><td><img src="modules.png" alt="fig. 1.4"></td></tr>
</table></div></center>
<p>
All signal processing in Non Mixer occurs in <i>Modules</i>. Modules are
</p>
<p>
<p>
Modules are displayed as named blocks. Some modules may have additional GUI components.
</p>
<p>
<p>
An indicator in the upper left-hand corner of each module block indicates whether the module has any parameters bound to controls.
</p>
<p>
Non Mixer has several built-in modules. They are:
</p>
<dl>
<dt><em>JACK</em></dt>
<dd>Performs JACK I/O</dd>
<dt><em>Gain</em></dt>
<dd>Applies gain in dB</dd>
<dt><em>Meter</em></dt>
<dd>Digital Peak meter</dd>
<dt><em>Mono Pan</em></dt>
<dd>Performs intensity panning of a mono signal into a stereo signal.</dd>
<dt><em>Plugin</em></dt>
<dd>Hosts a LADSPA plugin</dd>
</dl>
<p>
Left-clicking on a module brings up the Module Parameter Editor.
</p>
<p>
Shift+Left-clicking on a module brings up a menu which allows you to pick a new module to insert before this one in the chain.
</p>
<p>
Control+Right-clicking on a module causes it to be removed from the chain (modules added by default cannot be removed).
</p>
<h7 id="n:1.1.1.1.1.1.1.">1.1.1.1.1.1.1. Module Parameter Editor</h7>
<center><div class="fig image"><table id="Fig.1.5" border=1>
<caption>
<strong>Fig. 1.5.</strong> Module Parameter Editor
</caption>
<tr><td><img src="gverb-parameters-knobs.png" alt="fig. 1.5"></td></tr>
</table></div></center>
<p>
The Module Parameter Editor is used to alter the values of a module's parameters, and, further more, to bind its parameters to controls. A menu button in the upper left-hand corner allows you to select between knob, vertical slider and horizontal slider controls.
</p>
<center><div class="fig image"><table id="Fig.1.6" border=1>
<caption>
<strong>Fig. 1.6.</strong> Horizontal Sliders
</caption>
<tr><td><img src="gverb-parameters-hsliders.png" alt="fig. 1.6"></td></tr>
</table></div></center>
<center><div class="fig image"><table id="Fig.1.7" border=1>
<caption>
<strong>Fig. 1.7.</strong> Vertical Sliders
</caption>
<tr><td><img src="gverb-parameters-vsliders.png" alt="fig. 1.7"></td></tr>
</table></div></center>
<p>
Underneath each control is a bind button. Clicking adds a new control to the chain's <i>Controls</i> view and binds it to the parameter in question. For simplicity, only one control at a time may be bound to a given parameter.
</p>
<h7 id="n:1.1.1.1.1.1.2.">1.1.1.1.1.1.2. Controls</h7>
<center><div class="fig image"><table id="Fig.1.8" border=1>
<caption>
<strong>Fig. 1.8.</strong> Control View
</caption>
<tr><td><img src="controls.png" alt="fig. 1.8"></td></tr>
</table></div></center>
<p>
<div class=admonition>
<table width=100%>
<tr><td>NOTE:
All knob and slider controls respond to mousewheel
events. Hold down the `Ctrl` key while scrolling the mousewheel to
achieve finer resolution.
</td></table>
</div>
<h4 id="n:1.1.1.2.">1.1.1.2. JACK I/O</h4>
<p>
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.
</p>
<p>
The JACK client name of each strip will correspond to the name of the strip.
</p>
<div class=admonition>
<table width=100%>
<tr><td>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.
</td></table>
</div>
<center><div class="fig image"><table id="Fig.1.9" border=1>
<caption>
<strong>Fig. 1.9.</strong> Patchage
</caption>
<tr><td><img src="non-mixer-and-non-daw-in-patchage.png" alt="fig. 1.9"></td></tr>
</table></div></center>
</div>
</body>
</html>

159
doc/non-mixer/MANUAL.mu Normal file
View File

@ -0,0 +1,159 @@
! title Non Mixer User Manual
! author Jonathan Moore Liles #(email,male@tuxfamily.org)
! date January 21, 2010
-- 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.
Start by creating a new project.
/ New Project
< new-project.png
After the project has been created. Hit `a` or choose `Mixer/Add
Strip` from the menu to add a new strip to the mixer.
::: Mixer Strip
/ 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.
The fader view comprises a large gain control and digital peak meter
indicator. These are automatically connected to the default gain and
meter modules of the strips signal chain.
To see how an audio signal traveling through this strip will be
processed, switch to its /signal/ view.
:::: Signal Processing
::::: Signal Chain
The signal chain view of a mixer strip provides a way to view and
manipulate the signal processing of a mixer strip.
:::::: Modules
/ Modules
< modules.png
All signal processing in Non Mixer occurs in /Modules/. Modules are
signal processing abstractions providing ports for audio and control
I/O and, in addition, some simple user interface. Sink and source
modules carry audio out of and into JACK.
Modules are displayed as named blocks. Some modules may have
additional GUI components.
Each module has zero or more audio I/O ports and zero or more
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
= Digital Peak meter
= Mono Pan
= Performs intensity panning of a mono signal into a stereo signal.
= Plugin
= Hosts a LADSPA plugin
Left-clicking on a module brings up the Module Parameter Editor.
Shift+Left-clicking on a module brings up a menu which allows you to
pick a new module to insert before this one in the chain.
Control+Right-clicking on a module causes it to be removed from the
chain (modules added by default cannot be removed).
::::::: Module Parameter Editor
/ Module Parameter Editor
< gverb-parameters-knobs.png
The Module Parameter Editor is used to alter the values of a
module's parameters, and, further more, to bind its parameters to
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.
::::::: Controls
/ 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
which will allow you to select one of the available control I/O
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
the output of Non-DAW a control sequence using your favorite
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.
:::: 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

BIN
doc/non-mixer/controls.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
doc/non-mixer/modules.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

449
doc/non-mixer/mup.css Normal file
View File

@ -0,0 +1,449 @@
/* Example CSS Style for MUP */
a:link {
color: yellow;
}
a:visited {
color: olive;
}
a:active {
color: white;
}
a:link:hover {
text-decoration: underline;
}
/* #(url) */
a.ext:link {
color: red;
text-decoration: none;
border-bottom: dashed silver 1;
}
a.ext:visited {
color: darkred;
border-bottom: dashed silver 1;
text-decoration: none;
}
/* #(ref) */
a.int:link {
border-bottom: dashed silver 0.15em;
}
a.int:link:hover {
text-decoration: none;
color: white;
}
/*
a[href^="#"]:link {
border-bottom: dashed silver 0.15em;
}
a[href^="#"]:link:hover {
text-decoration: none;
color: white;
}
*/
p:contains("Warning:") {
background: #d00;
color: white;
border: dotted gray 0.5em;
display: block;
}
/* First letter of first paragraph of every chapter */
/*
h1 + p:first-letter {
text-transform: uppercase;
float: left;
line-height: 0.8em;
font-size: 350%;
font-family: Serif;
letter-spacing: 0;
margin-right: 0.1em;
margin-top: 0.1em;
border: solid gray 1px;
padding: 1px;
color: #d00;
text-shadow: #666 3px 3px 3px;
}
*/
/* First paragraph of every chapter */
/*
h1 + p {
text-indent: 0;
}
*/
/* cover */
#cover * {
background: transparent;
}
#cover {
position: relative;
background: #da0;
color: black;
text-align: center;
margin: 0;
padding: 0.5em;
}
#cover h1, #cover h3 {
text-shadow: #444 0.2em 0.2em 0.2em;
color: white;
border: none;
letter-spacing: 0.2em;
line-height: 0.8em;
margin-left: 2em;
margin-right: 2em;
}
#cover h1:before, #cover h1:after {
content: "::";
font-size: 300%;
color: black;
}
#cover h1:before {
position: absolute;
top: 0.2em;
left: 0.1em;
}
#cover h1:after {
position: absolute;
top: 0.2em;
right: 0.1em;
}
#cover hr {
display: none;
}
hr:first-child {
display: none;
}
hr {
height: 0.2em;
background: #555;
color: #555;
margin-left: 0.5em;
}
#cover a:visited {
color: black;
}
/* endnote */
#endnote {
color: black;
}
/* TOC */
#toc {
position: relative;
}
#toc hr {
}
#toc h1 {
}
#toc ul {
font-size: 125%;
font-weight: bold;
margin-bottom: 1em;
}
#toc ul ul {
font-size: 90%;
font-weight: normal;
margin-bottom: 0;
}
#toc li {
list-style: none;
}
#toc a:link {
border-bottom: 0;
}
body {
margin: 0;
background: #222;
color: white;
font-family: Arial, sans-serif;
}
/* */
#body {
position: relative;
margin: 0.5em;
padding: 0.5em;
}
/* ;, : */
h1 {
color: #ff0;
border-bottom: solid #444 0.1em;
}
/* ::, :::, ::::, :::::, :::::: */
h2, h3, h4, h5, h6 {
color: #dd0;
}
/* tables, figures */
.fig caption {
color: gray;
text-align: center;
/* Required for Mozilla */
margin: auto;
}
.fig table {
border: none;
margin: auto;
/* border-collapse: collapse; */
}
/* / */
.fig.table th {
border: none;
background: gray;
color: black;
}
/* [ */
.fig.table td {
border: none;
background: silver;
color: black;
padding-left: 1em;
padding-right: 1em;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
/* < */
.fig.image table {
border: dashed silver 0.2em;
background: transparent;
/* Every browser should support border radii */
-moz-border-radius: 0.5em;
border-radius: 0.5em;
}
.fig.image tr, .fig.image td {
border: none;
background: transparent;
padding: 0;
}
/* */
p {
margin-right: 2%;
text-align: justify;
text-indent: 1em;
}
/* > */
.example *
{
background: transparent;
}
.example table
{
margin: 0;
padding: 0;
table-layout: fixed;
width: 100%;
caption-side: top;
overflow: auto;
}
.example caption
{
caption-side: top;
}
.example {
}
.example p {
display: inline;
margin: 0;
padding: 0;
text-align: center;
}
.example pre {
margin-top: 0;
font-family: Monospace;
padding: 1em;
border: dashed 0.3em gray;
background: #111;
color: white;
display: block;
overflow: auto;
/* Every browser should support border radii */
-moz-border-radius: 0.5em;
border-radius: 0.5em;
}
/* " */
/*
.quote:before {
float: left;
font-size: 500%;
content: "\201C";
}
*/
/*
blockquote:after {
content: "\201D";
}*/
.quote blockquote {
padding: 0.5em;
margin-left: 0.5em;
font-family: Serif;
border-left: solid 0.4em gray;
/* background: #333; */
color: white;
}
/* ^ */
small {
/*
color: silver;
font-size: 50%;
*/
}
.footnote p {
color: silver;
margin: 0;
}
/* Popup footnotes */
.footnote p {
display: none;
}
.footnote p:target {
display: block;
overflow: auto;
position: fixed;
left: auto;
bottom: 0;
right: 0;
max-width: 50%;
border: solid 0.3em white;
-moz-border-radius: 0.5em;
background: black;
padding: 0.2em;
}
/* { */
.admonition * {
background: transparent;
color: white;
}
.admonition dl
{
display: table;
margin: 0;
padding: 0;
background: #333;
border: dotted black 0.3em;
width: 90%
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.admonition dt
{
display: table-cell;
vertical-align: center;
border-right: solid silver 0.4em;
font-weight: bold;
font-size: 115%;
font-family: Serif;
background: gray;
width: 0;
text-shadow: black 0.15em 0.15em 0.15em;
}
.admonition dd
{
padding-left: 0.4em;
display: table-cell;
width: 100%;
text-align: justify;
}
.admonition table
{
margin: 0;
padding: 0;
background: #333;
border: dotted black 0.3em;
width: 90%
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.admonition td {
width: 100%;
text-align: justify;
}
.admonition td:first-child:contains("Warning:") {
background: #900;
}
.admonition td:first-child:contains("Caution:") {
background: #960;
}
.admonition td:first-child:contains("Note:") {
background: #690;
}
.admonition td:first-child {
border-right: solid silver 0.4em;
font-weight: bold;
font-size: 115%;
font-family: Serif;
background: gray;
width: 0;
text-shadow: black 0.15em 0.15em 0.15em;
}
/* #(b) */
/* b { color: olive; } */
/* #(c) */
tt {
color: #7f0;
}
/* ! keywords ... */
p em {
color: gray;
font-style: normal;
font-weight: bold;
}
/* *, + */
/* Bullet, numbe */
li {
color: #f0f;
}
/* Text */
li span, li p {
color: white;
}
li p {
color: red;
display: block;
}
ul {
list-style-type: square;
}
dl {
margin-left: 2%;
margin-top: 1em;
}
/* = */
dt {
background: #181818;
padding: 0.2em;
font-variant: small-caps;
font-weight: bold;
color: #f0f;
}
dd {
color: white;
text-align: justify;
margin-right: 5%;
}
dt a:link, dt a:visited {
color: #f0f;
}
dt a:link:hover {
color: silver;
text-decoration: underline;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

BIN
pixmaps/non-daw/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
pixmaps/non-mixer/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

712
pixmaps/non-mixer/logo.svg Normal file
View File

@ -0,0 +1,712 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="128"
height="128"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="non-mixer-logo.svg">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient6500">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6502" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop6504" />
</linearGradient>
<linearGradient
id="linearGradient6116">
<stop
style="stop-color:#a00000;stop-opacity:1;"
offset="0"
id="stop6118" />
<stop
style="stop-color:#00ff00;stop-opacity:1;"
offset="1"
id="stop6120" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="40 : 589.03823 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="544.09448 : 731.89537 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<filter
id="filter2858"
inkscape:label="Black Light"
inkscape:menu="Color"
inkscape:menu-tooltip="Light areas turn to black"
x="0"
width="1"
y="0"
height="1"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix2860"
type="luminanceToAlpha"
result="result2" />
<feComposite
id="feComposite2862"
in2="SourceGraphic"
operator="arithmetic"
in="result2"
k3="2"
result="result4"
k1="0"
k2="0"
k4="0" />
<feBlend
id="feBlend2864"
in2="result2"
in="result4"
mode="multiply"
result="result3" />
<feComposite
id="feComposite2866"
in2="SourceGraphic"
operator="in"
in="result3" />
</filter>
<inkscape:perspective
id="perspective3171"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3187"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="318.14473 : 222.81636 : 1"
inkscape:vp_y="0 : 824.5649 : 0"
inkscape:vp_z="665.0467 : 891.14448 : 1"
inkscape:persp3d-origin="643.79582 : 26.363067 : 1"
id="perspective10-8" />
<inkscape:perspective
id="perspective5635"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-9"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-98"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-6"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-93"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-61"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-617"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-2"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-8"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-4"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-86"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-7"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-72"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-76"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-40"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5635-85"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5858"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6126"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6232"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6234"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6236"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6238"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6240"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6242"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6244"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6246"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6248"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6250"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6252"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6254"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6256"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6258"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6116"
id="linearGradient6260"
gradientUnits="userSpaceOnUse"
x1="432.34528"
y1="197.17313"
x2="432.34528"
y2="544.38947" />
<filter
id="filter6362"
inkscape:label="Drop shadow"
width="1.5"
height="1.5"
x="-0.25"
y="-0.25"
color-interpolation-filters="sRGB">
<feGaussianBlur
id="feGaussianBlur6364"
in="SourceAlpha"
stdDeviation="2.000000"
result="blur" />
<feColorMatrix
id="feColorMatrix6366"
result="bluralpha"
type="matrix"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 0.500000 0 " />
<feOffset
id="feOffset6368"
in="bluralpha"
dx="4.000000"
dy="4.000000"
result="offsetBlur" />
<feMerge
id="feMerge6370"
result="fbSourceGraphic">
<feMergeNode
id="feMergeNode6372"
in="offsetBlur" />
<feMergeNode
id="feMergeNode6374"
in="SourceGraphic" />
</feMerge>
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix6376" />
<feGaussianBlur
id="feGaussianBlur6378"
in="fbSourceGraphicAlpha"
stdDeviation="2.000000"
result="blur" />
<feColorMatrix
id="feColorMatrix6380"
result="bluralpha"
type="matrix"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 0.500000 0 " />
<feOffset
id="feOffset6382"
in="bluralpha"
dx="4.000000"
dy="4.000000"
result="offsetBlur" />
<feMerge
id="feMerge6384">
<feMergeNode
id="feMergeNode6386"
in="offsetBlur" />
<feMergeNode
id="feMergeNode6388"
in="fbSourceGraphic" />
</feMerge>
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6500"
id="radialGradient6506"
cx="351.53308"
cy="315.4559"
fx="351.53308"
fy="315.4559"
r="160.2041"
gradientTransform="matrix(1,0,0,1.1923151,0,-60.666924)"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
id="filter6514"
x="-0.26237151"
width="1.524743"
y="-0.21991882"
height="1.4398376"
color-interpolation-filters="sRGB">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="34.896305"
id="feGaussianBlur6516" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8"
inkscape:cx="176.68231"
inkscape:cy="67.042088"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1918"
inkscape:window-height="1059"
inkscape:window-x="1"
inkscape:window-y="20"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-924.36218)">
<g
transform="matrix(0.74291451,1.3681905e-6,-2.5135322e-6,1.3275338,5.6617776e-4,5.9557354)"
style="font-size:41.48906326px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter2858);font-family:Westminster;-inkscape-font-specification:Westminster Medium"
id="text2838" />
<flowRoot
xml:space="preserve"
id="flowRoot2850"
style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Westminster;-inkscape-font-specification:Westminster Medium"><flowRegion
id="flowRegion2852"><rect
id="rect2854"
width="144.28572"
height="312.14285"
x="441.42856"
y="234.50504" /></flowRegion><flowPara
id="flowPara2856"></flowPara></flowRoot> <path
sodipodi:type="arc"
style="opacity:0.92941176;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path6508"
sodipodi:cx="371.23105"
sodipodi:cy="282.12088"
sodipodi:rx="12.626906"
sodipodi:ry="0.50507629"
d="m 383.85795,282.12088 a 12.626906,0.50507629 0 1 1 -25.25381,0 12.626906,0.50507629 0 1 1 25.25381,0 z"
transform="matrix(0.30012437,0,0,0.30012437,-49.066035,895.4161)" />
<path
sodipodi:type="arc"
style="opacity:0.92941176;fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6362)"
id="path6360"
sodipodi:cx="404.5661"
sodipodi:cy="343.74017"
sodipodi:rx="226.77925"
sodipodi:ry="234.86047"
d="m 631.34535,343.74017 a 226.77925,234.86047 0 1 1 -453.5585,0 226.77925,234.86047 0 1 1 453.5585,0 z"
transform="matrix(0.26857896,0,0,0.26857896,-44.689287,896.40644)" />
<g
id="g6215"
transform="matrix(0.30012437,0,0,0.30012437,-66.346805,879.04485)">
<rect
ry="57.218258"
rx="35.318733"
y="265.11832"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-94"
style="opacity:0.92941176;fill:url(#linearGradient6232);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="241.34573"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-1"
style="opacity:0.92941176;fill:url(#linearGradient6234);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="217.57314"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-3"
style="opacity:0.92941176;fill:url(#linearGradient6236);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="193.80054"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-34"
style="opacity:0.92941176;fill:url(#linearGradient6238);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="312.66351"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-5"
style="opacity:0.92941176;fill:url(#linearGradient6240);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="383.98129"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-2"
style="opacity:0.92941176;fill:url(#linearGradient6242);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="360.20871"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-92"
style="opacity:0.92941176;fill:url(#linearGradient6244);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="407.75388"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-12"
style="opacity:0.92941176;fill:url(#linearGradient6246);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="455.29907"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-7"
style="opacity:0.92941176;fill:url(#linearGradient6248);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="526.61688"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-37"
style="opacity:0.92941176;fill:url(#linearGradient6250);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="502.84427"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-23"
style="opacity:0.92941176;fill:url(#linearGradient6252);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="479.07169"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-53"
style="opacity:0.92941176;fill:url(#linearGradient6254);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="431.52649"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-8"
style="opacity:0.92941176;fill:url(#linearGradient6256);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="336.4361"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-36"
style="opacity:0.92941176;fill:url(#linearGradient6258);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
ry="57.218258"
rx="35.318733"
y="288.89093"
x="295.9747"
height="17.172594"
width="272.74118"
id="rect5625-35"
style="opacity:0.92941176;fill:url(#linearGradient6260);fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
sodipodi:type="arc"
style="opacity:0.85490196;fill:url(#radialGradient6506);fill-opacity:1;stroke:none;filter:url(#filter6514)"
id="path6480"
sodipodi:cx="351.53308"
sodipodi:cy="315.4559"
sodipodi:rx="159.6041"
sodipodi:ry="190.41376"
d="m 511.13718,315.4559 a 159.6041,190.41376 0 1 1 -319.20819,0 159.6041,190.41376 0 1 1 319.20819,0 z"
transform="matrix(0.17869573,0,0,0.12175577,-15.77816,930.76469)" />
<text
xml:space="preserve"
style="font-size:43.10160828px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Westminster;-inkscape-font-specification:Westminster Medium"
x="86.535927"
y="763.60779"
id="text3222"
sodipodi:linespacing="100%"
transform="scale(0.74024198,1.3509096)"><tspan
sodipodi:role="line"
id="tspan3224"
x="86.535927"
y="763.60779"
style="font-size:55.41635132px">MIXER</tspan></text>
<text
xml:space="preserve"
style="font-size:30.92720795px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:CType;-inkscape-font-specification:CType"
x="85.677551"
y="735.35248"
id="text2834"
sodipodi:linespacing="100%"
transform="scale(0.7532075,1.3276554)"><tspan
sodipodi:role="line"
id="tspan2836"
x="85.677551"
y="735.35248">NON</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB