Hi all! I found LMMS did not include one of my favority synths, the DX7 emulator "hexter" http://dssi.sourceforge.net/hexter.html , so I hacked up some glue to achieve this.
My main goal was to alter the hexter source as little as possible, in order to
benefit from any future development easily. Most of the work was simply
understanding and finding the APIs; If you could drop a note somewhere e.g.
in the README that says "the documentation is in the headers, RTFS" that
would help a lot to get started ;-)
Even there I couldn't find a clear description of what exactly an overloaded
instrument::play() method is expected to do, I hope I got it correct. Please
comment!
The code is early alpha, so use with caution. The GUI functions are all stubs,
and will crash LMMS when invoked; so all you currently get is the default
program of the electric piano. I could imagine to have some sort of DX7 patch
editor there, with a picture of one of the 32 "algorithms", and settings for
the 6 oscillators.
I would also like to hear some comments on the concepts of hexter "instances"
versus the LMMS plugin, and its own handling of "global" polyphony, as well
as the program changes possible for MIDI instruments.
Attached is only the absolute minimum code to stick hexter into lmms. You'll
need to
* grab hexter sources from sourceforge.
* move its "src" subdir to LMMS' "plugins/hexter"
* you may remove gui_*, Makefile* and hexter.c; they are not needed for LMMS.
* apply the attached glue patch
* untar the LMMS adaptor files from attached tarball
* compile and enjoy.
Torsten
--- CMakeLists.txt.orig 2009-08-11 18:52:18.000000000 +0200
+++ CMakeLists.txt 2009-09-12 01:53:56.000000000 +0200
@@ -2,6 +2,7 @@ ADD_SUBDIRECTORY(audio_file_processor)
ADD_SUBDIRECTORY(bass_booster)
ADD_SUBDIRECTORY(bit_invader)
ADD_SUBDIRECTORY(flp_import)
+ADD_SUBDIRECTORY(hexter)
ADD_SUBDIRECTORY(kicker)
ADD_SUBDIRECTORY(ladspa_browser)
ADD_SUBDIRECTORY(ladspa_effect)
diff -Burbp hexter/dx7_voice_data.h hexter/dx7_voice_data.h
--- hexter/dx7_voice_data.h 2009-01-02 08:59:05.000000000 +0100
+++ hexter/dx7_voice_data.h 2009-10-25 15:14:42.000000000 +0100
@@ -26,7 +26,7 @@
/* dx7_voice_data.c */
extern dx7_patch_t dx7_voice_init_voice;
extern uint8_t dx7_init_performance[DX7_PERFORMANCE_SIZE];
-extern char base64[];
+// extern char base64[];
char *dssp_error_message(const char *fmt, ...);
int decode_7in6(const char *string, int expected_length, uint8_t *data);
diff -Burbp hexter/hexter_synth.c hexter/hexter_synth.c
--- hexter/hexter_synth.c 2009-01-02 09:10:39.000000000 +0100
+++ hexter/hexter_synth.c 2009-10-25 15:16:14.000000000 +0100
@@ -680,6 +680,7 @@ hexter_instance_select_program(hexter_in
}
}
+#ifdef HAVE_DSSI
/*
* hexter_instance_set_program_descriptor
*/
@@ -701,6 +702,7 @@ hexter_instance_set_program_descriptor(h
pd->Name = name;
return 1;
}
+#endif
/*
* hexter_instance_handle_patches
diff -Burbp hexter/hexter_synth.h hexter/hexter_synth.h
--- hexter/hexter_synth.h 2009-01-02 09:11:13.000000000 +0100
+++ hexter/hexter_synth.h 2009-10-25 15:18:20.000000000 +0100
@@ -29,7 +29,9 @@
#include <pthread.h>
#include <ladspa.h>
+#ifdef HAVE_DSSI
#include <dssi.h>
+#endif
#include "hexter_types.h"
#include "hexter.h"
@@ -168,10 +170,12 @@ void hexter_instance_init_controls(hext
void hexter_instance_set_performance_data(hexter_instance_t *instance);
void hexter_instance_select_program(hexter_instance_t *instance,
unsigned long bank, unsigned long program);
+#ifdef HAVE_DSSI
int hexter_instance_set_program_descriptor(hexter_instance_t *instance,
DSSI_Program_Descriptor *pd,
unsigned long bank,
unsigned long program);
+#endif
char *hexter_instance_handle_patches(hexter_instance_t *instance,
const char *key, const char *value);
char *hexter_instance_handle_edit_buffer(hexter_instance_t *instance,
hexter-lmms-mini.tar.bz2
Description: application/tbz
------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference
_______________________________________________ LMMS-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/lmms-devel
