From ebe35fe98381ff6dcabf5a1a86ed5e05e4e992b0 Mon Sep 17 00:00:00 2001 From: Jamie Bullock Date: Thu, 2 Feb 2012 19:16:50 +0000 Subject: - simplified file layout svn path=/trunk/externals/postlude/; revision=15936 --- pluginhost~/ph_common.h | 171 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 pluginhost~/ph_common.h (limited to 'pluginhost~/ph_common.h') diff --git a/pluginhost~/ph_common.h b/pluginhost~/ph_common.h new file mode 100644 index 0000000..a3d57a9 --- /dev/null +++ b/pluginhost~/ph_common.h @@ -0,0 +1,171 @@ +/* pluginhost~ - A plugin host for Pd + * + * Copyright (C) 2006 Jamie Bullock and others + * + * This file incorporates code from the following sources: + * + * jack-dssi-host (BSD-style license): Copyright 2004 Chris Cannam, Steve Harris and Sean Bolton. + * + * Hexter (GPL license): Copyright (C) 2004 Sean Bolton and others. + * + * plugin~ (GPL license): Copyright (C) 2000 Jarno Seppänen, remIXed 2005 + * + * liblo (CPL license): Copyright (C) 2004 Steve Harris + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include "m_pd.h" +#include "dssi.h" + +#define PH_NAME "pluginhost~" +#define PH_VERSION 0.997 +#define EVENT_BUFSIZE 1024 +#define OSC_PORT 9998 +#define UI_TARGET_ELEMS 2 + +/*From hexter_types.h by Sean Bolton */ +#define DX7_PERFORMANCE_SIZE 64 + +#define MIN(a,b) ((a)<(b)?(a):(b)) + +#ifndef HEADER_PH_COMMON + +typedef struct _ph_instance { + + unsigned int plugin_pgm_count; + bool ui_needs_pgm_update; + char *ui_osc_control_path; + char *ui_osc_configure_path; + char *ui_osc_program_path; + char *ui_osc_show_path; + char *ui_osc_hide_path; + char *ui_osc_quit_path; + char *osc_url_path; + long current_bank; + long current_pgm; + int pending_pgm_change; + int pending_bank_lsb; + int pending_bank_msb; + int ui_hidden; + int ui_show; + t_atom ui_target[UI_TARGET_ELEMS]; /* host, port */ + uint8_t perf_buffer[DX7_PERFORMANCE_SIZE]; + + + int *plugin_port_ctlin_numbers; /*not sure if this should go here?*/ + DSSI_Program_Descriptor *plugin_pgms; + +} ph_instance; + +typedef struct ph_configure_pair { + + struct ph_configure_pair *next; + unsigned int instance; + char *value; + char *key; + +} ph_configure_pair; + +typedef struct _port_info { + + t_atom lower_bound; + t_atom upper_bound; + t_atom data_type; + t_atom p_default; + t_atom type; + t_atom name; + +} ph_port_info; + +typedef struct _ph { + + t_object x_obj; /* gah, this has to be first element in the struct, WTF? */ + + int sr; + int blksize; + int time_ref; + int ports_in; + int ports_out; + int ports_control_in; + int ports_control_out; + int buf_write_index; + int buf_read_index; + + bool is_dssi; + bool dsp; + bool dsp_loop; + + char *plugin_basename; + char *plugin_label; + char *plugin_full_path; + char *project_dir; + void *plugin_handle; + char *osc_url_base; + + float f; + float sr_inv; + float **plugin_input_buffers; + float **plugin_output_buffers; + float *plugin_control_input; + float *plugin_control_output; + + unsigned int osc_port; + unsigned int n_instances; + unsigned int plugin_ins; + unsigned int plugin_outs; + unsigned int plugin_control_ins; + unsigned int plugin_control_outs; + unsigned long *instance_event_counts; + unsigned long *plugin_ctlin_port_numbers; + unsigned char channel_map[128]; + + DSSI_Descriptor_Function desc_func; + DSSI_Descriptor *descriptor; + LADSPA_Handle *instance_handles; + + t_inlet **inlets; + t_outlet **outlets; + t_outlet *message_out; + t_canvas *x_canvas; + + ph_port_info *port_info; + ph_instance *instances; + ph_configure_pair *configure_buffer_head; + + snd_seq_event_t **instance_event_buffers; + snd_seq_event_t midi_event_buf[EVENT_BUFSIZE]; + +} ph; + +void ph_debug_post(const char *fmt, ...); +void ph_quit_plugin(ph *x); +void ph_init_plugin(ph *x); +void ph_free_plugin(ph *x); +void ph_query_programs(ph *x, unsigned int i); +void ph_program_change(ph *x, unsigned int i); +void ph_instance_send_osc(t_outlet *outlet, ph_instance *instance, + t_int argc, t_atom *argv); +void *ph_load_plugin(ph *x, t_int argc, t_atom *argv); +char *ph_send_configure(ph *x, const char *key, const char *value, + unsigned int i); +DSSI_Descriptor *ladspa_to_dssi(LADSPA_Descriptor *ladspaDesc); + +#define HEADER_PH_COMMON +#endif + -- cgit v1.2.1