21#ifndef __CALF_JACKHOST_H
22#define __CALF_JACKHOST_H
32#include <jack/session.h>
35#define NFRAMES_MAYBE(nframes) nframes
37#define NFRAMES_MAYBE(nframes)
44struct automation_iface
47 virtual ~automation_iface() {}
52 std::vector<jack_host *> plugins;
53 calf_utils::ptmutex
mutex;
56 jack_port_t *automation_port;
60 int input_nr, output_nr, midi_nr;
61 std::string
name, input_name, output_name, midi_name;
65 void add(jack_host *plugin);
66 void del(jack_host *plugin);
67 void open(
const char *
client_name,
const char *jack_session_id);
68 std::string get_name();
71 void delete_plugins();
72 void create_automation_input();
73 void destroy_automation_input();
74 void connect(
const std::string &p1,
const std::string &p2);
76 void apply_plugin_order(
const std::vector<int> &indices);
77 void calculate_plugin_order(std::vector<int> &indices);
78 const char **get_ports(
const char *name_re,
const char *type_re,
unsigned long flags);
83 void atomic_swap(T &v1, T &
v2)
85 calf_utils::ptlock lock(
mutex);
95 std::string
name, nice_name;
101 float **
ins, **outs, **params;
102 std::vector<port> inputs, outputs;
105 audio_module_iface *module;
106 automation_map *cc_mappings;
107 std::vector<int> write_serials;
108 int last_modify_serial;
118 int in_count, out_count, param_count;
119 const plugin_metadata_iface *metadata;
122 jack_host(jack_client *_client, audio_module_iface *_module,
const std::string &_name,
const std::string &_instance_name, calf_plugins::progress_report_iface *_priface);
130 void rename(std::string
name);
134 void process_part(
unsigned int time,
unsigned int len);
136 virtual float get_level(
unsigned int port);
142 void get_all_input_ports(std::vector<port *> &ports);
144 void get_all_output_ports(std::vector<port *> &ports);
149 port *get_inputs() {
return inputs.empty() ?
NULL : &inputs[0]; }
150 port *get_outputs() {
return outputs.empty() ?
NULL : &outputs[0]; }
151 float *get_params() {
return param_values; }
152 port *get_midi_port() {
return get_metadata_iface()->get_midi() ? &midi_port :
NULL; }
155 bool activate_preset(
int bank,
int program) {
return false; }
156 virtual float get_param_value(
int param_no) {
157 assert(param_no >= 0 && param_no < param_count);
158 return param_values[param_no];
160 virtual void set_param_value(
int param_no,
float value) {
161 assert(param_no >= 0 && param_no < param_count);
162 param_values[param_no] =
value;
165 virtual std::string get_instance_name() {
return instance_name; }
166 virtual void execute(
int cmd_no) {
module->execute(cmd_no); }
167 virtual char *configure(
const char *
key,
const char *
value);
168 virtual void send_configures(send_configure_iface *sci) {
module->send_configures(sci); }
169 virtual void send_automation_configures(send_configure_iface *);
170 virtual int send_status_updates(send_updates_iface *sui,
int last_serial) {
return module->send_status_updates(sui, last_serial); }
171 virtual const plugin_metadata_iface *get_metadata_iface()
const {
return module->get_metadata_iface(); }
172 virtual const line_graph_iface *get_line_graph_iface()
const {
return module->get_line_graph_iface(); }
173 virtual const phase_graph_iface *get_phase_graph_iface()
const {
return module->get_phase_graph_iface(); }
174 virtual int get_write_serial(
int param_no) {
return write_serials[param_no]; }
175 virtual void add_automation(
uint32_t source,
const automation_range &dest);
176 virtual void delete_automation(
uint32_t source,
int param_no);
177 virtual void get_automation(
int param_no, std::multimap<uint32_t, automation_range> &dests);
178 virtual uint32_t get_last_automation_source();
179 void replace_automation_map(automation_map *amap);
182extern jack_host *create_jack_host(jack_client *_client,
const char *
name,
const std::string &
instance_name, calf_plugins::progress_report_iface *priface);
pthread_mutex_t mutex
Definition Controller.C:6
void process(Alg_seq_ptr seq, bool tempo_flag, double tempo, bool flatten_flag)
Definition allegroconvert.cpp:42
static void deactivate(LV2_Handle instance)
Definition bindings_test_plugin.c:128
static void v2(register WDL_FFT_REAL *a)
Definition fft.c:1099
static PuglViewHint int value
Definition pugl.h:1708
static const char * name
Definition pugl.h:1582
virtual ASIOError start()=0
struct _jack_client jack_client_t
Definition jack-enum-test-func.cpp:69
uint32_t jack_nframes_t
Definition jack-enum-test-func.cpp:38
const char * client_name
Definition jackhost.cpp:32
JSAMPIMAGE data
Definition jpeglib.h:945
static int create_ports(LV2Apply *self)
Definition lv2apply.c:136
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
Definition benchmark.cpp:53
@ del
Definition juce_ApplicationCommandID.h:65
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t * port
Definition juce_linux_JackAudio.cpp:65
jack_client_t * client
Definition juce_linux_JackAudio.cpp:57
void add(SampleFrame *dst, const SampleFrame *src, int frames)
Add samples from src to dst.
Definition MixHelpers.cpp:135
Instrument * ins
Definition HydrogenImport.cpp:138
char * instance_name
Definition main.cpp:88
Interface for host-GUI-plugin interaction (should be really split in two, but ... meh).
Definition giface.h:389
uch * p
Definition crypt.c:594
ZCONST char * key
Definition crypt.c:587
typedef int(UZ_EXP MsgFn)()