Merge branch 'master' of github.com:original-male/non

This commit is contained in:
falkTX 2019-09-29 01:07:29 +01:00
commit 7b1fc6eca1
12 changed files with 91 additions and 23 deletions

@ -1 +1 @@
Subproject commit 92365eca0f9a6f054abc70489c009aba0fcde0ff Subproject commit dae177189b12f74ea01ac2389b76326c06d9be78

View File

@ -48,21 +48,23 @@ Jonathan Moore Liles <a href="mailto:male@tuxfamily.org">&lt;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>

View File

@ -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

View File

@ -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

View File

@ -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 )

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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',

18
tools.waf/ntk_fluid.py Normal file
View File

@ -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)

BIN
waf vendored

Binary file not shown.

View File

@ -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: