Update of /cvsroot/pure-data/externals/postlude/dssi/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21163/src
Modified Files:
dssi~.c dssi~.h
Log Message:
Fixed plug_plugin.
Index: dssi~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/postlude/dssi/src/dssi~.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** dssi~.c 20 Mar 2006 14:54:19 -0000 1.10
--- dssi~.c 23 Mar 2006 08:48:06 -0000 1.11
***************
*** 353,357 ****
static void osc_error(int num, const char *msg, const char *where)
{
! post("osc error %d in path %s: %s\n",num, where, msg);
}
--- 353,357 ----
static void osc_error(int num, const char *msg, const char *where)
{
! post("dssi~: osc error %d in path %s: %s\n",num, where, msg);
}
***************
*** 511,515 ****
if (ctrl_input_index >= x->plugin_controlIns) {
! post("plugin~: control port number %d is out of range [1, %d]",
ctrl_input_index + 1, x->plugin_controlIns);
return;
--- 511,515 ----
if (ctrl_input_index >= x->plugin_controlIns) {
! post("dssi~: control port number %d is out of range [1, %d]",
ctrl_input_index + 1, x->plugin_controlIns);
return;
***************
*** 522,528 ****
port = x->plugin_ControlInPortNumbers[ctrl_input_index];
- portno =
- x->instances[instance].plugin_PortControlInNumbers[ctrl_input_index + 1];
#if DEBUG
post("Global ctrl input number = %d", ctrl_input_index);
--- 522,533 ----
port = x->plugin_ControlInPortNumbers[ctrl_input_index];
+ /* FIX - temporary hack */
+ if(x->is_DSSI)
+ portno =
+ x->instances[instance].plugin_PortControlInNumbers[ctrl_input_index + 1];
+ else
+ portno =
+ x->instances[instance].plugin_PortControlInNumbers[ctrl_input_index];
#if DEBUG
post("Global ctrl input number = %d", ctrl_input_index);
***************
*** 602,606 ****
if (instance > x->n_instances || instance < 0){
! post("dssi~: control: Invalid instance number");
return;
}
--- 607,611 ----
if (instance > x->n_instances || instance < 0){
! post("dssi~: control: invalid instance number");
return;
}
***************
*** 787,795 ****
#if DEBUG
post("Updating GUI program");
! #endif
! lo_send(x->instances[instance].uiTarget,
! x->instances[instance].ui_osc_program_path, "ii",
! x->instances[instance].currentBank,
! x->instances[instance].currentProgram);
}
x->instances[instance].uiNeedsProgramUpdate = 0;
--- 792,803 ----
#if DEBUG
post("Updating GUI program");
! #endif
! /* FIX - this is a hack to make text ui work*/
! if(x->instances[instance].uiTarget)
! lo_send(x->instances[instance].uiTarget,
! x->instances[instance].ui_osc_program_path, "ii",
! x->instances[instance].currentBank,
! x->instances[instance].currentProgram);
!
}
x->instances[instance].uiNeedsProgramUpdate = 0;
***************
*** 817,821 ****
if (x->instances[instance].pluginPrograms[i].Bank == bank &&
x->instances[instance].pluginPrograms[i].Program == program) {
! post("OSC: setting bank %u, program %u, name %s\n",
bank, program, x->instances[instance].pluginPrograms[i].Name);
--- 825,829 ----
if (x->instances[instance].pluginPrograms[i].Bank == bank &&
x->instances[instance].pluginPrograms[i].Program == program) {
! post("dssi~: OSC: setting bank %u, program %u, name %s\n",
bank, program, x->instances[instance].pluginPrograms[i].Name);
***************
*** 1127,1131 ****
if(!(dp = opendir(gui_base))){
! post("can't open %s, unable to find GUI", gui_base);
return;
}
--- 1135,1139 ----
if(!(dp = opendir(gui_base))){
! post("dssi~: can't open %s, unable to find GUI", gui_base);
return;
}
***************
*** 1135,1139 ****
if (strchr(dir_entry->d_name, '_')){
if (strstr(dir_entry->d_name, "gtk") ||
! strstr(dir_entry->d_name, "qt"))
break;
}
--- 1143,1148 ----
if (strchr(dir_entry->d_name, '_')){
if (strstr(dir_entry->d_name, "gtk") ||
! strstr(dir_entry->d_name, "qt") ||
! strstr(dir_entry->d_name, "text"))
break;
}
***************
*** 1161,1165 ****
sprintf(osc_url, "%s/%s", x->osc_url_base,
x->instances[instance].osc_url_path);
! post("Instance %d OSC URL is: %s",instance, osc_url);
#if DEBUG
post("Trying to open GUI!");
--- 1170,1174 ----
sprintf(osc_url, "%s/%s", x->osc_url_base,
x->instances[instance].osc_url_path);
! post("dssi~: instance %d URL: %s",instance, osc_url);
#if DEBUG
post("Trying to open GUI!");
***************
*** 1192,1196 ****
if(chan > x->n_instances - 1 || chan < 0){
! post("Note discarded: MIDI data is destined for a channel that doesn't exist");
return;
}
--- 1201,1205 ----
if(chan > x->n_instances - 1 || chan < 0){
! post("dssi~: note discarded: MIDI data is destined for a channel that doesn't exist");
return;
}
***************
*** 1516,1520 ****
if(!strcmp(msg_type, "load") && x->descriptor->configure){
filename = argv[1].a_w.w_symbol->s_name;
! post("loading patch: %s for instance %d", filename, instance);
if(!strcmp(x->descriptor->LADSPA_Plugin->Label, "hexter") ||
--- 1525,1529 ----
if(!strcmp(msg_type, "load") && x->descriptor->configure){
filename = argv[1].a_w.w_symbol->s_name;
! post("dssi~: loading patch: %s for instance %d", filename, instance);
if(!strcmp(x->descriptor->LADSPA_Plugin->Label, "hexter") ||
***************
*** 1528,1532 ****
/*From dx7_voice_data by Sean Bolton */
if(fp == NULL){
! post("Unable to open patch file: %s", filename);
return 0;
}
--- 1537,1541 ----
/*From dx7_voice_data by Sean Bolton */
if(fp == NULL){
! post("dssi~: unable to open patch file: %s", filename);
return 0;
}
***************
*** 1534,1538 ****
(filelength = ftell(fp)) == -1 ||
fseek(fp, 0, SEEK_SET)) {
! post("couldn't get length of patch file: %s",
filename);
fclose(fp);
--- 1543,1547 ----
(filelength = ftell(fp)) == -1 ||
fseek(fp, 0, SEEK_SET)) {
! post("dssi~: couldn't get length of patch file: %s",
filename);
fclose(fp);
***************
*** 1540,1548 ****
}
if (filelength == 0) {
! post("patch file has zero length");
fclose(fp);
return 0;
} else if (filelength > 16384) {
! post("patch file is too large");
fclose(fp);
return 0;
--- 1549,1557 ----
}
if (filelength == 0) {
! post("dssi~: patch file has zero length");
fclose(fp);
return 0;
} else if (filelength > 16384) {
! post("dssi~: patch file is too large");
fclose(fp);
return 0;
***************
*** 1551,1555 ****
malloc(filelength))) {
post(
! "couldn't allocate memory for raw patch file");
fclose(fp);
return 0;
--- 1560,1564 ----
malloc(filelength))) {
post(
! "dssi~: couldn't allocate memory for raw patch file");
fclose(fp);
return 0;
***************
*** 1557,1561 ****
if (fread(raw_patch_data, 1, filelength, fp)
!= (size_t)filelength) {
! post("short read on patch file: %s", filename);
free(raw_patch_data);
fclose(fp);
--- 1566,1570 ----
if (fread(raw_patch_data, 1, filelength, fp)
!= (size_t)filelength) {
! post("dssi~: short read on patch file: %s", filename);
free(raw_patch_data);
fclose(fp);
***************
*** 1602,1606 ****
if (filelength != DX7_DUMP_SIZE_BULK ||
raw_patch_data[DX7_DUMP_SIZE_BULK - 1] != 0xf7) {
! post("badly formatted DX7 32 voice dump!");
count = 0;
--- 1611,1615 ----
if (filelength != DX7_DUMP_SIZE_BULK ||
raw_patch_data[DX7_DUMP_SIZE_BULK - 1] != 0xf7) {
! post("dssi~: badly formatted DX7 32 voice dump!");
count = 0;
***************
*** 1610,1614 ****
raw_patch_data[DX7_DUMP_SIZE_BULK - 2]) {
! post("DX7 32 voice dump with bad checksum!");
count = 0;
--- 1619,1623 ----
raw_patch_data[DX7_DUMP_SIZE_BULK - 2]) {
! post("dssi~: DX7 32 voice dump with bad checksum!");
count = 0;
***************
*** 1625,1629 ****
/* unsuccessful load */
! post("unknown patch bank file format!");
count = 0;
--- 1634,1638 ----
/* unsuccessful load */
! post("dssi~: unknown patch bank file format!");
count = 0;
***************
*** 1644,1648 ****
}
else{
! post("Sorry, %s patches are not supported",
x->descriptor->LADSPA_Plugin->Label);
}
--- 1653,1657 ----
}
else{
! post("dssi~: %s patches are not supported",
x->descriptor->LADSPA_Plugin->Label);
}
***************
*** 1654,1658 ****
x->project_dir = malloc((pathlen) * sizeof(char));
atom_string(&argv[1], x->project_dir, pathlen);
! post("Project directory for instance %d has been set to: %s", instance, x->project_dir);
key = DSSI_PROJECT_DIRECTORY_KEY;
value = x->project_dir;
--- 1663,1667 ----
x->project_dir = malloc((pathlen) * sizeof(char));
atom_string(&argv[1], x->project_dir, pathlen);
! post("dssi~: project directory for instance %d has been set to: %s", instance, x->project_dir);
key = DSSI_PROJECT_DIRECTORY_KEY;
value = x->project_dir;
***************
*** 1660,1664 ****
else if(!strcmp(msg_type, "dir"))
! post("%s %s: operation not supported", msg_type,
argv[1].a_w.w_symbol->s_name);
--- 1669,1673 ----
else if(!strcmp(msg_type, "dir"))
! post("dssi~: %s %s: operation not supported", msg_type,
argv[1].a_w.w_symbol->s_name);
***************
*** 1735,1742 ****
}
! static void dssi_bang(t_dssi_tilde *x)
{
! post("dssi~: running %d instances of %s", x->n_instances,
! x->descriptor->LADSPA_Plugin->Label);
}
--- 1744,1765 ----
}
! static void dssi_tilde_bang(t_dssi_tilde *x)
{
! t_atom at[3];
!
! at[0].a_type = A_FLOAT;
! at[1].a_type = A_SYMBOL;
! at[2].a_type = A_SYMBOL;
!
! if(x->plugin_label != NULL){
! at[0].a_w.w_float = x->n_instances;
! at[1].a_w.w_symbol = gensym ((char *)x->plugin_label);
! }
! else{
! at[0].a_w.w_float = 0;
! at[1].a_w.w_symbol = gensym ("plugin");
! }
! at[2].a_w.w_symbol = gensym ("instances");
! outlet_anything (x->control_outlet, gensym ("running"), 3, at);
}
***************
*** 1748,1754 ****
t_float **outputs = (t_float **)(&w[3] + x->plugin_ins);
int i, n, timediff, framediff, instance = 0;
! /*See comment for dssi_tilde_plug_plugin
if(x->dsp){
! x->dsp_loop = 1;*/
for(i = 0; i < x->plugin_ins; i++)
--- 1771,1777 ----
t_float **outputs = (t_float **)(&w[3] + x->plugin_ins);
int i, n, timediff, framediff, instance = 0;
! /*See comment for dssi_tilde_plug_plugin */
if(x->dsp){
! x->dsp_loop = 1;
for(i = 0; i < x->plugin_ins; i++)
***************
*** 1766,1770 ****
if(instance > x->n_instances || instance < 0){
post(
! "%s: discarding spurious MIDI data, for instance %d",
x->descriptor->LADSPA_Plugin->Label,
instance);
--- 1789,1793 ----
if(instance > x->n_instances || instance < 0){
post(
! "dssi~: %s: discarding spurious MIDI data, for instance %d",
x->descriptor->LADSPA_Plugin->Label,
instance);
***************
*** 1776,1780 ****
if (x->instanceEventCounts[instance] == EVENT_BUFSIZE){
! post("MIDI overflow on channel %d", instance);
continue;
}
--- 1799,1803 ----
if (x->instanceEventCounts[instance] == EVENT_BUFSIZE){
! post("dssi~: MIDI overflow on channel %d", instance);
continue;
}
***************
*** 1842,1847 ****
memcpy(x->outlets[i], (t_outlet *)x->plugin_OutputBuffers[i], N *
sizeof(LADSPA_Data));*/
! /* x->dsp_loop = 0;
! }*/
return w + (x->plugin_ins + x->plugin_outs + 3);
}
--- 1865,1870 ----
memcpy(x->outlets[i], (t_outlet *)x->plugin_OutputBuffers[i], N *
sizeof(LADSPA_Data));*/
! x->dsp_loop = 0;
! }
return w + (x->plugin_ins + x->plugin_outs + 3);
}
***************
*** 2090,2094 ****
}
else{
! post("Invalid library name; must end in .so");
return (void *) x;
}
--- 2113,2117 ----
}
else{
! post("dssi~: invalid library name; must end in .so");
return (void *) x;
}
***************
*** 2137,2141 ****
instantiate(x->descriptor->LADSPA_Plugin, x->sr);
if (!x->instanceHandles[i]){
! post("instantiation of instance %d failed", i);
stop = 1;
break;
--- 2160,2164 ----
instantiate(x->descriptor->LADSPA_Plugin, x->sr);
if (!x->instanceHandles[i]){
! post("dssi~: instantiation of instance %d failed", i);
stop = 1;
break;
***************
*** 2149,2153 ****
for(i = 0;i < x->n_instances; i++)
dssi_tilde_activate(x, i);
! if(x->is_DSSI)
for(i = 0;i < x->n_instances; i++)
dssi_tilde_osc_setup(x, i);
--- 2172,2176 ----
for(i = 0;i < x->n_instances; i++)
dssi_tilde_activate(x, i);
! if(x->is_DSSI){
for(i = 0;i < x->n_instances; i++)
dssi_tilde_osc_setup(x, i);
***************
*** 2158,2169 ****
for(i = 0;i < x->n_instances; i++)
dssi_tilde_init_programs(x, i);
}
}
}
else
! post("Error: plugin not loaded");
}
else
! post("No arguments given, please supply a path");
x->control_outlet =
--- 2181,2193 ----
for(i = 0;i < x->n_instances; i++)
dssi_tilde_init_programs(x, i);
+ }
}
}
}
else
! post("dssi~: error: plugin not loaded");
}
else
! post("dssi~: no arguments given, please supply a path");
x->control_outlet =
***************
*** 2187,2192 ****
sizeof(t_float *));
*/}
!
! post("dssi~: ready for input");
}
return (void *)x;
--- 2211,2217 ----
sizeof(t_float *));
*/}
! x->dsp = 1;
! post("dssi~: %d instances of %s, ready.", x->n_instances,
! x->plugin_label);
}
return (void *)x;
***************
*** 2194,2198 ****
! /* This method is currently disabled. PD's inlet/outlet handling seems buggy if you try to create ins/outs on the fly. Needs further investigation ...*/
static void dssi_tilde_plug_plugin(t_dssi_tilde *x, t_symbol *s, int argc, t_atom *argv){
--- 2219,2223 ----
! /* This method is currently buggy. PD's inlet/outlet handling seems buggy if you try to create ins/outs on the fly. Needs further investigation ...*/
static void dssi_tilde_plug_plugin(t_dssi_tilde *x, t_symbol *s, int argc, t_atom *argv){
***************
*** 2207,2211 ****
dssi_tilde_init_plugin(x);
dssi_tilde_load_plugin(x, argc, argv);
-
}
--- 2232,2235 ----
***************
*** 2219,2223 ****
t_dssi_tilde *x = (t_dssi_tilde *)pd_new(dssi_tilde_class);
! post("==============================\ndssi~ %.2f\n a DSSI/LADSPA host for Pure Data\n==============================", VERSION);
dssi_tilde_init_plugin(x);
--- 2243,2247 ----
t_dssi_tilde *x = (t_dssi_tilde *)pd_new(dssi_tilde_class);
! post("\n========================================\ndssi~: DSSI/LADSPA host - version %.2f\n========================================\n", VERSION);
dssi_tilde_init_plugin(x);
***************
*** 2227,2230 ****
--- 2251,2255 ----
x->time_ref = (t_int)clock_getlogicaltime;
x->blksize = sys_getblksize();
+ x->dsp = 0;
pthread_mutex_init(&x->midiEventBufferMutex, NULL);
***************
*** 2249,2253 ****
(t_method)dssi_tilde_free, sizeof(t_dssi_tilde), 0, A_GIMME, 0);
class_addlist(dssi_tilde_class, dssi_tilde_list);
! class_addbang(dssi_tilde_class, dssi_bang);
class_addmethod(dssi_tilde_class,
(t_method)dssi_tilde_dsp, gensym("dsp"), 0);
--- 2274,2278 ----
(t_method)dssi_tilde_free, sizeof(t_dssi_tilde), 0, A_GIMME, 0);
class_addlist(dssi_tilde_class, dssi_tilde_list);
! class_addbang(dssi_tilde_class, dssi_tilde_bang);
class_addmethod(dssi_tilde_class,
(t_method)dssi_tilde_dsp, gensym("dsp"), 0);
***************
*** 2262,2269 ****
class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_reset,
gensym ("reset"), A_DEFFLOAT, 0);
! /* class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_plug_plugin,
gensym ("plug"),A_GIMME,0);
class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_activate_plugin,
! gensym ("active"),A_DEFFLOAT,0);*/
class_sethelpsymbol(dssi_tilde_class, gensym("help-dssi"));
CLASS_MAINSIGNALIN(dssi_tilde_class, t_dssi_tilde, f);
--- 2287,2294 ----
class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_reset,
gensym ("reset"), A_DEFFLOAT, 0);
! class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_plug_plugin,
gensym ("plug"),A_GIMME,0);
class_addmethod (dssi_tilde_class,(t_method)dssi_tilde_activate_plugin,
! gensym ("active"),A_DEFFLOAT,0);
class_sethelpsymbol(dssi_tilde_class, gensym("help-dssi"));
CLASS_MAINSIGNALIN(dssi_tilde_class, t_dssi_tilde, f);
Index: dssi~.h
===================================================================
RCS file: /cvsroot/pure-data/externals/postlude/dssi/src/dssi~.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** dssi~.h 17 Mar 2006 17:08:49 -0000 1.6
--- dssi~.h 23 Mar 2006 08:48:06 -0000 1.7
***************
*** 42,46 ****
! #define VERSION 0.89
#define EVENT_BUFSIZE 1024
#define OSC_BASE_MAX 1024
--- 42,46 ----
! #define VERSION 0.91
#define EVENT_BUFSIZE 1024
#define OSC_BASE_MAX 1024
***************
*** 168,171 ****
--- 168,172 ----
t_int dsp; /* boolean dsp setting */
+ t_int dsp_loop;
} t_dssi_tilde;