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

pull/146/head
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>
<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>
@ -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'.
</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.
</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>
Left-clicking on a module brings up a Module Parameter Editor window for the selected module.
</p>
@ -323,7 +341,7 @@ Control+Right-clicking on a module causes it to be removed from the chain (modul
<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.
</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>
<caption>
<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>
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>
<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>
<caption>
<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.
</td></table>
</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>
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>
@ -375,8 +393,8 @@ of parameter automation, as LADSPA plugins are incapable of
processing Control Voltage signals at full audio resolution anyway.
</td></table>
</div>
<h5 id="n:1.2.3.1.5.">1.2.3.1.5. Spatialization </h5>
<h6 id="n:1.2.3.1.5.1.">1.2.3.1.5.1. Spatializer Module</h6>
<h5 id="n:1.2.3.1.6.">1.2.3.1.6. Spatialization </h5>
<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>
<tr><td><img src="spatializer-module.png" alt="fig. "></td></tr>
</table></div></center>
@ -404,7 +422,7 @@ All Spatializer Module instances will present controls and aziumuth, elevation,
<p>
A Spatializer Module fed stereo input will perform stereo encoding and will present a <i>Width</i> control.
</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>
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>
@ -420,7 +438,7 @@ I have crafted several jconvolver config files that meet these specifications. T
<p>
The main outputs of the strip should go to a master bus, into which the output of the reverb engine is also fed.
</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>
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>

View File

@ -294,11 +294,34 @@
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
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.
::::: 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
Left-clicking on a module brings up a Module Parameter Editor window

View File

@ -1,6 +1,7 @@
[Desktop Entry]
Name=Non Mixer
Comment=Modular Digital Audio Workstation - Mixer
Comment[fr]=Station de travail audio-numérique modulaire - Mixeur
Exec=@BIN_PATH@/non-mixer
Terminal=false
Type=Application

View File

@ -1085,7 +1085,7 @@ namespace OSC
i != _translations.end();
i++ )
{
if ( ! strcmp( i->second.path.c_str(), path ) )
if ( path && ! strcmp( i->second.path.c_str(), path ) )
{
/* found it */
if ( !i->second.suppress_feedback && i->second.current_value != v )

View File

@ -1,6 +1,7 @@
[Desktop Entry]
Name=Non Sequencer
Comment=Realtime MIDI sequencer for JACK MIDI
Comment[fr]=Séquenceur MIDI temps-réel pour JACK MIDI
Exec=@BIN_PATH@/non-sequencer
Terminal=false
Type=Application

View File

@ -1,6 +1,7 @@
[Desktop Entry]
Name=Non Session Manager
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
Terminal=false
Type=Application

View File

@ -1,6 +1,7 @@
[Desktop Entry]
Name=Non Timeline
Comment=Modular Digital Audio Workstation - Timeline Editor
Comment[fr]=Station de travail audio-numérique modulaire - Éditeur à ligne temporelle
Exec=@BIN_PATH@/non-timeline
Terminal=false
Type=Application

View File

@ -108,8 +108,8 @@ src/main.C
## use = [ 'fl_widgets', 'nonlib'],
install_path = '${BINDIR}')
bld.install_files('${BINDIR}', 'import-ardour-session', chmod=0o0555,
cwd=bld.path.find_dir('bin'), relative_trick=True)
bld.install_files('${BINDIR}', 'bin/import-ardour-session', chmod=0o0555,
relative_trick=True)
bld( features = 'subst',
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,7 +31,7 @@ def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')
conf.load('ntk_fluid')
conf.load('ntk_fluid',tooldir='tools.waf')
conf.load('gccdeps')
conf.line_just = 52
@ -39,6 +39,11 @@ def configure(conf):
conf.env['LIB_DL'] = ['dl']
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=''
# if not Options.options.use_system_ntk:
# print 'Using bundled NTK'