About to tag 0.006 (LV2 Sampler)

10 views
Skip to first unread message

Gabriel M. Beddingfield

unread,
Mar 14, 2010, 2:19:28 PM3/14/10
to compos...@googlegroups.com

I'm about to tag another release, with the fully functional
LV2 Sampler. Between now and then (Monday? Tues?) I only
intend to add documentation, fix bugs, and tweak the Tritium
XML schema. Latest code is in Git:

http://gitorious.org/composite/composite
git clone git://gitorious.org/composite/composite.git

I would appreciate it if anyone could build and even use the
Sampler. Please report issues to this list.

Below is a bunch of information on how to utilize the LV2
sampler. It's a little pedantic... in case you've never
used anything like this before. It's not nearly as complex
as this looks.

In order to use the LV2 sampler, you will need:

* An LV2 Host (ingen[1], lv2_jack_host[2], and possibly
Ardour 3-beta[3]).

* A MIDI controller that will work with your LV2 host.
Most use jack, so jack-keyboard[4] works great. If
you have a hardware controller, that's great to.

* You'll probably want a text editor.

* Your favorite Hydrogen drumkits.

* An audio output device. :-)

Setting up the sampler plugin:

1. Build and install composite (see INSTALL.txt from
the source tree).

2. If you use an install prefix different from
/usr or /usr/local, make sure that you have
the environment variable set to PREFIX/lib/lv2.
If you don't know what I'm talking about,
don't mess with it. The default is /usr/local.

3. That's it.

Using sampler plugin with lv2_jack_host:

1. Start JACK in your favorite way (I recommend
qjackctl).

2. Start the composite sampler:

$ lv2_jack_host http://gabe.is-a-geek.org/composite/plugins/sampler/1

(Note: I am open to the idea of shortening this URI.)

3. Wire up your MIDI controller and outputs in
jack (e.g. using qjackctl).

4. Play the drumkit. If you send a program change, it
will change the current drumkit if there's one
defined.

Editing your presets:

Your presets are stored here:

~/.composite/data/presets/default.xml

If it doesn't exist, it will be created for you (using
all of your installed drumkits). The format is pretty
self-explanatory. To rearrange the patches, just edit
the file to change the numbers for the bank (coarse/fine)
and the PC (midi_number).

In the future, there will be a way to graphically edit
and save these. For now, you have to do it manually.

The file is using URI's instead of filenames or direct
paths... for example:

tritium:drumkits/GMkit

Will load the drumkit GMkit... whether it's installed in
your user directory (~/.composite) or the system
directory (PREFIX/share/composite/data/drumkits/).
However, it doesn't have to be a drumkit. You can also
load a different set of presets:

tritium:presets/show (~/.composite/data/presets/show.xml)

Or even a song:

tritium:songs/dance.h2song (~/.composite/data/songs/dance.h2song)

(Which, for the sampler, will only load the drumkit in
the song.)

You can also use a file:/// URL to load any file on your
system that Composite/Tritium supports.

file:///home/joe/foo/bar/bat/drumkit.xml

For any XML-heads out there, the XML Schema Definition
(XSD) is located at data/xml/tritium-1.xsd

Reusing Hydrogen drumkits:

To reuse your existing hydrogen drumkits, the easiest way
is to do this (copy/paste into bash):

cd ~/.composite/data/drumkits
for N in ~/.hydrogen/data/drumkits/* \
/usr/share/hydrogen/data/drumkits/* ; do
if [ -d "$N" ] ; then ln -s "$N" ; fi
done

This will symlink all of your existing kits for use by
composite.

Peace,
Gabriel

[1] http://drobilla.net/software/ingen/
[2] http://drobilla.net/software/slv2/
[3] http://ardour.org/, SVN repository
[4] http://jack-keyboard.sourceforge.net/

Harry Van Haaren

unread,
Mar 14, 2010, 3:51:36 PM3/14/10
to compos...@googlegroups.com
Hey,

All builds fine, only when trying to run it, I get an error:

(~) %: lv2_jack_host http://gabe.is-a-geek.org/composite/plugins/sampler/1
URI:    http://gabe.is-a-geek.org/composite/plugins/sampler/1
Plugin Name:    Composite Sampler
JACK Name:    Composite Sampler
Connected to JACK.
ERROR: slv2_plugin_instantiate: Unable to open library /usr/local/lib/lv2/composite_sampler.lv2/composite_sampler.so (libTritium.so: cannot open shared object file: No such file or directory)
Failed to instantiate plugin.

zsh: exit 1     lv2_jack_host http://gabe.is-a-geek.org/composite/plugins/sampler/1

Which would lead to me thinking that composite_sampler.so isnt installed right, but it does exist.

The following files are in that dir:
file:///usr/local/lib/lv2/composite_sampler.lv2/manifest.ttl
file:///usr/local/lib/lv2/composite_sampler.lv2/composite_sampler.ttl
file:///usr/local/lib/lv2/composite_sampler.lv2/composite_sampler.so

Im at a loss here...  I didnt mess with any of the install paths... so I guess it should all be in the right place!?

Sorry to not have better news! -Harry

Gabriel M. Beddingfield

unread,
Mar 14, 2010, 5:10:14 PM3/14/10
to compos...@googlegroups.com

On Sun, 14 Mar 2010, Harry Van Haaren wrote:

> ERROR: slv2_plugin_instantiate: Unable to open library
> /usr/local/lib/lv2/composite_sampler.lv2/composite_sampler.so
> (libTritium.so: cannot open shared object file: No such file or directory)
> Failed to instantiate plugin.

Make sure /usr/local/lib/libTritium.so exists and run 'sudo
ldconfig'. Then try again.

I'm updating INSTALL.txt right now.

-gabriel

Harry Van Haaren

unread,
Mar 14, 2010, 6:59:39 PM3/14/10
to compos...@googlegroups.com
I've check libTritium, that's in the right place.
so the ldconfig must have done it.

In Ingen, I dont see a big gui, just the Ingen's "one volume slider" gui..?
In the console it prints :    No LV2 GUI for /_1

Should there be a big nice gui...?
Note I didnt load a Hyrdogen Drumkit.. that might be upsettin it.. I dont have any handy.. and didnt see how to load it either... :-S

Cheers, -Harry

PS: The Filtra 3 Bandas (eq plugin) does show a gui.. so I think I have the LV2 Gtk Extension.. :-)

Gabriel M. Beddingfield

unread,
Mar 14, 2010, 7:21:29 PM3/14/10
to compos...@googlegroups.com

On Sun, 14 Mar 2010, Harry Van Haaren wrote:

> I've check libTritium, that's in the right place.
> so the ldconfig must have done it.

Good!

> In Ingen, I dont see a big gui, just the Ingen's "one volume slider" gui..?
> In the console it prints : No LV2 GUI for /_1
>
> Should there be a big nice gui...?

Nope... no GUI yet.

> Note I didnt load a Hyrdogen Drumkit.. that might be upsettin it.. I dont
> have any handy.. and didnt see how to load it either... :-S

It should have loaded the GMkit by default (which was
installed with Composite). It only writes to the console if
there's an error.

With jack-keyboard, I have to set it to octave 2... then the
letters ZSXDCVGB... on the keyboard will trigger samples.
(I think this is 1 or 2 octaves below middle C.) These are
the same notes as for Hydrogen.

Changing drumkits is done by sending a Program Change. A
default install of Composite has only 2 drum kits: GMkit
and TR808EmulationKit. So, PC's 0 and 1 will switch between
them.

-gabriel

Gabriel M. Beddingfield

unread,
Mar 16, 2010, 12:09:41 AM3/16/10
to compos...@googlegroups.com

On Sun, 14 Mar 2010, Harry Van Haaren wrote:

> Should there be a big nice gui...?
> Note I didnt load a Hyrdogen Drumkit.. that might be upsettin it.. I dont
> have any handy.. and didnt see how to load it either... :-S

Still no nice big GUI :-), but I've tweaked the user-output
on the console (among other things) -- so it should at least
confirm to you that a drumkit has loaded.

FYI, the latest Git /will/ trigger a total rebuild.

Peace,
Gabriel

Harry Van Haaren

unread,
Mar 16, 2010, 5:20:16 AM3/16/10
to compos...@googlegroups.com
Hey,
 
Not on my laptop now, but I tried it yesterday, and upon sending it some
MIDI notes, (from a midi keyboard trough a2jmidi_d), tritium crashed.
 
Cant provide any more details ATM, will update to GIT later on today/tomorrow,
build and do some more testing...
 
Will report back... -Harry

Gabriel M. Beddingfield

unread,
Mar 16, 2010, 8:09:07 AM3/16/10
to compos...@googlegroups.com

Hi Harry,

On Tue, 16 Mar 2010, Harry Van Haaren wrote:

> Not on my laptop now, but I tried it yesterday, and upon sending it some
> MIDI notes, (from a midi keyboard trough a2jmidi_d), tritium crashed.

Cool! I haven't been getting any crashes here. Thanks for
trying it out!

> Cant provide any more details ATM, will update to GIT later on
> today/tomorrow,
> build and do some more testing...

For me, the best way to get a backtrace is to enable core
dumps. E.g. add this line to /etc/security/limits.conf:

@audio soft core unlimited

Log out and then log back in. When you get a crash, you'll
usually get a core dump. Then to get a backtrace:

$ gdb --core=/path/to/core /path/to/composite-gui
[and then in gdb...]
> thread apply all bt

Peace,
Gabriel


Harry Van Haaren

unread,
Mar 16, 2010, 9:02:21 AM3/16/10
to compos...@googlegroups.com
Hi

Done a "git pull" there, got your newest, but now its not building:

[ 21%] Built target Tritium
[ 21%] Built target test_utils_Tritium
[ 21%] Building CXX object src/Tritium/test/CMakeFiles/t_AudioPort.dir/t_AudioPort.cpp.o
Linking CXX executable t_AudioPort
[ 21%] Built target t_AudioPort
[ 21%] Building CXX object src/Tritium/test/CMakeFiles/t_MidiImplementationBase.dir/t_MidiImplementationBase.cpp.o
Linking CXX executable t_MidiImplementationBase
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function `_start':
/build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status
make[2]: *** [src/Tritium/test/t_MidiImplementationBase] Error 1
make[1]: *** [src/Tritium/test/CMakeFiles/t_MidiImplementationBase.dir/all] Error 2
make: *** [all] Error 2

I'm pretty sure "cmake ." is ok, it tells me that LRDF & LibArchive are DISABLED but that's ok?
That error may be system related.. seems to be related to glibc? Not sure.. You'll know! :-)

-H

PS:  I'm getting this warning from "cmake ."  :
Warning: Source file "/home/harry/composite/version.cpp" is listed multiple times for target "Tritium".

Gabriel M. Beddingfield

unread,
Mar 16, 2010, 9:44:38 AM3/16/10
to compos...@googlegroups.com

On Tue, 16 Mar 2010, Harry Van Haaren wrote:

> [ 21%] Building CXX object
> src/Tritium/test/CMakeFiles/t_MidiImplementationBase.dir/t_MidiImplementationBase.cpp.o
> Linking CXX executable t_MidiImplementationBase
> /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function
> `_start':
> /build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined
> reference to `main'

Hmmmm... very strange.


> I'm pretty sure "cmake ." is ok, it tells me that LRDF & LibArchive are
> DISABLED but that's ok?

"cmake ." /should/ be ok, but may not work because I never
do it. It's is not recommended (by me or by CMake). So,
yeah, it may give you problems. :-)

Why not do this instead (which will work fine):

$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Debug

Also, please at least do 'cmake . -DCMAKE_BUILD_TYPE=Debug'
so that you get the debugging symbols.

But if you /really/ want to do 'cmake .', then at least run
'git clean -x -d -f' first (to clean out your source tree).
(FYI, I'm trying to reproduce this.)

If that doesn't work, 'make VERBOSE=1' gives more
information that'll help to diagnose the problem.

> That error may be system related.. seems to be related to glibc? Not sure..
> You'll know! :-)

It means that when it wasn't properly linked to the Boost
Unit Test framework (which is supposed to supply the main()
function for all the tests).

> PS: I'm getting this warning from "cmake ." :
> Warning: Source file "/home/harry/composite/version.cpp" is listed multiple
> times for target "Tritium".

Hmmm... another clue... :-)

Thanks,
gabriel

Harry Van Haaren

unread,
Mar 16, 2010, 10:15:19 AM3/16/10
to compos...@googlegroups.com
cmake .. -D...
Yup that's proving a better solution... Built fine, giving sound from MIDI input (jack-keyboard).
No probs so far, although it seems there's a lot of delay between sending a MIDI command &
hearing the sample. (Jack latency @ 11ms). GUI mode ONLY!

On loading CompSamp into Ingen, the delay has vanished... Still using Jack-Keyboard for input,
and the same Jack Server for output... Working a charm there!

-H

Gabriel M. Beddingfield

unread,
Mar 16, 2010, 10:41:49 AM3/16/10
to compos...@googlegroups.com

On Tue, 16 Mar 2010, Harry Van Haaren wrote:

> cmake .. -D...
> Yup that's proving a better solution... Built fine, giving sound from MIDI
> input (jack-keyboard).
> No probs so far, although it seems there's a lot of delay between sending a
> MIDI command &
> hearing the sample. (Jack latency @ 11ms). GUI mode ONLY!

This is with composite-gui, right? If so -- yes, I've
noticed that. The JACK Midi implementation on the gui is a
little kludge-ey (long story). It's on the to-do list after
getting a GUI for the plugin.

> On loading CompSamp into Ingen, the delay has vanished... Still using
> Jack-Keyboard for input,
> and the same Jack Server for output... Working a charm there!

Woo-hoo!

Yeah, I've been pleasently surprised with its
responsiveness. :-)

My favorite is that if a note is playing when you change
drumkits... it will finish playing (with the old sound).
Switching between kits happens fast and seamlessly.

-gabriel

Reply all
Reply to author
Forward
0 new messages