Merge branch 'master' of github.com:original-male/non
This commit is contained in:
commit
7b1fc6eca1
2
lib/ntk
2
lib/ntk
|
@ -1 +1 @@
|
||||||
Subproject commit 92365eca0f9a6f054abc70489c009aba0fcde0ff
|
Subproject commit dae177189b12f74ea01ac2389b76326c06d9be78
|
|
@ -48,21 +48,23 @@ Jonathan Moore Liles <a href="mailto:male@tuxfamily.org"><male@tuxfamily.org&
|
||||||
|
|
||||||
<ul><li><a href="#n:1.2.3.1.1.">1.2.3.1.1. OSC Control</a>
|
<ul><li><a href="#n:1.2.3.1.1.">1.2.3.1.1. OSC Control</a>
|
||||||
|
|
||||||
<li><a href="#n:1.2.3.1.2.">1.2.3.1.2. Manipulation</a>
|
<li><a href="#n:1.2.3.1.2.">1.2.3.1.2. MIDI Control</a>
|
||||||
|
|
||||||
<li><a href="#n:1.2.3.1.3.">1.2.3.1.3. Module Parameter Editor</a>
|
<li><a href="#n:1.2.3.1.3.">1.2.3.1.3. Manipulation</a>
|
||||||
|
|
||||||
<li><a href="#n:1.2.3.1.4.">1.2.3.1.4. Controls</a>
|
<li><a href="#n:1.2.3.1.4.">1.2.3.1.4. Module Parameter Editor</a>
|
||||||
|
|
||||||
<ul><li><a href="#n:1.2.3.1.4.1.">1.2.3.1.4.1. Control Voltages</a>
|
<li><a href="#n:1.2.3.1.5.">1.2.3.1.5. Controls</a>
|
||||||
|
|
||||||
</ul><li><a href="#n:1.2.3.1.5.">1.2.3.1.5. Spatialization </a>
|
<ul><li><a href="#n:1.2.3.1.5.1.">1.2.3.1.5.1. Control Voltages</a>
|
||||||
|
|
||||||
<ul><li><a href="#n:1.2.3.1.5.1.">1.2.3.1.5.1. Spatializer Module</a>
|
</ul><li><a href="#n:1.2.3.1.6.">1.2.3.1.6. Spatialization </a>
|
||||||
|
|
||||||
<ul><li><a href="#n:1.2.3.1.5.1.1.">1.2.3.1.5.1.1. Reverb Routing</a>
|
<ul><li><a href="#n:1.2.3.1.6.1.">1.2.3.1.6.1. Spatializer Module</a>
|
||||||
|
|
||||||
</ul><li><a href="#n:1.2.3.1.5.2.">1.2.3.1.5.2. LADSPA Plugins</a>
|
<ul><li><a href="#n:1.2.3.1.6.1.1.">1.2.3.1.6.1.1. Reverb Routing</a>
|
||||||
|
|
||||||
|
</ul><li><a href="#n:1.2.3.1.6.2.">1.2.3.1.6.2. LADSPA Plugins</a>
|
||||||
|
|
||||||
</ul></ul></ul></ul><li><a href="#n:1.3.">1.3. Spatialization Console</a>
|
</ul></ul></ul></ul><li><a href="#n:1.3.">1.3. Spatialization Console</a>
|
||||||
|
|
||||||
|
@ -225,7 +227,7 @@ A strip is focused when you click on it. Focus can be moved among strips with th
|
||||||
</p>
|
</p>
|
||||||
<h3 id="n:1.2.2.">1.2.2. Control</h3>
|
<h3 id="n:1.2.2.">1.2.2. Control</h3>
|
||||||
<p>
|
<p>
|
||||||
The focused strip can be moved in the display order via the <tt>[</tt> and <tt>]</tt> keys. <tt>Delete</tt> removes a strip (with confirmation dialog). <tt>n</tt> and <tt>w</tt> set the focused strip's width to <i>narrow</i> or <i>wide</i>, respectively, and <tt>f</tt> and <tt>s</tt> switch between <i>fader</i> and <i>signal</i> views. The strip's context menu can be invoked without the mouse by hitting the <tt>Menu</tt> key (assuming your keyboard has one).
|
The focused strip can be moved in the display order via the <tt>[</tt> and <tt>]</tt> keys. <tt>Delete</tt> removes a strip (with confirmation dialog). <tt>n</tt> and <tt>w</tt> set the focused strip's width to <i>narrow</i> or <i>wide</i>, respectively, and <tt>f</tt> and <tt>s</tt> switch between <i>fader</i> and <i>signal</i> views. The strip's context menu can be invoked without the mouse by hitting the <tt>Menu</tt> key (assuming your keyboard has one).
|
||||||
</p>
|
</p>
|
||||||
<h3 id="n:1.2.3.">1.2.3. Signal Chain</h3>
|
<h3 id="n:1.2.3.">1.2.3. Signal Chain</h3>
|
||||||
<p>
|
<p>
|
||||||
|
@ -305,9 +307,25 @@ If same module/plugin is used twice in a signal chain (e.g. multiple Gain stages
|
||||||
For the second instance of the Gain module on the strip named 'Foo'.
|
For the second instance of the Gain module on the strip named 'Foo'.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
There's a possibility to get exact OSC path for module controls. For this you need to switch strip mode to 'Signl', right click a module, for example 'Gain', and open 'Edit parameters' dialog. OSC path will be shown in a statusbar of the main window when you hover a parameter.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
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.
|
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.
|
||||||
</p>
|
</p>
|
||||||
<h5 id="n:1.2.3.1.2.">1.2.3.1.2. Manipulation</h5>
|
<h5 id="n:1.2.3.1.2.">1.2.3.1.2. MIDI Control</h5>
|
||||||
|
<p>
|
||||||
|
Automatic translation between MIDI and Non's OSC Signals can be achieved by adding the headless program <tt>non-midi-mapper</tt> (included in the Non-Mixer distribution) to an NSM session.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Non-MIDI-Mapper provides JACK MIDI input and output ports that can be connected to a suitable controller device.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In Non-Mixer, the <tt>Remote Control/Start Learning</tt> menu item enters learning mode in which Non Mixer can be taught which controls to associated with which MIDI messages by clicking a control in Non-Mixer and moving the desired control on the MIDI device. <tt>Remote Control/End Learning</tt> ends the learning session.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The mapping will be saved with the NSM session.
|
||||||
|
</p>
|
||||||
|
<h5 id="n:1.2.3.1.3.">1.2.3.1.3. Manipulation</h5>
|
||||||
<p>
|
<p>
|
||||||
Left-clicking on a module brings up a Module Parameter Editor window for the selected module.
|
Left-clicking on a module brings up a Module Parameter Editor window for the selected module.
|
||||||
</p>
|
</p>
|
||||||
|
@ -323,7 +341,7 @@ Control+Right-clicking on a module causes it to be removed from the chain (modul
|
||||||
<p>
|
<p>
|
||||||
The focused module may also be controlled via the keyboard. <tt>Menu</tt> brings up the context menu for the focused module. <tt>Space</tt> opens the module parameter editor, <tt>b</tt> toggles the bypassed state, and <tt>Delete</tt> removes the module from the chain (without confirmation!). <tt>Control-X</tt>, <tt>Control-C</tt> and <tt>Control-V</tt>, 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.
|
The focused module may also be controlled via the keyboard. <tt>Menu</tt> brings up the context menu for the focused module. <tt>Space</tt> opens the module parameter editor, <tt>b</tt> toggles the bypassed state, and <tt>Delete</tt> removes the module from the chain (without confirmation!). <tt>Control-X</tt>, <tt>Control-C</tt> and <tt>Control-V</tt>, 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.
|
||||||
</p>
|
</p>
|
||||||
<h5 id="n:1.2.3.1.3.">1.2.3.1.3. Module Parameter Editor</h5>
|
<h5 id="n:1.2.3.1.4.">1.2.3.1.4. Module Parameter Editor</h5>
|
||||||
<center><div class="fig image"><table id="Fig.1.5" border=1>
|
<center><div class="fig image"><table id="Fig.1.5" border=1>
|
||||||
<caption>
|
<caption>
|
||||||
<strong>Fig. 1.5.</strong> Module Parameter Editor
|
<strong>Fig. 1.5.</strong> Module Parameter Editor
|
||||||
|
@ -337,7 +355,7 @@ The Module Parameter Editor is used to alter the values of a module's parameters
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
<h5 id="n:1.2.3.1.4.">1.2.3.1.4. Controls</h5>
|
<h5 id="n:1.2.3.1.5.">1.2.3.1.5. Controls</h5>
|
||||||
<center><div class="fig image"><table id="Fig.1.6" border=1>
|
<center><div class="fig image"><table id="Fig.1.6" border=1>
|
||||||
<caption>
|
<caption>
|
||||||
<strong>Fig. 1.6.</strong> Control View
|
<strong>Fig. 1.6.</strong> Control View
|
||||||
|
@ -356,7 +374,7 @@ events. Hold down the `Ctrl` key while scrolling the mousewheel to
|
||||||
achieve finer resolution.
|
achieve finer resolution.
|
||||||
</td></table>
|
</td></table>
|
||||||
</div>
|
</div>
|
||||||
<h6 id="n:1.2.3.1.4.1.">1.2.3.1.4.1. Control Voltages</h6>
|
<h6 id="n:1.2.3.1.5.1.">1.2.3.1.5.1. Control Voltages</h6>
|
||||||
<p>
|
<p>
|
||||||
The control voltage concept should be familiar to anyone who has 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 separate the control data streams.
|
The control voltage concept should be familiar to anyone who has 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 separate the control data streams.
|
||||||
</p>
|
</p>
|
||||||
|
@ -375,8 +393,8 @@ of parameter automation, as LADSPA plugins are incapable of
|
||||||
processing Control Voltage signals at full audio resolution anyway.
|
processing Control Voltage signals at full audio resolution anyway.
|
||||||
</td></table>
|
</td></table>
|
||||||
</div>
|
</div>
|
||||||
<h5 id="n:1.2.3.1.5.">1.2.3.1.5. Spatialization </h5>
|
<h5 id="n:1.2.3.1.6.">1.2.3.1.6. Spatialization </h5>
|
||||||
<h6 id="n:1.2.3.1.5.1.">1.2.3.1.5.1. Spatializer Module</h6>
|
<h6 id="n:1.2.3.1.6.1.">1.2.3.1.6.1. Spatializer Module</h6>
|
||||||
<center><div class="fig image"><table border=1>
|
<center><div class="fig image"><table border=1>
|
||||||
<tr><td><img src="spatializer-module.png" alt="fig. "></td></tr>
|
<tr><td><img src="spatializer-module.png" alt="fig. "></td></tr>
|
||||||
</table></div></center>
|
</table></div></center>
|
||||||
|
@ -404,7 +422,7 @@ All Spatializer Module instances will present controls and aziumuth, elevation,
|
||||||
<p>
|
<p>
|
||||||
A Spatializer Module fed stereo input will perform stereo encoding and will present a <i>Width</i> control.
|
A Spatializer Module fed stereo input will perform stereo encoding and will present a <i>Width</i> control.
|
||||||
</p>
|
</p>
|
||||||
<h7 id="n:1.2.3.1.5.1.1.">1.2.3.1.5.1.1. Reverb Routing</h7>
|
<h7 id="n:1.2.3.1.6.1.1.">1.2.3.1.6.1.1. Reverb Routing</h7>
|
||||||
<p>
|
<p>
|
||||||
The Spatializer module is intended to work with an external reverb engine having Ambisonics B-Format inputs for early reflections and a Mono input for reverb tail (and, of course, B-Format outputs).
|
The Spatializer module is intended to work with an external reverb engine having Ambisonics B-Format inputs for early reflections and a Mono input for reverb tail (and, of course, B-Format outputs).
|
||||||
</p>
|
</p>
|
||||||
|
@ -420,7 +438,7 @@ I have crafted several jconvolver config files that meet these specifications. T
|
||||||
<p>
|
<p>
|
||||||
The main outputs of the strip should go to a master bus, into which the output of the reverb engine is also fed.
|
The main outputs of the strip should go to a master bus, into which the output of the reverb engine is also fed.
|
||||||
</p>
|
</p>
|
||||||
<h6 id="n:1.2.3.1.5.2.">1.2.3.1.5.2. LADSPA Plugins</h6>
|
<h6 id="n:1.2.3.1.6.2.">1.2.3.1.6.2. LADSPA Plugins</h6>
|
||||||
<p>
|
<p>
|
||||||
There are several Ambisonics panners/encoders released as LADSPA plugins. When one of these plugins is added to a strip, Non Mixer will detect its parameter signature and create a Spatialization Control for it just as with the Spatializer Module.
|
There are several Ambisonics panners/encoders released as LADSPA plugins. When one of these plugins is added to a strip, Non Mixer will detect its parameter signature and create a Spatialization Control for it just as with the Spatializer Module.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -215,7 +215,7 @@
|
||||||
respectively, and `f` and `s` switch between /fader/ and /signal/
|
respectively, and `f` and `s` switch between /fader/ and /signal/
|
||||||
views. The strip's context menu can be invoked without the mouse by
|
views. The strip's context menu can be invoked without the mouse by
|
||||||
hitting the `Menu` key (assuming your keyboard has one).
|
hitting the `Menu` key (assuming your keyboard has one).
|
||||||
|
|
||||||
::: Signal Chain
|
::: Signal Chain
|
||||||
|
|
||||||
The signal chain view of a mixer strip provides a way to view and
|
The signal chain view of a mixer strip provides a way to view and
|
||||||
|
@ -294,11 +294,34 @@
|
||||||
|
|
||||||
For the second instance of the Gain module on the strip named 'Foo'.
|
For the second instance of the Gain module on the strip named 'Foo'.
|
||||||
|
|
||||||
|
There's a possibility to get exact OSC path for module controls.
|
||||||
|
For this you need to switch strip mode to 'Signl', right click a
|
||||||
|
module, for example 'Gain', and open 'Edit parameters' dialog. OSC
|
||||||
|
path will be shown in a statusbar of the main window when you
|
||||||
|
hover a parameter.
|
||||||
|
|
||||||
Non-DAW accesses these same signals via a more advanced signal
|
Non-DAW accesses these same signals via a more advanced signal
|
||||||
routing layer on top of OSC. Any module parameter is easily
|
routing layer on top of OSC. Any module parameter is easily
|
||||||
controlled via Control Sequences in Non-DAW without the need to
|
controlled via Control Sequences in Non-DAW without the need to
|
||||||
specify an OSC URL.
|
specify an OSC URL.
|
||||||
|
|
||||||
|
|
||||||
|
::::: MIDI Control
|
||||||
|
|
||||||
|
Automatic translation between MIDI and Non's OSC Signals can be
|
||||||
|
achieved by adding the headless program `non-midi-mapper` (included in the
|
||||||
|
Non-Mixer distribution) to an NSM session.
|
||||||
|
|
||||||
|
Non-MIDI-Mapper provides JACK MIDI input and output ports that can be
|
||||||
|
connected to a suitable controller device.
|
||||||
|
|
||||||
|
In Non-Mixer, the `Remote Control\/Start Learning` menu item enters learning
|
||||||
|
mode in which Non Mixer can be taught which controls to associated with which
|
||||||
|
MIDI messages by clicking a control in Non-Mixer and moving the desired control
|
||||||
|
on the MIDI device. `Remote Control\/End Learning` ends the learning session.
|
||||||
|
|
||||||
|
The mapping will be saved with the NSM session.
|
||||||
|
|
||||||
::::: Manipulation
|
::::: Manipulation
|
||||||
|
|
||||||
Left-clicking on a module brings up a Module Parameter Editor window
|
Left-clicking on a module brings up a Module Parameter Editor window
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Non Mixer
|
Name=Non Mixer
|
||||||
Comment=Modular Digital Audio Workstation - Mixer
|
Comment=Modular Digital Audio Workstation - Mixer
|
||||||
|
Comment[fr]=Station de travail audio-numérique modulaire - Mixeur
|
||||||
Exec=@BIN_PATH@/non-mixer
|
Exec=@BIN_PATH@/non-mixer
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
@ -1085,7 +1085,7 @@ namespace OSC
|
||||||
i != _translations.end();
|
i != _translations.end();
|
||||||
i++ )
|
i++ )
|
||||||
{
|
{
|
||||||
if ( ! strcmp( i->second.path.c_str(), path ) )
|
if ( path && ! strcmp( i->second.path.c_str(), path ) )
|
||||||
{
|
{
|
||||||
/* found it */
|
/* found it */
|
||||||
if ( !i->second.suppress_feedback && i->second.current_value != v )
|
if ( !i->second.suppress_feedback && i->second.current_value != v )
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Non Sequencer
|
Name=Non Sequencer
|
||||||
Comment=Realtime MIDI sequencer for JACK MIDI
|
Comment=Realtime MIDI sequencer for JACK MIDI
|
||||||
|
Comment[fr]=Séquenceur MIDI temps-réel pour JACK MIDI
|
||||||
Exec=@BIN_PATH@/non-sequencer
|
Exec=@BIN_PATH@/non-sequencer
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Non Session Manager
|
Name=Non Session Manager
|
||||||
Comment=Audio session manager from the land of Non
|
Comment=Audio session manager from the land of Non
|
||||||
|
Comment[fr]=Gestionnaire de session audio pour les terres de Non
|
||||||
Exec=@BIN_PATH@/non-session-manager
|
Exec=@BIN_PATH@/non-session-manager
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Non Timeline
|
Name=Non Timeline
|
||||||
Comment=Modular Digital Audio Workstation - Timeline Editor
|
Comment=Modular Digital Audio Workstation - Timeline Editor
|
||||||
|
Comment[fr]=Station de travail audio-numérique modulaire - Éditeur à ligne temporelle
|
||||||
Exec=@BIN_PATH@/non-timeline
|
Exec=@BIN_PATH@/non-timeline
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
@ -108,8 +108,8 @@ src/main.C
|
||||||
## use = [ 'fl_widgets', 'nonlib'],
|
## use = [ 'fl_widgets', 'nonlib'],
|
||||||
install_path = '${BINDIR}')
|
install_path = '${BINDIR}')
|
||||||
|
|
||||||
bld.install_files('${BINDIR}', 'import-ardour-session', chmod=0o0555,
|
bld.install_files('${BINDIR}', 'bin/import-ardour-session', chmod=0o0555,
|
||||||
cwd=bld.path.find_dir('bin'), relative_trick=True)
|
relative_trick=True)
|
||||||
|
|
||||||
bld( features = 'subst',
|
bld( features = 'subst',
|
||||||
source = 'non-timeline.desktop.in',
|
source = 'non-timeline.desktop.in',
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
from waflib import Task
|
||||||
|
from waflib.TaskGen import extension
|
||||||
|
|
||||||
|
class ntk_fluid(Task.Task):
|
||||||
|
color = 'BLUE'
|
||||||
|
ext_out = ['.h']
|
||||||
|
run_str = '${NTK_FLUID} -c -o ${TGT[0].abspath()} -h ${TGT[1].abspath()} ${SRC}'
|
||||||
|
|
||||||
|
@extension('.fl')
|
||||||
|
def fluid(self, node):
|
||||||
|
"""add the .fl to the source list; the cxx file generated will be compiled when possible"""
|
||||||
|
cpp = node.change_ext('.C')
|
||||||
|
hpp = node.change_ext('.H')
|
||||||
|
self.create_task('ntk_fluid', node, [cpp, hpp])
|
||||||
|
|
||||||
|
if 'cxx' in self.features:
|
||||||
|
self.source.append(cpp)
|
||||||
|
|
7
wscript
7
wscript
|
@ -31,13 +31,18 @@ def configure(conf):
|
||||||
conf.load('compiler_c')
|
conf.load('compiler_c')
|
||||||
conf.load('compiler_cxx')
|
conf.load('compiler_cxx')
|
||||||
conf.load('gnu_dirs')
|
conf.load('gnu_dirs')
|
||||||
conf.load('ntk_fluid')
|
conf.load('ntk_fluid',tooldir='tools.waf')
|
||||||
conf.load('gccdeps')
|
conf.load('gccdeps')
|
||||||
conf.line_just = 52
|
conf.line_just = 52
|
||||||
|
|
||||||
conf.env['LIB_PTHREAD'] = ['pthread']
|
conf.env['LIB_PTHREAD'] = ['pthread']
|
||||||
conf.env['LIB_DL'] = ['dl']
|
conf.env['LIB_DL'] = ['dl']
|
||||||
conf.env['LIB_M'] = ['m']
|
conf.env['LIB_M'] = ['m']
|
||||||
|
|
||||||
|
if Options.options.sse:
|
||||||
|
if os.system("grep -q '^flags.*\<sse2\>' /proc/cpuinfo"):
|
||||||
|
Options.options.sse = 0
|
||||||
|
print( "Processor lacks sse, disabling..." )
|
||||||
|
|
||||||
# NTK_EXTRA_FLAGS=''
|
# NTK_EXTRA_FLAGS=''
|
||||||
# if not Options.options.use_system_ntk:
|
# if not Options.options.use_system_ntk:
|
||||||
|
|
Loading…
Reference in New Issue