diff options
author | David Robillard <d@drobilla.net> | 2007-07-27 04:07:06 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-07-27 04:07:06 +0000 |
commit | 25b610f12b8e46b48e8eda252d029da211ec6ad5 (patch) | |
tree | 520d802b199131b3376e6cae42c856efb6493fe7 | |
parent | 972a3e8476687951e8af4e9c1d4f25014dab1b82 (diff) | |
download | ingen-25b610f12b8e46b48e8eda252d029da211ec6ad5.tar.gz ingen-25b610f12b8e46b48e8eda252d029da211ec6ad5.tar.bz2 ingen-25b610f12b8e46b48e8eda252d029da211ec6ad5.zip |
Control port slider functionality (when not in edit more, or holding down control).
Known issue: Control modifier toggling currently only works when pointer on canvas (not a module or port).
git-svn-id: http://svn.drobilla.net/lad/ingen@644 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r-- | patches/saw_lp.ingen.ttl | 105 | ||||
-rw-r--r-- | src/libs/gui/Port.cpp | 22 | ||||
-rw-r--r-- | src/libs/gui/Port.hpp | 2 |
3 files changed, 78 insertions, 51 deletions
diff --git a/patches/saw_lp.ingen.ttl b/patches/saw_lp.ingen.ttl index 50ddef16..2f50b01a 100644 --- a/patches/saw_lp.ingen.ttl +++ b/patches/saw_lp.ingen.ttl @@ -2,13 +2,14 @@ @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix ingen: <http://drobilla.net/ns/ingen#> . @prefix ingenuity: <http://drobilla.net/ns/ingenuity#> . -@prefix lv2: <http://lv2plug.in/ontology#> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <> + ingenuity:canvas-x 1.54E3; ingen:node [ - ingenuity:canvas-x 1495.2; + ingenuity:canvas-x E3; ingen:port _:n29, [ ingen:name "SecondInput"; ingen:dataType "ingen:audio"; @@ -20,13 +21,13 @@ ingen:dataType "ingen:audio"; ingen:name "FirstInput" ]; - ingenuity:canvas-y 1172.5; + ingenuity:canvas-y 1.1725E3; ingen:plugin <ladspa:1668>; ingen:name "voice_amp"; a "ingen:Node" ], [ - ingenuity:canvas-x 1374.0; - ingenuity:canvas-y 1044.2; + ingenuity:canvas-x 1.374E3; + ingenuity:canvas-y 1.0E3; ingen:plugin <ladspa:1641>; ingen:port _:n25, [ ingen:connectedTo _:n19; @@ -41,10 +42,10 @@ ingen:plugin <ingen:note_node>; ingen:port _:n22, _:n21, [ a "ingen:OutputPort"; - ingen:maximum 1.0; + ingen:maximum 1.0E0; ingen:dataType "ingen:audio"; ingen:name "Velocity"; - ingen:minimum 0.0 + ingen:minimum 0.0E0 ], _:n19, [ ingen:connectedTo _:n32; ingen:dataType "ingen:midi"; @@ -52,8 +53,8 @@ a "ingen:InputPort" ]; ingen:name "note_in"; - ingenuity:canvas-x 1258.2; - ingenuity:canvas-y 1087.2 + ingenuity:canvas-x E3; + ingenuity:canvas-y 1.0E3 ], [ ingen:port _:n16, [ a "ingen:InputPort"; @@ -62,52 +63,52 @@ ingen:dataType "ingen:audio" ], [ ingen:connectedTo _:n30; - ingen:minimum 0.0; - ingen:value 0.0; + ingen:minimum 1.1920928955E-7; + ingen:value 2.0000000298E-1; a "ingen:InputPort"; - ingen:maximum 0.0; + ingen:maximum 1.0E0; ingen:name "Gain"; ingen:dataType "ingen:control" ]; ingen:plugin <ladspa:1067>; - ingenuity:canvas-x 1932.0; + ingenuity:canvas-x 1.932E3; a "ingen:Node"; - ingenuity:canvas-y 1151.0; + ingenuity:canvas-y 1.151E3; ingen:name "master_amp" ], [ ingen:plugin <ladspa:1680>; a "ingen:Node"; ingen:name "env"; - ingenuity:canvas-x 1364.5; - ingenuity:canvas-y 1154.2; + ingenuity:canvas-x 1.3645E3; + ingenuity:canvas-y E3; ingen:port _:n12, [ - ingen:minimum 0.0; + ingen:minimum 0.0E0; a "ingen:InputPort"; - ingen:value 0.0; + ingen:value 2.0E0; ingen:name "ReleaseTime(s)"; ingen:dataType "ingen:control"; - ingen:maximum 0.0 + ingen:maximum 0.0E0 ], [ - ingen:value 1.0; - ingen:minimum 0.0; + ingen:value 1.0000000149E-1; + ingen:minimum 0.0E0; a "ingen:InputPort"; - ingen:maximum 1.0; + ingen:maximum 1.0E0; ingen:name "SustainLevel"; ingen:dataType "ingen:control" ], [ ingen:dataType "ingen:control"; ingen:name "DecayTime(s)"; - ingen:minimum 0.0; - ingen:value 0.0; + ingen:minimum 0.0E0; + ingen:value 0.0E0; a "ingen:InputPort"; - ingen:maximum 0.0 + ingen:maximum 0.0E0 ], [ - ingen:value 0.0; - ingen:minimum 0.0; + ingen:value 0.0E0; + ingen:minimum 0.0E0; ingen:dataType "ingen:control"; ingen:name "AttackTime(s)"; a "ingen:InputPort"; - ingen:maximum 0.0 + ingen:maximum 0.0E0 ], [ ingen:connectedTo _:n22; a "ingen:InputPort"; @@ -121,9 +122,9 @@ ] ], [ ingen:plugin <ladspa:1672>; - ingenuity:canvas-y 1179.8; + ingenuity:canvas-y 1.1798E3; ingen:name "4PoleLow-PassFilterWithResonance(FCRCIA)"; - ingenuity:canvas-x 1617.0; + ingenuity:canvas-x 1.617E3; ingen:port _:n4, [ a "ingen:InputPort"; ingen:connectedTo _:n29; @@ -131,42 +132,44 @@ ingen:dataType "ingen:audio" ], [ ingen:name "Resonance"; - ingen:value 3.3; + ingen:value 5.0E-1; ingen:dataType "ingen:control"; - ingen:minimum 0.0; + ingen:minimum 0.0E0; a "ingen:InputPort"; - ingen:maximum 4.0 + ingen:maximum 4.0E0 ], [ - ingen:maximum 24000.0; + ingen:maximum 2.4E4; ingen:dataType "ingen:control"; - ingen:value 356.6; + ingen:value 1.1313E3; ingen:connectedTo _:n31; - ingen:minimum 1.0; + ingen:minimum 9.9999994E-1; a "ingen:InputPort"; ingen:name "CutoffFrequency" ]; a "ingen:Node" ]; + ingen:name "saw_lp"; ingen:port [ - ingenuity:canvas-x 2058.8; + ingenuity:canvas-x 2.0588E3; ingen:connectedTo _:n16; a "ingen:OutputPort"; - ingenuity:canvas-y 1173.8; + ingenuity:canvas-y 1.1738E3; ingen:dataType "ingen:audio"; ingen:name "output" ], _:n32, _:n31, _:n30; ingen:polyphony 1; - a ingen:Patch . + a ingen:Patch; + ingenuity:canvas-y 1.167E3 . _:n31 - ingenuity:canvas-y 1080.5; + ingenuity:canvas-y 1.0805E3; ingen:dataType "ingen:control"; - ingenuity:canvas-x 1526.8; - ingen:value 329.7; + ingenuity:canvas-x 1.5268E3; + ingen:value 3.29700012207E2, E2; ingen:name "cutoff"; - ingen:minimum 10.0; + ingen:minimum 1.0E1; a "ingen:InputPort"; - ingen:maximum 10000.0 . + ingen:maximum 1.0E4 . _:n12 a "ingen:OutputPort"; @@ -175,15 +178,15 @@ _:n12 _:n21 a "ingen:OutputPort"; - ingen:default 0.0; + ingen:default 0.0E0; ingen:name "Gate"; ingen:toggled 1; ingen:dataType "ingen:audio" . _:n32 a "ingen:InputPort"; - ingenuity:canvas-y 1125.0; - ingenuity:canvas-x 1145.2; + ingenuity:canvas-y 1.125E3; + ingenuity:canvas-x E3; ingen:dataType "ingen:midi"; ingen:name "midi_input" . @@ -201,14 +204,14 @@ _:n22 ingen:dataType "ingen:audio"; ingen:toggled 1; ingen:name "Trigger"; - ingen:default 0.0; + ingen:default 0.0E0; a "ingen:OutputPort" . _:n30 a "ingen:InputPort"; - ingen:value 0.2; - ingenuity:canvas-y 1076.2; - ingenuity:canvas-x 1833.0; + ingen:value 2.0000000298E-1; + ingenuity:canvas-y 1.0E3; + ingenuity:canvas-x 1.833E3; ingen:name "amp"; ingen:dataType "ingen:control" . diff --git a/src/libs/gui/Port.cpp b/src/libs/gui/Port.cpp index cd13d89d..aa63af14 100644 --- a/src/libs/gui/Port.cpp +++ b/src/libs/gui/Port.cpp @@ -66,5 +66,27 @@ Port::renamed() } +void +Port::set_control(float value) +{ + if (_port_model->is_control()) { + float min = 0.0f; + float max = 1.0f; + + const Atom& min_atom = _port_model->get_metadata("ingen:minimum"); + const Atom& max_atom = _port_model->get_metadata("ingen:maximum"); + if (min_atom.type() == Atom::FLOAT && max_atom.type() == Atom::FLOAT) { + min = min_atom.get_float(); + max = max_atom.get_float(); + } + + App::instance().engine()->set_port_value(_port_model->path(), + min + (value * (max-min))); + + FlowCanvas::Port::set_control(value); + } +} + + } // namespace GUI } // namespace Ingen diff --git a/src/libs/gui/Port.hpp b/src/libs/gui/Port.hpp index b381c44b..d91c963a 100644 --- a/src/libs/gui/Port.hpp +++ b/src/libs/gui/Port.hpp @@ -43,6 +43,8 @@ public: SharedPtr<PortModel> model() const { return _port_model; } + virtual void set_control(float value); + private: void on_menu_destroy(); |