Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LV2 Support #316

Closed
wants to merge 101 commits into from
Closed

LV2 Support #316

wants to merge 101 commits into from

Conversation

badescunicu
Copy link
Contributor

This PR adds basic LV2 support to Mixxx. It integrates seamlessly with our current Effects Framework. Just install an LV2 plugin and it will show up when you cycle through the effects.

Currently it is only supporting plugins which handle stereo input/output audio samples and do not require any additional features. Some plugins which were tested by me: Calf Phaser, Calf Flanger, SWH Karaoke.

…lso implement getManifest, canInstantiateEffect, and instantiateEffect methods
@@ -13,6 +13,7 @@
<file>images/preferences/ic_preferences_interface.png</file>
<file>images/preferences/ic_preferences_keydetect.png</file>
<file>images/preferences/ic_preferences_library.png</file>
<file>images/preferences/ic_preferences_lv2.png</file>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logo has the wrong ratio. It should not be stretched.
Please use the "Simple versions for bright backgrounds" from http://lv2plug.in/logo/

@daschuer
Copy link
Member

Hi Nico,
this branch works quite good from the audio processing part, but needs a lot of fine tuning to be merge able into master branch.
Here some pending issues:

  • Blacklist: We need to be able to blacklist Plug-Ins that are known to be useless for Mixxx like
    "Stereo to MS"
  • We need also an option to hide plug-Ins from the GUI because they will not be used by the DJ.
  • The same for the Parameters. We need an option to hide unwanted parameter knobs
  • We need a "More" popup for plugin with more than 8 usefull parameters parameters
  • We need a widget that deal with long effect or button names.
  • ...

@daschuer
Copy link
Member

  • The LV2 plug-ins in preferences should be listed in a list view.
  • It should contain an "Info" button displaying exactly the info that is displayed by lv2Info from the lilv2-utils package.

GroupEffectProcessor() {
m_pSampleRate = new ControlObjectSlave("[Master]", "samplerate");
}
GroupEffectProcessor() { }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I must have missed adding samplerate COs to GroupEffectProcessor (I think it may introduce less coupling between the engine and the effects system if the current samplerate is passed into the initialize() and process() methods) but the delete in the destructor (a few lines down) should be moved into the EffectProcessor destructor.

@rryan
Copy link
Member

rryan commented Aug 19, 2014

Nice!

@@ -186,6 +190,12 @@ void DlgPreferences::createIcons() {
m_pEqButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter);
m_pEqButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

m_pLV2Button = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type);
m_pLV2Button->setIcon(0, QIcon(":/images/preferences/ic_preferences_lv2.png"));
m_pLV2Button->setText(0, tr("LV2 plugins"));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling LV2 Plugins

@esbrandt
Copy link
Contributor

What are the default search locations for installed lv2 plugins?
On OS X, plugins in /Users/foo/.lv2 wont show up.
Any of those paths valid: http://manual.audacityteam.org/man/Effect_Menu#LV2_Effects ?

Edit:
There is the following error message in the logs: Error opening file /Users/foo/.lv2/bundles/manifest.ttl (No such file or directory) lilv_world_load_bundle(): error: Error reading file:///Users/foo/.lv2/bundles/manifest.ttl.
Using the lv2 plugins from https://github.com/swh/lv2/ , the folder structure on my machine looks like .lv2/bundles/a_law-swh.lv2/manifest.ttl, with the manifest.ttl being in the single effects subfolder.

esbrandt added a commit that referenced this pull request Aug 24, 2014
…rences icons & update icon template with LV2 layer.
@ywwg ywwg added this to the 1.13 milestone Aug 26, 2014
@ywwg
Copy link
Member

ywwg commented Aug 26, 2014

does this work on all platforms?

@badescunicu
Copy link
Contributor Author

Currently it works on Linux. It should work on OS X (must investigate @esbrandt's issue) and on Windows too, since lilv is cross platform. However, in order to work on Windows, this[1] must be modified to take build.platform_is_windows into account.

[1] - https://github.com/badescunicu/mixxx/blob/lv2_support/build/features.py#L1332

raise Exception('Missing liblilv-0 (needs at least 0.5)')

build.env.Append(CPPDEFINES='__LILV__')
build.env.ParseConfig('pkg-config lilv-0 --silence-errors \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like a tab made it in here

@rryan
Copy link
Member

rryan commented Sep 24, 2014

I'll add lilv to our build environment so we can start making builds of this with the build server.

@mixxx-buildbot
Copy link

safe to test?

@rryan
Copy link
Member

rryan commented Sep 24, 2014

skip ci

@badescunicu badescunicu mentioned this pull request Oct 17, 2014
@daschuer daschuer mentioned this pull request Apr 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants