31 static LADSPA_Handle
Instantiate(
const struct _LADSPA_Descriptor * descriptor,
unsigned long sampleRate)
33 std::string className = std::string(descriptor->Name).substr(5);
40 static void ConnectPort(LADSPA_Handle instance,
unsigned long port, LADSPA_Data * data)
52 static void Run(LADSPA_Handle instance,
unsigned long sampleCount)
55 adapter->
Run(sampleCount);
64 static void CleanUp(LADSPA_Handle instance)
77 const std::string & maker,
const std::string & copyright)
79 LADSPA_Descriptor * descriptor =
new LADSPA_Descriptor;
81 descriptor->UniqueID = id;
86 descriptor->Properties = LADSPA_PROPERTY_HARD_RT_CAPABLE;
87 descriptor->PortCount = NPorts();
92 descriptor->run =
::Run;
93 descriptor->run_adding = 0;
94 descriptor->set_run_adding_gain = 0;
98 SetPortsAndControls(descriptor);
103 void ProcessingClass2LadspaBase::SetPortsAndControls(LADSPA_Descriptor *& descriptor)
105 LADSPA_PortDescriptor *& portDescriptors =
const_cast<LADSPA_PortDescriptor*&
>(descriptor->PortDescriptors);
106 const char **& portNames =
const_cast<const char **&
>(descriptor->PortNames);
107 LADSPA_PortRangeHint *& portRangeHints =
const_cast<LADSPA_PortRangeHint *&
>(descriptor->PortRangeHints);
109 typedef const char * ConstCharPtr;
110 portNames =
new ConstCharPtr[NPorts()];
111 portDescriptors =
new LADSPA_PortDescriptor[NPorts()];
112 portRangeHints =
new LADSPA_PortRangeHint[NPorts()];
115 for(
unsigned j=0; j<_nInControls; i++, j++)
117 portDescriptors[i] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
119 portRangeHints[i].HintDescriptor = 0;
122 for(
unsigned j=0; j<_nOutControls; i++, j++)
124 portDescriptors[i] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
126 portRangeHints[i].HintDescriptor = 0;
128 for(
unsigned j=0; j<_nInPorts; i++, j++)
130 portDescriptors[i] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
132 portRangeHints[i].HintDescriptor = 0;
134 for(
unsigned j=0; j<_nOutPorts; i++, j++)
136 portDescriptors[i] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
138 portRangeHints[i].HintDescriptor = 0;
164 void ProcessingClass2LadspaBase::DoControls()
166 for(
unsigned i=0;i<_nInControls;i++)
171 void ProcessingClass2LadspaBase::SetPortSizes(
int size)
173 for(
int i=0;i<_nInControls;i++)
177 mWrappersList[i]->SetSize( size );
180 for(
int i=0;i<_nOutPorts;i++)
187 void ProcessingClass2LadspaBase::DoProc(
unsigned long nSamples)
189 for(
int i=0;i<_nInPorts;i++)
191 memcpy( &(mWrappersList[i]->GetData()), _inportBuffers[i], nSamples*
sizeof(
CLAM::TData) );
192 mWrappersList[i]->Produce();
195 std::vector<CLAM::TData*> dataList(_nOutPorts);
196 for(
int i=0;i<_nOutPorts;i++)
200 dataList[i] = &(audioPort.
GetData());
205 for(
int i=0; i<_nOutControls; i++)
206 memcpy(_outcontrolBuffers[i], dataList[i], nSamples*
sizeof(
CLAM::TData) );
211 const char * ProcessingClass2LadspaBase::GetInControlName(
int id)
const
215 const char * ProcessingClass2LadspaBase::GetOutControlName(
int id)
const
219 const char * ProcessingClass2LadspaBase::GetInPortName(
int id)
const
223 const char * ProcessingClass2LadspaBase::GetOutPortName(
int id)
const