Bruce Wheaton wrote:Good stuff Vinnie. I see a lot of generic solutions for problems I've had to deal with -AudioBufferPools, cross-thread object lifetimes with defined deletion threads, etc. I would probably have wanted to use them.
Cool thanks. The library is tuned towards everything that an audio plugin or audio host author would want to do (including making cool user interfaces, see LabColour, FreeTypeFaces, and RadialImageConvolutionKernel). It consolidates all of the code that I've posted in the Juce forums over the years into a single unified library in the Juce module style.
I don't see what you're doing with lua though. Lubridge implies you're mapping some classes to lua?
Some of the external libraries in there are only being used by my private application code. I've included these external projects as individual modules so that someone can build a project that uses them in a way that is largely "idiot proof." I personally despise when I pull sources to an open source project, and then I have to go out and download a bunch of external dependencies. Ever have to deal with downloading and building libCurl, getting the Steinberg headers, getting some ODBC toolkit, etc.. yadda yadda? Yuck.
So with these externals I can build code on top of it and distribute the stuff in a way where the average JUCE user or plugin writer doesn't have to fiddle with downloading and configuring projects (or worse, install and run autotools, yikes!) Sometime soon the externals will be upgraded so you can use existing libraries when it makes sense (like the SQLite that comes with iOS).
As for luabridge, its a pretty nifty wrapper that lets you easily create Lua bindings for your own C++ classes. The author is no longer developing it so I am taking it over and cleaning it up since I use it in my own project.
On the other hand, some externals are needed for classes in VFLib. FreeTypeFaces requires FreeType. Rather than forcing the user to go out and download FreeType and configure include paths, I put the amalgamated version directly into VFLib, as its own module (vf_freetype). So you can get FreeTypeFaces working easily without any hassle.
The entire module vf_db (which is based on soci) provides a robust C++ front end for accessing a SQLite database. There is a vf_sqlite module which has the latest SQLite amalgamated sources included. So to use vf_db requires no additional effort just add the module and go! Now if you're on iOS, SQLite is built into the operating system and soon I will update my headers so that they use the operating system provided SQLite. vf_db is pretty cool, the following code actually works:
- Code: Select all
session sql ("mydatabase.db");
int id = ...;
sl << "select name, salary from persons where id = " << id, into(name), into(salary);
I'm also planning on building some goodies on top of the externals. For example, a CompressedHeapBlock that extends the juce::HeapBlock to allow compressing and uncompressing of the data using the included bZip2 module.
VFLib requires that you add a few lines to your existing AppConfig.h, a template for doing so is provided in AppConfigTemplate.