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/
> 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
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
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
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
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
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