On Fri, May 22, 2009 at 2:39 PM, Albert Santoni <[email protected]> wrote:
> Hi Adam,
>
> On Fri, May 22, 2009 at 1:56 PM, Adam Davis <[email protected]> wrote:
>> Hi Albert,
>>
>> Thanks for your patch -- the LADSPA tab now shows up in Mixxx.
>>
>> It looks like -fPIC was already part of the g++ build flags, although it's
>> only showing for the .os files and not the .dylib:
>>
>> scons: done reading SConscript files.
>> scons: Building targets ...
>> g++ -o lib/ladspa/caps/Compress.os -c -fPIC -Ilib/ladspa
>> lib/ladspa/caps/Compress.cc
>> g++ -o lib/ladspa/caps/Phaser.os -c -fPIC -Ilib/ladspa
>> lib/ladspa/caps/Phaser.cc
>> g++ -o lib/ladspa/caps/Reverb.os -c -fPIC -Ilib/ladspa
>> lib/ladspa/caps/Reverb.cc
>> g++ -o lib/ladspa/caps/caps.dylib -dynamiclib lib/ladspa/caps/Compress.os
>> lib/ladspa/caps/Phaser.os lib/ladspa/caps/Reverb.os
>>
>> I'm not sure if that's right or if the intention is that the -fPIC show up
>> for the dylib as well. I tried adding the following to my SConscript in
>> lib/ladspa/caps:
>>
>> env.Append(CCFLAGS = '-DPIC')
>>
>> But this just made the -fPIC flag show up twice in the build output messages
>> above.
>
> Ok, that was a bit of a shot in the dark, I wouldn't worry about it then.
>
>>
>> As far as fixing the search paths, I have it working now by uncommenting
>> much of the ladspa-related code from main.cpp and declaring plugin_paths as
>> extern in ladspaloader.cpp. If that's a reasonable way to do it, I'm happy.
>>
>
> There's probably a nicer way to do it (making it a class member), but
> I'll be able to advise you better later whenever you want me to review
> the code in your branch.
>
>> Once I can get the plugins loading properly (and assuming the plugin_paths
>> fix sounds alright) I'll commit my changes.
>
> Sounds good.
>
> I've got some good news - I think I figured out why Mixxx didn't seem
> to think those plugins are valid. LADSPA plugins are just regular
> shared libraries that happen to have a bunch of special functions
> defined, as specified by ladspa.h. If those functions/symbols are
> missing, then the shared library won't look like LADSPA plugin, and so
> that made me want to take another look at the source for the plugins
> we have in lib/ladspa/cmt and lib/ladspa/caps.
>
> It turns out, in the "caps" directory, there's no source file which
> declares the required function:
>      const LADSPA_Descriptor *ladspa_descriptor (unsigned long i)
> After discovering, I downloaded the original caps source (which
> includes many more plugins than I stole the source from), and spotted
> a file called "interface.cc" which contains that magic function. So it
> looks like I:
> A) Didn't know what I was doing when I forked the caps/cmt libraries
> B) Didn't copy all the files I needed from their sources over.
>
> So what I would recommend doing is:
> 1) Grab the caps library source: http://quitte.de/dsp/caps.html#Download
> 2) Copy that interface.cc file over to our caps directory.
> 3) Hack up that interface.cc file so it compiles with only the couple
> of plugins we want. If you need to drag in more source files from
> caps, feel free to do so. I think there was a reason why I didn't fork
> the entire caps source tree, but I can't remember why. Even though
> there's plugins we don't want to use from caps, we can simply not
> write preset .xml files for those.
>
> I haven't checked for sure, but I suspect I screwed up the cmt library
> in the same way. So check out the source code I have and look for any
> missing required LADSPA functions. It might be that same descriptor
> one that I missed by leaving out some innoncent-looking source file.
>
> Thanks!
> Albert
>
>
>>
>> On Fri, May 22, 2009 at 4:59 AM, Albert Santoni <[email protected]> wrote:
>>>
>>> Hi Adam,
>>>
>>> Sounds like you've done some great troubleshooting so far, and I'm glad
>>> you emailed me when you did. I totally forgot that we "disabled" the
>>> LADSPA tab in the main Mixxx UI as we were preparing for the 1.7
>>> release. Sorry about this!
>>>
>>> I've attached a patch that re-enables the LADSPA tab, and you should
>>> apply this to your local copy of Mixxx. However, before you do that, now
>>> is probably a good time to create a LADSPA branch with BZR for yourself.
>>> The 1.7 branch you're working on is the correct place to start, and
>>> that's what you want to branch from for your new LADSPA branch.
>>>
>>> In order to turn your local "checkout" of the 1.7 branch into a new
>>> branch, all you'll need to do is run "bzr unbind" in the checkout's
>>> directory. This will turn your local directory into a new branch. Once
>>> you've done that, try applying my patch, commit your changes ("bzr
>>> commit"), and then "push" your branch to Launchpad to make it public by
>>> running:
>>>
>>>     bzr push lp:~userid/mixxx/features_ladspa2
>>>
>>> I hope this helps! Creating a public LADSPA branch will help others
>>> contribute easier hopefully. :)
>>>
>>> I should also mention that I've just given my LADSPA-enabled Mixxx build
>>> a shot on Linux, and it doesn't detect the LADSPA plugins either. It
>>> sounds like the plugin search path problem probably happens on all
>>> platforms.
>>>
>>> Regarding the LADSPA libraries on OS X, I would check to see what
>>> compiler flags are being passed to GCC when we're building the plugins.
>>> It's possible that we're missing some magic flags that would make it
>>> work. (We might need -fPIC, off the top of my head? Maybe try editing
>>> the SConscript files in the lib/ladspa/cmt and caps dirs to add that as
>>> a CCFLAG.)
>>>
>>> Anyways, if you get stuck with BZR, SCONS, or anything really, feel free
>>> to ask more questions or hop onto #mixxx on Freenode. There's usually at
>>> least one person around to help. :)
>>>
>>> Thanks,
>>> Albert
>>>
>>> On Thu, 2009-05-21 at 23:43 +0100, Adam Davis wrote:
>>> > Hi Albert and Garth,
>>> >
>>> > I've been looking at the LADSPA issue in my spare time over the last
>>> > few days. It looks to me like both of Albert's suggestions ended up
>>> > being culprits: near as I can tell, there is a problem with paths in
>>> > the LADSPA loader (there are none) and when I force a path in and it
>>> > finds the plugin, it says the file isn't a valid LADSPA plugin.
>>> >
>>> > The constructor for LADSPA loader declares QStringList plugin_paths on
>>> > the 2nd line and then immediately tries to iterate over the members of
>>> > plugin_paths which is (of course) empty. Presumably the plugin_paths
>>> > that is meant to be referenced is the global one declared in main.
>>> >
>>> > To test that the LADSPALoader was at least functioning, I hard-coded
>>> > the path to caps, at which point Mixxx said:
>>> >
>>> > Debug: [Main]: "The file [...]* caps.dylib is not a LADSPA plugin"
>>> >
>>> > The first problem (no paths in LADSPA loader) seems very strange to
>>> > me, as presumably it would affect all platforms, but I had understood
>>> > LADSPA functions on (at least) Linux from a standard build. Have I
>>> > grabbed the wrong version of mixxx for testing LADSPA (1.7 from bzr as
>>> > recommended here:
>>> > http://www.mixxx.org/wiki/doku.php/compiling_on_os_x)? Should I be
>>> > looking in svn?
>>> >
>>> > It's perhaps worth noting that not only do the plugins not get loaded,
>>> > but none of the GUI (menus, tab, etc) associated with LADSPA show up
>>> > when I launch Mixxx. I'm not sure if Q just doesn't bother creating
>>> > the view if it doesn't find any plugins or if this, too, is strange
>>> > behavior.
>>> >
>>> > Any guidance would be appreciated.
>>> >
>>> > Thanks,
>>> >
>>> > -Adam
>>> >
>>> > *Path changed to protect the innocent
>>> >
>>> > On Tue, May 19, 2009 at 5:41 PM, Albert Santoni <[email protected]>
>>> > wrote:
>>> >         Hi Adam,
>>> >
>>> >         What Garth just said is not quite up to date. The "cmt" and
>>> >         "caps"
>>> >         LADSPA plugin collections get compiled when Mixxx is built,
>>> >         and you'll
>>> >         find their source in the "lib/ladspa" directory in our source
>>> >         tree.
>>> >         They get compiled on Linux and OS X. Getting them to compile
>>> >         on a
>>> >         non-POSIX system (Windows) looked like it was going to be a
>>> >         bit of
>>> >         work, so the plan is to just steal Audacity's precompiled
>>> >         LADSPA
>>> >         plugins and bundle those on win32 (rather than compiling them
>>> >         ourselves).
>>> >
>>> >         Let's only worry about caps and cmt for now. I don't know if
>>> >         there was
>>> >         a reason I didn't roll swh-plugins into our tree or not, but
>>> >         we can
>>> >         try playing with those plugins later.
>>> >
>>> >         With the caps and cmt libraries, the important thing to note
>>> >         is that
>>> >         multiple plugins are rolled into a single dynamic linking
>>> >         library
>>> >         (.dylib on OS X). For example, the wiki mentions that both the
>>> >         Compressor plugin and PlateReverb live inside
>>> >         caps.so/caps.dylib.
>>> >
>>> >         So to half-answer Adam's original question - I don't know
>>> >         whether its
>>> >         a path issue or a compile issue with the plugins. The plugins
>>> >         originally used a nasty Makefile, so I rolled my own
>>> >         SConscript to
>>> >         compile each plugin collection. It's quite possible that I
>>> >         messed up
>>> >         something there, although I'm pretty sure I had this working
>>> >         at some
>>> >         point. My gut feeling is that it's a path issue since I don't
>>> >         remember
>>> >         copying the libraries over into the Mixxx.app bundle at any
>>> >         point.
>>> >
>>> >         A place I would suggest starting is by putting some qDebug()'s
>>> >         around
>>> >         where the code that spits out:
>>> >         >> Debug: [Main]: LADSPA: Plugin  "Compress"  not found
>>> >         (required by preset "Compressor" )
>>> >
>>> >
>>> >         (qDebug() is Qt's equivalent to printf(), but a bit more
>>> >         powerful.) We
>>> >         should figure out what path our code is actually looking in
>>> >         for those
>>> >         plugins....
>>> >
>>> >         Thanks, and great to hear you're interested in working on
>>> >         LADSPA. We
>>> >         need your help!
>>> >         Albert
>>> >
>>> >
>>> >
>>> >         On Tue, May 19, 2009 at 5:17 AM, Garth Dahlstrom
>>> >         <[email protected]> wrote:
>>> >         > Hi Adam,
>>> >         >
>>> >         > Unfortunately, I've not yet had a chance to play with it
>>> >         myself on OSX, so I
>>> >         > can't say for how it works, but I can tell you how it works
>>> >         on Windows and
>>> >         > Linux...
>>> >         >
>>> >         > Mixxx only comes with the plug-in mappings for a handful of
>>> >         LADSPA plugins
>>> >         > (see http://www.mixxx.org/wiki/doku.php/ladspa), we don't
>>> >         actually
>>> >         > distribute the actual plugins with Mixxx, they must be
>>> >         either built or
>>> >         > downloaded separately.   I've had success using the Audacity
>>> >         prebuilt
>>> >         > plug-ins for Windows and Ubuntu LADSPA packages (seen on the
>>> >         wiki page), so
>>> >         > there is a good chance prebuilt ones for OSX will work too
>>> >         (if we haven't
>>> >         > messed up the paths).
>>> >         >
>>> >         > 2 of the 5 (DJFlanger and karoke) we have plug-in mappings
>>> >         come from "swh",
>>> >         > it looks like there is a Mac package available from SWH from
>>> >         here:
>>> >         > http://audacity.sourceforge.net/download/plugins...  So it
>>> >         might be easiest
>>> >         > to start there.
>>> >         >
>>> >         > Let me know how it goes.
>>> >         >
>>> >         > Cheers,
>>> >         >
>>> >         > -G
>>> >         >               __
>>> >         > --- == __/ t.O ==--
>>> >         > http://stacktrace.org/
>>> >         >
>>> >         >
>>> >         > On Tue, May 19, 2009 at 4:54 AM, Adam Davis
>>> >         <[email protected]> wrote:
>>> >         >>
>>> >         >> I've just built Mixxx on Mac OS X (without any issues,
>>> >         really -- kudos for
>>> >         >> the good documentation here:
>>> >         >> http://www.mixxx.org/wiki/doku.php/compiling_on_os_x).
>>> >         >>
>>> >         >> Well, ok, there's one issue: I tried to get the LADSPA
>>> >         plugins working (in
>>> >         >> hopes of seeing whether I might not be in over my head
>>> >         trying to contribute
>>> >         >> patches to get LADSPA closer to release).
>>> >         >>
>>> >         >> To summarize what I can see: ladspa support is enabled when
>>> >         I build:
>>> >         >>
>>> >         >> LADSPA support... enabled
>>> >         >>
>>> >         >> But Mixxx fails to load the plugins on startup:
>>> >         >>
>>> >         >> Debug: [Main]: LADSPA: file
>>> >         "../res/skins/outline/../../ladspa_presets/."
>>> >         >> Debug: [Main]: LADSPA: file
>>> >         >> "../res/skins/outline/../../ladspa_presets/.."
>>> >         >> Debug: [Main]: LADSPA: file
>>> >         >> "../res/skins/outline/../../ladspa_presets/compressor.xml"
>>> >         >> Debug: [Main]: LADSPA: Plugin  "Compress"  not found
>>> >         (required by preset
>>> >         >> "Compressor" )
>>> >         >>
>>> >         >> It's not clear to me whether this is simply a path issue
>>> >         (the ladspa
>>> >         >> plugins are appropriately built and just not being found by
>>> >         Mixxx) or
>>> >         >> whether the plugins aren't properly built for OSX. I see
>>> >         that one of the
>>> >         >> TODO's here http://www.mixxx.org/wiki/doku.php/ladspa
>>> >         suggests the plugins
>>> >         >> need to be built for OS X. Any suggestions as to how to
>>> >         proceed?
>>> >         >>
>>> >         >> Thanks.
>>> >         >>
>>> >         >> -Adam
>>> >         >>
>>> >         >>
>>> >         >>
>>> >
>>> > ------------------------------------------------------------------------------
>>> >         >> Crystal Reports - New Free Runtime and 30 Day Trial
>>> >         >> Check out the new simplified licensing option that enables
>>> >         >> unlimited royalty-free distribution of the report engine
>>> >         >> for externally facing server and web deployment.
>>> >         >> http://p.sf.net/sfu/businessobjects
>>> >         >> _______________________________________________
>>> >         >> Mixxx-devel mailing list
>>> >         >> [email protected]
>>> >         >> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>> >         >>
>>> >         >
>>> >         >
>>> >         >
>>> >
>>> > ------------------------------------------------------------------------------
>>> >         > Crystal Reports - New Free Runtime and 30 Day Trial
>>> >         > Check out the new simplified licensing option that enables
>>> >         > unlimited royalty-free distribution of the report engine
>>> >         > for externally facing server and web deployment.
>>> >         > http://p.sf.net/sfu/businessobjects
>>> >         > _______________________________________________
>>> >         > Mixxx-devel mailing list
>>> >         > [email protected]
>>> >         > https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>> >         >
>>> >         >
>>> >
>>> >
>>
>>
>

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to