LIB: support enabled attribute for inst encoder config
authorStefan Westerfeld <stefan@space.twc.de>
Tue, 12 Mar 2019 13:09:29 +0000 (14:09 +0100)
committerStefan Westerfeld <stefan@space.twc.de>
Tue, 12 Mar 2019 13:09:29 +0000 (14:09 +0100)
Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
lib/sminstenccache.cc
lib/sminstencoder.cc
lib/sminstrument.cc
lib/sminstrument.hh

index 09f860c..0698674 100644 (file)
@@ -112,8 +112,11 @@ mk_version (const string& wav_data_hash, int midi_note, int iclipstart, int icli
   depends += string_printf ("%d\n", midi_note);
   depends += string_printf ("%d\n", iclipstart);
   depends += string_printf ("%d\n", iclipend);
-  for (auto entry : cfg.entries)
-    depends += entry.param + "=" + entry.value + "\n";
+  if (cfg.enabled)
+    {
+      for (auto entry : cfg.entries)
+        depends += entry.param + "=" + entry.value + "\n";
+    }
 
   return sha1_hash (depends);
 }
index d8df1b5..e8c6764 100644 (file)
@@ -17,11 +17,14 @@ freq_from_note (float note)
 Audio *
 InstEncoder::encode (const WavData& wav_data, int midi_note, Instrument::EncoderConfig& cfg)
 {
-  for (auto entry : cfg.entries)
+  if (cfg.enabled)
     {
-      if (!enc_params.add_config_entry (entry.param, entry.value))
+      for (auto entry : cfg.entries)
         {
-          fprintf (stderr, "InstEncoder: encoder config entry %s is not supported\n", entry.param.c_str());
+          if (!enc_params.add_config_entry (entry.param, entry.value))
+            {
+              fprintf (stderr, "InstEncoder: encoder config entry %s is not supported\n", entry.param.c_str());
+            }
         }
     }
   enc_params.setup_params (wav_data, freq_from_note (midi_note));
index 02744dd..65ffd41 100644 (file)
@@ -287,6 +287,7 @@ Instrument::load (const string& filename)
         {
           entry.value = enc_node.attribute ("value").value();
           m_encoder_config.entries.push_back (entry);
+          m_encoder_config.enabled = true;
         }
     }
 
@@ -419,11 +420,14 @@ Instrument::save (const string& filename, bool zip)
           auto_volume_node.append_attribute ("gain") = string_printf ("%.1f", m_auto_volume.gain).c_str();
         }
     }
-  for (auto entry : m_encoder_config.entries)
+  if (m_encoder_config.enabled)
     {
-      xml_node conf_node = inst_node.append_child ("encoder_config");
-      conf_node.append_attribute ("param").set_value (entry.param.c_str());
-      conf_node.append_attribute ("value").set_value (entry.value.c_str());
+      for (auto entry : m_encoder_config.entries)
+        {
+          xml_node conf_node = inst_node.append_child ("encoder_config");
+          conf_node.append_attribute ("param").set_value (entry.param.c_str());
+          conf_node.append_attribute ("value").set_value (entry.value.c_str());
+        }
     }
   if (zip)
     {
index ec462fa..478c290 100644 (file)
@@ -99,6 +99,8 @@ public:
   };
   struct EncoderConfig
   {
+    bool enabled = false;
+
     std::vector<EncoderEntry> entries;
   };