Showing posts with label linux audio. Show all posts
Showing posts with label linux audio. Show all posts

Wednesday, May 25, 2011

Lv2: New host lib, lilv, a newbies guid to LV2

Hey All,

Ever tried to get your head around the Lv2 spec? Me too, and if one isn't used to the "lingo" of URI's, RDF's, and various other path etc it can all be a bit daunting. Yet some of the coolest and best plugins (check: this Parametric EQ, or this IR reverb) are on the Lv2 standard, so you really do want to support them...

If you wanna get your hands dirty, skip down to the bulletpoints, that's what you'll need to do to get started!

With this new library from David Robillard writing hosts to use these plugins should become easier & faster. The library I'm talking about here is of course Lilv. It depends on two of Robillards other libraries, namely Serd & Sord.

Serd handles the reading & writing of RDF data, as well as Turtle & NTriples. Don't worry, I don't know what they are either. Perhaps in the future I'll try understand them...
Sord is a library for storing RDF data in memory... apparently we'll need that!?

Getting Started:
Create a folder somewhere where's your gonna do all this stuff.

Grab all of the following:
http://download.drobilla.net/lilv-0.4.0.tar.bz2
http://download.drobilla.net/sord-0.4.0.tar.bz2
http://download.drobilla.net/serd-0.4.0.tar.bz2

Ensure these are installed:
lv2core

Untar the lot of those .tar.bz2's from drobilla, and cd into the serd-0.4.0 dir.
./waf configure
./waf
sudo ./waf install

cd into the sord-0.4.0 dir,
./waf configure
./waf
sudo ./waf install

then cd into lilv-0.4.0
./waf configure

This shouldn't give any problems, as we've just installed the 2 dependencies you probably didn't have. If JACK or any other common issues arise, just fix them.

If you get the following errors:
Checking for header lv2/lv2plug.in/ns/lv2core/lv2.h : no
Checking for header lv2/lv2plug.in/ns/ext/event/event.h : no
Checking for header lv2/lv2plug.in/ns/ext/event/event-helpers.h : no
Checking for header lv2/lv2plug.in/ns/ext/uri-map/uri-map.h : no

Then this is what you do:
1. Direct your browser to http://lv2plug.in/spec/
2. Grab lv2core,lv2-event, and lv2-uri-map.
3. Untar lv2core, ./waf configure, ./waf, ./waf install it (the first one should be fixed now)
4. Run "lv2config", this creates some symlinks around to headers
5. Bop open a terminal, cd /usr/include/lv2/lv2plug.in/ns/
6. sudo mkdir ext
7. Copy the event folder into ext, and copy the uri-map folder in too.
8. *CHECK THE DIRECTORY STRUCTURE!!!* the output of ./waf configure tells you *exactly* where its looking for the files, *PUT THEM THERE*. Can't stress this enough. Use your brain & figure out what's not where its meant to be

./waf configure should print out yes yes yes yes yes yes to all dependencies now, so
./waf build,

Only if *building* fails, ie: ./waf fails like so:
[28/36] c: utils/lv2jack.c -> build/utils/lv2jack.c.7.o
In file included from ../utils/lv2jack.c:29:0:
/usr/include/lv2/lv2plug.in/ns/ext/event/event-helpers.h:28:52: fatal error: lv2/http/lv2plug.in/ns/ext/event/event.h: No such file or directory
compilation terminated.

Get to your favorite text editor, and sudo up the cow powers, because we've got a header to edit.
1. sudo /usr/include/lv2/lv2plug.in/ns/ext/event/event-helpers.h
2. Go to line 28. its contents should be: #include "lv2/http/lv2plug.in/ns/ext/event/event.h"
3. Change those contents to "#include "lv2/lv2plug.in/ns/ext/event/event.h"
4. ./waf build again.

Edit: The author of the event extension is planning a release to fix this issue.

and then sudo ./waf install the whole thing.

Boom! You've got lilv running.
Check the lilv-0.4.0/utils directory for some examples of using the library.
If you've built lilv, then in /build/utils there are the binaries of the examples. Run them while looking at the source, understand what to do.

In the /bindings/python dir there are 2 files, lv2_list.py & lv2_apply.py
They might provide some insight into the steps nessiary to get Lv2 plugins instantiated and in a good mood to work... :D

Finally a huge thanks to all the members of LAD who have developed this awesome standard, awesome plugins, and last but not least, awesome hosts! :D
Cheers, -Harry

Wednesday, May 11, 2011

Luppp: Stage 3

Hey All,

Got some great news... there was a nasty stupid bug in the GUI redraw of the waveforms, (which I mistakenly though was due to threading) but it turns out the code was entering a loop with an increment that evaluated to zero... But its fixed now! :)

So with the GUI up and running one can see how far along the loops are, and what "amount" of the loop is going to be played.. ie "zooming" in on the part of the loop that's active.

Also the engine has been getting some attention during the Linux Audio Conference, held in Maynooth this year! This means that initial CSound support exists, so effects & instruments can be coded up in CSound to be played live as if its an internal synth / effects box. Lots of new possibilites now, and due to the csound .csd files being text based, they will be real easy to share & merge, allowing all users to contribue & share presets for effects with eachother.. :)

Mandatory screenshot:

Till next! -Harry

Wednesday, January 5, 2011

Luppp: Getting there

Hey all,

Serious progress going on! Audio input can be recorded (in time with the timebase) played back at a certain bpm (in sync with other files at the same bpm) effects can be applied to the signal stream (LADSPA only for now), and the resulting signals can be mixed with logarithmic faders, and finally the peak meters show you your levels ;-)


As you can see: there's a shiny "Add Track" button at the top of the screen, dynamically adds tracks to infinity...

The number in the left of the "track" widgets is its OSC ID, you'll need it to do things to that track!

The smaller numbers show how many beats there are in the loaded sample, and how many have elapsed.

The record button is there so you can enable.. duh


The orange faders give volume control (with a log scale of x^3, feels nice with a MIDI controller ;-)  Then the master output levels, and then the HUGE number to tell you what beat your on!

Next features: PFL on each mixer track, master faders, PFL faders, busses (sends), GUI interface to LADSPA effects (engine done :-)

Also needed: Some threading to allow RT thread not have to load / write audio samples, send large OSC messages etc. Working on it!

Cheers, till next! -Harry

Sunday, December 19, 2010

Luppp: More features

Hey,

Luppp got its chrismas pressie early: Live audio input. As well as this, the start of a "timeline" class has been made, and this allows any recorded loops to stay in sync with eachother... :-)

GUI stuff has been deleted except for the re-usable stuff, and over the next while I intend to get some basic waveform & mixer widgets implemented. That is if i can stop myself recording all sorts of crazy sounds & looping them.

Till next, -Harry

Saturday, November 13, 2010

Luppp revived: reSampler

Hey,

I've just spent a lil while getting Luppp into a launchpad repo, and hacking the code a little in a small sub-project called reSampler.

Its gonna a mini JACK app that will scramble a .wav loop D'n'B style :-)
Hopefully Ill figure out how I actually want to control this little re-sampling program.

At the moment, I'm just concidering just a simple copy of say the 3rd part of an 8 part loop to the 5th part. An OSC interface in this case will be:

/resampler/load "sample.wav"
/resampler/setNumParts 8
/resampler/swap 3 5
/resampler/swaprev 3 5

swap just swaps the parts, swaprev, swaps & reverses the direction of the part.

I have a GTK widget that can draw files but it needs some optimization... It takes about 3 secs for a normal length loop atm.

More info on the way once I've got stuff implemented.
Cheers, -Harry




Clean drum looop












Same drum loop with reverb effect:





OSC interface has been implemented, can now swap parts around, reverse parts of the clip and revert to the original loop using ONLY OSC COMMANDS! :-)

Saturday, October 30, 2010

Automate: Another stage along the way!

Hey all,

Recently been quite busy hence the lack of posts, but today there's been an improvement in Automate. It actually works! :-)

It's quite a simple program, you input a MIDI Channel and CC, click in an automation line, and its gonna keep on repeating that line in CC's.

Mandatory Screenshot:


Currently you're to compile it yourself, but I'm looking into getting a PPA setup.
Ill keep yee up to date. :-)
-Harry

PS: This will be (publicly) announced & released eventually, for now it needs some reworking. (it sends its MIDI info every JACK frame, which is going to slow it down *a lot*.)

Wednesday, January 6, 2010

The Luppp Project

Hey all,

I've started a project a good while back, called Luppp.
Its a live looper. Woohoo you think, another one. Yes.

Why?
(IMO) Some loopers:
- dont stimulate the creative musical side in an artist. (look ugly)
- have too much functionality. (buffer features, advanced menu's)

- only support MIDI or Audio, (multiple programs = messy desktop)
- "feel" too laggy.. (Ableton's UI?)

Why go to the bother of writing it yourself? Well somebody needs to,
and there are other efforts going on (Check Composite, Seq24).
Although Seq24 is a great MIDI looper, I always find the music I make using it is the "same old" song I do every time.

How is Luppp being built?
C++ baby. And Python. And OSC.
Currently the UI is totally built using Gtkmm & C++ , for fast widget drawing.
Python is used as the "prototype" for backends.
OSC is implemented in both the UI & the backend, to allow flexibility in "how" you use the program.

UI:
Gets loaded from a GtkBuilder XML file, signals get connected to appropriate parts of it, and its shown. The rest is handled by callback functions in C++.

Backends:
Currently written in Python, although I do intend to move these over to C++ once nessisary. They currently "do" the stuff you want Luppp to.

OSC:
The Luppp UI has an OSC server. This means you can send commands to Luppp, and it will respond as if you clicked somewhere. This is an amazing feature, as it allows ALL parameters inside Luppp to be controlled using external hardware if you want to. So "No-Computer-Nessisary" kinda applies.

When can we expect an Alpha release?   : Buzz off. Ill let you know.
Where can we get your source code?       : Download it here.
How can we informed when its released?: LinuxAudioAnnounce & a post here.

Cheerio, -Harry