I have been using the Host Talker code provided to me by DSP Concepts for several years now. Use it to communicate with our target running AWECoreOS-x86_64 (verson AC-8.C.1).
The code I'm using is provided below.
I have no problem getting/setting value of array parameters using the remoteSetValueMask()/remoteGetValueMask() API, except when I'm trying to write the coefficients of a FilterbankFIRV2 module (with 256 taps). When I'm doing it, those methods return E_NO_MORE_OBJECTS error code.
Can you help me with this? By the way, the application is running correctly on the target and I get the correct audio processing (input->output).
12:51pm
Hi Yair,
Error -18 E_NO_MORE_OBJECTS indicates that the module was not found in the layout: https://w.dspconcepts.com/hubfs/Docs-AWECoreOS/AWECoreOS_UserGuide/a0003.... Please double-check that your .awb file contains the needed FilterbankFIRV2 module with an ObjectID assigned, and that this corresponds correctly with the information saved in your ControlInterface.h file.
Thanks,
Michael
10:35am
Hi Michael,
Attached is a small test case system. It contains only the FilterbankFIRV2 module (which was exported). You can see the interface header file generated (which has the same parameters as in my larger design).
First, I do not see this module in the module list header file. I suspect that there is a problem accessing the coefficients because the FIlterblockFIRV2 is a subsystem?
Please let me know which AWECoreOS API (or HostTalker API) I should use to load/read coefficients to/from the filter, and how to set the API parameters.
Best regards,
Yair
3:41pm
Hi Yair,
We recommend using the aweOS_ctrlGetValue() and aweOS_ctrlSetValue() APIs for interacting with modules through the Control Interface. For more information on these methods, please see this section of the AWE Core OS User Guide and the LayoutControl.c sample application code: https://w.dspconcepts.com/hubfs/Docs-AWECoreOS/AWECoreOS_UserGuide/index....
You are correct that the FilterbankFIRV2 module is actually implemented as a subsystem, so it will not appear in the ModuleList.h file and it does not have a unique module class ID. You should still be able to interact with the module's parameters since they are exposed through the ControlInterface.h file.
Thanks,
Michael
4:26pm
As you can see above, we are using the HostTalker code (provided for us by DSP Concepts) to interface with the DSP Concept engine running remotely (on a Linux machine). This connection works perfectly so far (starting/stopping audio, loading AWB layouts, controlling module parameters). I have been using the parameters exposed by the ControlInterface.h file successfully to interact with every parameter in our design, except the FIR coefficients.
Looks like communicating wit a sub-system does not work?
Please advise.
10:13am
Also, note that I can access other module parameter arrays using the Host Talker API without a problem. The only problem I see (for now) is with the FIR coefficient parameter, and I suspect that this is because the FIR is a subsystem that does not expose its parameters the way other modules do.
Please advise as soon as you can, as my customer's project is in risk.
1:03pm
Hi Yair,
It turns out the standard Control Interface API calls will return the same error for this module, apologies for the misadvice. I've filed a ticket with our Platform Development team regarding this issue. It may take some time for them to investigate and address it. Thank you for your patience and for bringing it to our attention.
In the meantime, some potential (non-ideal) workarounds may be to implement your signal flow using a different module, using multiple FilterbankFIRV2 modules in parallel with different coefficients and switching between which is used for processing, or switching between different AWBs in which the FilterbankFIRV2 module coefficients differ.
Thanks,
Michael
1:58pm
Hi Michael,
Unfortunately, the suggested work around will not work. The FIR module is used for speaker compensation, so the required coefficients are not known at design time, but will change based on final customer chosen speakers, room, etc.
One thing to notice: When I connected AW Designer to our remote system (the Linux system running the CoreOS implementation), I was able to successfully change the FIR coefficients at run time (I verified it several times). Does AW Designer and/or server uses different mechanism to set/get this parameter? Might that be that the ControlInterface.h for the this FIR subsystem contains wrong parameters (handle, offset, mask) which is the reason for the remote set/get API fail?
I will appreciate if you could escalate this issue with your Platform Dev team, as it is critical to my customer's application.
Best regards,
Yair
6:32pm
Hi Yair,
Let me follow up with you on the side about this application.
Thanks,
Michael