Add output control port to a-exp for input level
authorJohannes Mueller <github@johannes-mueller.org>
Fri, 4 Aug 2017 15:10:42 +0000 (17:10 +0200)
committerJohannes Mueller <github@johannes-mueller.org>
Sat, 12 May 2018 17:49:18 +0000 (19:49 +0200)
libs/plugins/a-exp.lv2/a-exp#stereo.ttl.in
libs/plugins/a-exp.lv2/a-exp.c
libs/plugins/a-exp.lv2/a-exp.ttl.in

index 99796abc087faecef1aa8b94a1ae7fc83fc40441..d26a2f2d5c23008cb5a98cddc3937ef13f592a29 100644 (file)
         unit:unit unit:db ;
     ] ,
     [
-        a lv2:InputPort, lv2:ControlPort ;
+        a lv2:OutputPort, lv2:ControlPort ;
         lv2:index 8 ;
+        lv2:name "Input Level" ;
+        lv2:symbol "inlevel" ;
+        lv2:default -45.000000 ;
+        lv2:minimum -45.000000 ;
+        lv2:maximum 0.000000 ;
+        unit:unit unit:db ;
+    ] ,
+    [
+        a lv2:InputPort, lv2:ControlPort ;
+        lv2:index 9 ;
         lv2:name "Sidechain" ;
         lv2:symbol "sidech" ;
         lv2:default 0.000000 ;
     ] ,
     [
         a lv2:InputPort, lv2:ControlPort ;
-        lv2:index 9 ;
+        lv2:index 10 ;
         lv2:name "Enable" ;
         lv2:symbol "enable" ;
         lv2:default 1 ;
 
     lv2:port [
         a lv2:InputPort, lv2:AudioPort ;
-        lv2:index 10 ;
+        lv2:index 11 ;
         lv2:symbol "lv2_audio_in_1" ;
         lv2:name "Audio Input 1" ;
     ] ,
     [
         a lv2:InputPort, lv2:AudioPort ;
-        lv2:index 11 ;
+        lv2:index 12 ;
         lv2:symbol "lv2_audio_in_2" ;
         lv2:name "Audio Input 2" ;
     ] ,
     [
         a lv2:InputPort, lv2:AudioPort ;
-        lv2:index 12 ;
+        lv2:index 13 ;
         lv2:symbol "lv2_sidechain_in" ;
         lv2:name "Sidechain Input" ;
         lv2:portProperty lv2:isSideChain ;
     ],
     [
         a lv2:OutputPort, lv2:AudioPort ;
-        lv2:index 13 ;
+        lv2:index 14 ;
         lv2:symbol "lv2_audio_out_1" ;
         lv2:name "Audio Output 1" ;
     ],
     [
         a lv2:OutputPort, lv2:AudioPort ;
-        lv2:index 14 ;
+        lv2:index 15 ;
         lv2:symbol "lv2_audio_out_2" ;
         lv2:name "Audio Output 2" ;
     ] ;
index bc5bc29ce6e8d8a6b82da9cbe4e32150356073c9..8105c594c3cecd87018f6326f083fbc7e80ad4e7 100644 (file)
@@ -51,6 +51,7 @@ typedef enum {
 
        AEXP_GAINR,
        AEXP_OUTLEVEL,
+       AEXP_INLEVEL,
        AEXP_SIDECHAIN,
        AEXP_ENABLE,
 
@@ -71,6 +72,7 @@ typedef struct {
 
        float* gainr;
        float* outlevel;
+       float* inlevel;
        float* sidechain;
        float* enable;
 
@@ -166,6 +168,9 @@ connect_port(LV2_Handle instance,
                case AEXP_OUTLEVEL:
                        aexp->outlevel = (float*)data;
                        break;
+               case AEXP_INLEVEL:
+                       aexp->inlevel = (float*)data;
+                       break;
                case AEXP_SIDECHAIN:
                        aexp->sidechain = (float*)data;
                        break;
@@ -255,6 +260,7 @@ activate(LV2_Handle instance)
 
        *(aexp->gainr) = 160.0f;
        *(aexp->outlevel) = -45.0f;
+       *(aexp->inlevel) = -45.0f;
 }
 
 static void
@@ -382,6 +388,7 @@ run_mono(LV2_Handle instance, uint32_t n_samples)
 
        *(aexp->gainr) = current_gainr;
        *(aexp->outlevel) = (max < 0.0056f) ? -45.f : to_dB(max);
+       *(aexp->inlevel) = in_peak_db;
        aexp->makeup_gain = makeup_gain;
 
 #ifdef LV2_EXTENDED
@@ -539,6 +546,7 @@ run_stereo(LV2_Handle instance, uint32_t n_samples)
 
        *(aexp->gainr) = current_gainr;
        *(aexp->outlevel) = (max < 0.0056f) ? -45.f : to_dB(max);
+       *(aexp->inlevel) = in_peak_db;
        aexp->makeup_gain = makeup_gain;
 
 #ifdef LV2_EXTENDED
index 887ea23860237d6c2c75ea06936d0478f5596809..2ab3860eff367eb397e6571f4da8821816ea5a27 100644 (file)
         unit:unit unit:db ;
     ] ,
     [
-        a lv2:InputPort, lv2:ControlPort ;
+        a lv2:OutputPort, lv2:ControlPort ;
         lv2:index 8 ;
+        lv2:name "Input Level" ;
+        lv2:symbol "inlevel" ;
+        lv2:default -45.000000 ;
+        lv2:minimum -45.000000 ;
+        lv2:maximum 0.000000 ;
+        unit:unit unit:db ;
+    ] ,
+    [
+        a lv2:InputPort, lv2:ControlPort ;
+        lv2:index 9 ;
         lv2:name "Sidechain" ;
         lv2:symbol "sidech" ;
         lv2:default 0.000000 ;
     ] ,
     [
         a lv2:InputPort, lv2:ControlPort ;
-        lv2:index 9 ;
+        lv2:index 10 ;
         lv2:name "Enable" ;
         lv2:symbol "enable" ;
         lv2:default 1 ;
 
     lv2:port [
         a lv2:InputPort, lv2:AudioPort ;
-        lv2:index 10 ;
+        lv2:index 11 ;
         lv2:symbol "lv2_audio_in_1" ;
         lv2:name "Audio Input 1" ;
     ] ,
     [
         a lv2:InputPort, lv2:AudioPort ;
-        lv2:index 11 ;
+        lv2:index 12 ;
         lv2:symbol "lv2_sidechain_in" ;
         lv2:name "Sidechain Input" ;
         lv2:portProperty lv2:isSideChain ;
     ],
     [
         a lv2:OutputPort, lv2:AudioPort ;
-        lv2:index 12 ;
+        lv2:index 13 ;
         lv2:symbol "lv2_audio_out_1" ;
         lv2:name "Audio Output 1" ;
     ] ;