>As already stated, I am a newbie on this list, so never mind if my >questions >are stupid... > >As I am interested in software synths, I wonder how e.g. the parameters >of a synthesizer like the DX7, can be handled using LADSPA. >The DX7 has several (>80) parameters to set, and it seems to me a bit >of an overkill to export and manipulate each parameter using a control >port. > >Wouldn't it be sufficient to know the index of the parameter and >change/get >values using two generic access functions like (pseudo-code): > >void set_parameter_value(Handle, ParameterIndex, ParameterValue) >LADSPA_Data (*get_parameter_value)(Handle, ParameterIndex);
i think you've misunderstood LADSPA's design. for writable control ports, the host defines the memory location of the control port. it is free to write into it at any time with direct mmeory access. in ardour, we just allocate an array of LADSPA_Data, then set each control port to use a successive index, and then set its location directly when its changed from the UI (its up to the plugin to do any internal interpolation necessary). thus, functions like the one above are entirely possible, but they exist on the host side, not the plugin side. note: things are a little different for a readable control port as opposed to a writable control port. in the case of a DX7 emulation such as you mention above, the values would almost certainly be write ports, not read ports. a read port is really just a way for the plugin to let the host know the value of some internal state that specifically *isn't* directly controllable by the host. --p
