aboutsummaryrefslogtreecommitdiffstats
path: root/lvz
diff options
context:
space:
mode:
Diffstat (limited to 'lvz')
-rw-r--r--lvz/audioeffectx.h16
-rw-r--r--lvz/gendata.cpp47
2 files changed, 33 insertions, 30 deletions
diff --git a/lvz/audioeffectx.h b/lvz/audioeffectx.h
index 07a6302..0030065 100644
--- a/lvz/audioeffectx.h
+++ b/lvz/audioeffectx.h
@@ -70,18 +70,21 @@ public:
, URI("NIL")
, curProgram(0)
, numPrograms(progs)
+ , numParams(params)
, numInputs(0)
, numOutputs(0)
, sampleRate(44100)
{
}
- const char* getURI() { return URI; }
- const char* getUniqueID() { return uniqueID; }
- float getSampleRate() { return sampleRate; }
- uint32_t getNumInputs() { return numInputs; }
- uint32_t getNumOutputs() { return numOutputs; }
-
+ const char* getURI() { return URI; }
+ const char* getUniqueID() { return uniqueID; }
+ float getSampleRate() { return sampleRate; }
+ uint32_t getNumInputs() { return numInputs; }
+ uint32_t getNumOutputs() { return numOutputs; }
+ uint32_t getNumParameters() { return numParams; }
+
+ virtual void getParameterName(LvzInt32 index, char *label) = 0;
virtual bool getProductString(char* text) = 0;
void canMono() {}
@@ -103,6 +106,7 @@ protected:
const char* URI;
uint32_t curProgram;
uint32_t numPrograms;
+ uint32_t numParams;
uint32_t numInputs;
uint32_t numOutputs;
float sampleRate;
diff --git a/lvz/gendata.cpp b/lvz/gendata.cpp
index f1337a1..c426b80 100644
--- a/lvz/gendata.cpp
+++ b/lvz/gendata.cpp
@@ -49,37 +49,36 @@ write_data(AudioEffectX* effect, const char* lib_file_name)
os << "\t:symbol \"" << effect->getUniqueID() << "\" ;" << endl;
os << "\tdoap:name \"" << name << "\"";
- if (effect->getNumInputs() + effect->getNumOutputs() == 0)
- os << " ." << endl;
+ uint32_t num_params = effect->getNumParameters();
+ uint32_t num_audio_ins = effect->getNumInputs();
+ uint32_t num_audio_outs = effect->getNumOutputs();
+ uint32_t num_ports = num_params + num_audio_ins + num_audio_outs;
+
+ if (num_ports > 0)
+ os << " ;" << endl << "\t:port [" << endl;
else
- os << " ;" << endl;
+ os << " ." << endl;
- for (uint32_t i = 0; i < effect->getNumInputs(); ++i) {
- if (i == 0)
- os << "\t:port [" << endl;
+ uint32_t idx = 0;
+
+ for (uint32_t i = idx; i < num_params; ++i, ++idx) {
+ effect->getParameterName(i, name);
+ os << "\t\ta :InputPort, :ControlPort ;" << endl;
+ os << "\t\t:index" << " " << idx << " ;" << endl;
+ os << "\t\t:name \"" << name << "\" ;" << endl;
+ os << ((idx == num_ports - 1) ? "\t] ." : "\t] , [") << endl;
+ }
+ for (uint32_t i = 0; i < num_audio_ins; ++i, ++idx) {
os << "\t\ta :InputPort, :AudioPort ;" << endl;
- os << "\t\t:index" << " " << i << " ;" << endl;
-
- if (i == effect->getNumInputs() - 1) {
- os << "\t] " << (effect->getNumOutputs() ? ";" : ".") << endl;
- } else {
- os << "\t] , [" << endl;
- }
+ os << "\t\t:index" << " " << idx << " ;" << endl;
+ os << ((idx == num_ports - 1) ? "\t] ." : "\t] , [") << endl;
}
- for (uint32_t i = 0; i < effect->getNumOutputs(); ++i) {
- if (i == 0)
- os << "\t:port [" << endl;
-
+ for (uint32_t i = 0; i < num_audio_outs; ++i, ++idx) {
os << "\t\ta :OutputPort, :AudioPort ;" << endl;
- os << "\t\t:index" << " " << effect->getNumInputs() + i << " ;" << endl;
-
- if (i == effect->getNumInputs() - 1) {
- os << "\t] ." << endl;
- } else {
- os << "\t] , [" << endl;
- }
+ os << "\t\t:index" << " " << idx << " ;" << endl;
+ os << ((idx == num_ports - 1) ? "\t] ." : "\t] , [") << endl;
}
os.close();