• 1(current)
  • 2
  • 3
  • 4
  • 5
  • 12
WIP Adding Audio DSP Plugin to AddonManager
#1
Hello xbmc developers,

I'm working on Audio DSP plugins to load with the AddonManager. I'm going to create a new extension point and later the relevant data will be submitted to ActiveAE.

At the moment I'm so far that under Settings / System / Addons / Addons Enabled already a new category "Audio DSP" is entered. Furthermore, the DLL is loaded by the cpluff library.

In the next step, I will create a new class CADSPManager that can manage audio plugins (Plugin Enable/Disable, Callbacks/Symbols from the DLL, similar to the PVRManager). After that, i will extend the StateMachine from ActiveAE that the settings and the callbacks from the audio plugins can be managed.

Later, each plugin have a GUI in order to make adjustments.


Do you have any further ideas or suggestions?

Image
Image
Image


Addons.xml looks like this:
PHP Code:
<?xml version="1.0" encoding="UTF-8"?>
<addon
  id="audiodsp.demo"
  version="0.0.1"
  name="XBMC Audio DSP Demo"
  provider-name="wisler">
  <requires>
    <c-pluff version="0.1"/>
  </requires>
  <extension
    point="xbmc.audiodsp"
    library_wingl="XBMC_Demo_win32.dll"
    library_windx="XBMC_Demo_win32.dll" />
  <extension point="xbmc.addon.metadata">
    <summary lang="en">Audio DSP Demo</summary>
    <description lang="en">Audio DSP Demo</description>
    <disclaimer lang="en">Simple IIR-Filter Demo</disclaimer>
    <platform>wingl windx</platform>
  </extension>
</addon> 
Reply
#2
nice! next you need to hook a configuration page into settings.
Reply
#3
Hi community,

next step is done. Got an example settings menu to work Big Grin

Now the hard part begins (parse settings into the plugin, add plugin support to ActiveAE, add new class for plugin handling, writting documentation)


Example settings.xml:
PHP Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
    <setting id="crossover_frequency" type="number" label="30000" default="1000" />

</settings> 

Image
Reply
#4
I think it's confusing for users having audio settings in completely different menus. DSP configuration should hook into system settings. The Addon config dialog is very basic and does not provide the GUI controls you may need. Think of an equalizer which needs slider controls.
Reply
#5
In my opinion we should have both. A menu in settings/system/audio output to adjust global settings (e.g. bypass plugins) for the DSPManager and determine the order of enabled plugins (like foobar, see the following screenshot).
Furthermore, the plugins will be available in the Addon Manager to adjust specific plugin settings. If I am right PVRManager does it in the same way. There is settings//system/LiveTV to set the global PVR settings and we can make adjustments in the addon manager to set specefic settings for the PVRPlugins.
Image


Much more important is the rapid access to the audio has plugins during playback of media files. For example we can add a new button at the point in the following screenshot.
Image


Furthermore, I did some experiments with the settings.xml and I could imagine the settings for the DSPManager like that.
Image


Quote:Think of an equalizer which needs slider controls.
The wiki says its also possible to create sliders in the plugins settings.xml
http://wiki.xbmc.org/index.php?title=Add...2slider.22

A graph plotter object would be nice. Is there something in xbmc? Or is it possible to integrate gnuplot, matplotlib or something similiar without great effort?
Reply
#6
Don't mix up those different types of configuration. The addon settings page is for configuration of the addon like the ip address of a pvr backend. The settings page configures the function of the addon on audio. The addon settings dialog offers only very limited control, you won't even get an event after having changes a value.
Yes, something like the 2nd and 3rd screenshot.

Quote:A graph plotter object would be nice

The gui rendering control can render everything.
Reply
#7
I hope I understand you correctly. The settingspage (settings.xml) for each addon in the AddonManager is for static options such as an IP address or something else static information.
Therefore, I should create a new gui window (AudioDSPManager), which allows to make adjustments in real time. Where can I find more information about event handling in xbmc?

Quote:The gui rendering control can render everything.
Where can i find more information on that topic?
Reply
#8
checkout VNSIAdmin which uses the rendering control and its own skin file
https://github.com/opdenkamp/xbmc-pvr-ad...r.vdr.vnsi
Reply
#9
Hi Community,

I am again a step further.

Brief overview of the things that I've done so far:
  • Create a test DLL that can be loaded by the AddonManager
  • AudioDSP Addons can be disabled or enabled within the AddonManager (see 2nd screenshot)
  • Also Install and Uninstall (see 2nd screenshot) should work now (not tested now)
  • Add a new settings entry in Audiooutput (Bypass AudioDSP Addons and AudioDSP Manager)
  • Added a new window so we can handle AudioDSP Addons (configure, order or set AudioDSP Addon to active List)
  • All DLL functions can be loaded and called by xbmc --> first ActiveAE tests can be carried out soon Big Grin

Now some screenshots:
Image
First dialog window for the AudioDSP Manager. (It's not perfect, but a trained skin developer can do it better then me Blush)
+ Button adds a Addon from available list to active list (so ActiveAE can process the audio samples with the Addons in the active list)
- Button removes the Addon from the active list.
Down Button moves the Addon down in the active list.
Up Button moves the Addon up in the active list.
Cancel Button quits the AudioDSP Manager without any changes.
OK Button quits the AudioDSP Manager and pushs the new settings to ActiveAE.
Apply Button pushs the new settings to ActiveAE without closing AudioDSP Manager.
Configure selected Button shows the configuration Dialog for the selected AudioDSP Addon. We also can show up this dialog by clicking the Addon in the active list.
What do you think about the AudioDSP Manager and the included buttons/funcitons?

Image
Added some small C++-Code to AddonInfo-Screen and now we can enable or disable AudioDSP Addons. (I think install or uninstall should also work, but at the moment I haven't tested it)

Image
Screenshot with the test DLL. Later we need a little template so that the developers can start with AudioDSP Addons development.


Next Steps:
  • Write code for the AudioDSP Manager and its dialog window
  • Push active addon list to ActiveAE
  • Write a simple dialog for test DLL, that we can configure the AudioDSP Addon
  • Write the code for the IIR-Filter
  • Do some test with the test DLL and the included IIR-Filter
  • Add a new entry in OSD-Controll buttons, so we can get faster access to AudioDSP Manager


Do you have any suggestions or ideas?

EDIT:
Installing the AudioDSP Addon Demo works with an zip-file :-D
Reply
#10
Nice!
I got notice that a parallel development stream on this has already come quite far. I hop this will show up on github soon so we can combine forces.
Reply
#11
Hello wisler,

I also started few months ago the same to become audio DSP as add-ons available (FernetMenta means me).

Sorry have not seen your message here on the forum and FernetMenta inform me about it. Funny is, I see your first images and this are exactly the same as from my work Big Grin.

You find a commit from my work now on https://github.com/xbmc/xbmc/pull/4402 is not complete finished and a lot of problems to fix and will ask them whether the system is in order.

Sorry have only Linux here at home and no way to become it under windows, hope you find it ok and becomes it under Windows.
Reply
#12
I fixed your link. We do not allow uploads/attachments but you can upload elsewhere and post a link here.

Ps. I just posted an interested coder on reddit here, he might contact you. Maybe you can combine forces.
Reply
#13
Dear All,

I'm a DSP users with XBMC and I like optimize sound with my DSP (FabFilter). This is my trick :
1) I install Virtual Audio Cable to generate an out virtual audio.
2) I install pedalboard2 (like console). This soft is to use DSP with audio output and input.

In XBMC, I'm using the Virtual Audio Cable output audio (in system). With Pedalboard2, I can use my DSP like : VirtualAudioCable out -> DSP -> Out Audio Card (Motherboard standart audio out)
It's work very well but I think it's very complicated.

I follow this theard because it would be great to have a DSP add-on to use Dll DSP.

Thanks you for your work and i hope this addon will work with XBMC.
Reply
#14
Information 
Hello all,

about the DSP handling inside XBMC. It is nearly finished and currently I perform clean up, faults removal and improvement on the work.

The audip dsp addon header files have a first alpha version from my side and need no bigger changes at the moment.

A first addon is also planned and can be become public after the work is finished.

Things to-do from my side on XBMC code:
- Code clean up
- Faults removal
- Wrong channel alignment (here with PulseAudio, with ALSA OK)
- Add audio DSP info functions to CGUIInfoManager to get something like mode logos, process name strings..., everything what is needed on other XBMC skins
- Add more data types for AE_DSP_PROFILE to inform add-on about detailed stream source data, e.g. Dolby Digital+, DTS (for handle DTS-EX) need to add
- DSP database clean up if add-on is removed and stored data is present in it
- Add more add-on callbacks, e.g. to play a sound test file from add-on side
- Create a helper documentation about a DSP add-on programming

It can be loaded with:
git clone git://github.com/AlwinEsch/xbmc.git -b audio-dsp-addon-handling

If you have any ideas about missing things or a better way. Or if you see a fault please inform me.

Best regards,

Alwin
Reply
#15
it's pretty nice to have DSP support. but i think you should add VST support instead of doing yet another plugin format. that would make it way more interesting as there are already so many plugins available.
Reply
  • 1(current)
  • 2
  • 3
  • 4
  • 5
  • 12

Logout Mark Read Team Forum Stats Members Help
Adding Audio DSP Plugin to AddonManager7