LMMS
Loading...
Searching...
No Matches
host_session.h
Go to the documentation of this file.
1/* Calf DSP Library Utility Application - calfjackhost
2 * Class for managing calfjackhost's session.
3 *
4 * Copyright (C) 2007-2011 Krzysztof Foltman
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 * 02110-1301, USA.
20 */
21#ifndef CALF_HOST_SESSION_H
22#define CALF_HOST_SESSION_H
23
24#include <config.h>
25
26#include "gui.h"
27#include "jackhost.h"
28#include "session_mgr.h"
29
30namespace calf_plugins {
31
32class main_window;
33
35{
36private:
38
39 static void session_callback(jack_session_event_t *event, void *arg);
40 void handle_jack_session_event(jack_session_event_t *event);
41
42public:
44 std::string client_name;
46 std::string input_name;
48 std::string output_name;
50 std::string midi_name;
52 std::string load_name;
56 std::vector<std::string> plugin_names;
58 std::map<int, std::string> presets;
66 jack_session_event_t *volatile handle_event_on_next_idle_call;
68 std::string current_filename;
70 std::string jack_session_id;
72 std::string calfjackhost_cmd;
73
74 // these are not saved
75 jack_client client;
76 std::string autoconnect_midi;
78 std::set<int> chains;
79 std::vector<jack_host *> plugins;
81 std::set<std::string> instances;
82 bool has_gui;
86
88 void open();
89 void add_plugin(std::string name, std::string preset, std::string instance_name = std::string());
91 void connect();
92 void close();
93 bool activate_preset(int plugin, const std::string &preset, bool builtin);
94 void remove_all_plugins();
95 std::string get_next_instance_name(const std::string &effect_name);
96 std::string get_full_plugin_name(const std::string &effect_name);
97
100
102 static void signal_handler(int signum);
103
105 std::string get_client_name() const;
106
107public:
109 virtual char *open_file(const char *name);
111 virtual char *save_file(const char *name);
112
114 virtual void load(session_load_iface *);
116 virtual void save(session_save_iface *);
117
118 virtual void new_plugin(const char *name);
119 virtual void remove_plugin(plugin_ctl_iface *plugin);
120 virtual void rename_plugin(plugin_ctl_iface *plugin, const char *name);
121 virtual void on_main_window_destroy();
122 virtual void on_idle();
123 virtual void reorder_plugins();
124 virtual std::string get_current_filename() const;
125 virtual void set_current_filename(const std::string &name);
127};
128
129};
130
131#endif
float arg(const fft_t *freqs, off_t x)
Definition OscilGen.cpp:58
bool activate_preset(int plugin, const std::string &preset, bool builtin)
Definition host_session.cpp:254
std::string calfjackhost_cmd
Command used to start the JACK host.
Definition host_session.h:72
std::map< int, std::string > presets
Requested presets for the plugins in plugin_names.
Definition host_session.h:58
void add_plugin(std::string name, std::string preset, std::string instance_name=std::string())
Definition host_session.cpp:82
std::string get_client_name() const
Client name for window title bar.
Definition host_session.cpp:635
virtual void load(session_load_iface *)
Load from session manager.
Definition host_session.cpp:495
session_environment_iface * session_env
Definition host_session.h:85
std::string input_name
Template for input names.
Definition host_session.h:46
virtual void on_idle()
Called from idle handler.
Definition host_session.cpp:592
virtual std::string get_current_filename() const
Get the file name of the current rack.
Definition host_session.cpp:640
virtual void save(session_save_iface *)
Save to session manager.
Definition host_session.cpp:538
void open()
Definition host_session.cpp:126
virtual void on_main_window_destroy()
Called on 'destroy' event of the main window.
Definition host_session.cpp:121
void connect()
Definition host_session.cpp:270
bool only_load_if_exists
Use load_name as session state name - doesn't signal an error if the file doesn't exist,...
Definition host_session.h:54
~host_session()
Definition host_session.cpp:650
void create_plugins_from_list()
Definition host_session.cpp:114
std::set< std::string > instances
Definition host_session.h:81
volatile bool save_file_on_next_idle_call
Save has been requested from SIGUSR1 handler.
Definition host_session.h:62
virtual char * save_file(const char *name)
Implementation of save file functionality.
Definition host_session.cpp:451
std::string output_name
Template for output names.
Definition host_session.h:48
main_window_iface * main_win
Definition host_session.h:80
bool has_trayicon
Definition host_session.h:83
void remove_all_plugins()
Definition host_session.cpp:240
static host_session * instance
Definition host_session.h:37
std::string client_name
Requested JACK client name.
Definition host_session.h:44
virtual char * open_file(const char *name)
Implementation of open file functionality (TODO).
Definition host_session.cpp:391
void handle_jack_session_event(jack_session_event_t *event)
Definition host_session.cpp:170
static void session_callback(jack_session_event_t *event, void *arg)
Definition host_session.cpp:151
int autoconnect_midi_index
Definition host_session.h:77
std::string get_full_plugin_name(const std::string &effect_name)
Definition host_session.cpp:56
std::string autoconnect_midi
Definition host_session.h:76
jack_session_event_t *volatile handle_event_on_next_idle_call
JACK session event to handle on the next idle call.
Definition host_session.h:66
std::string load_name
Name of the file to load at start.
Definition host_session.h:52
virtual void rename_plugin(plugin_ctl_iface *plugin, const char *name)
Definition host_session.cpp:226
virtual void set_current_filename(const std::string &name)
Set the file name of the current rack.
Definition host_session.cpp:645
host_session(session_environment_iface *)
Definition host_session.cpp:38
std::vector< jack_host * > plugins
Definition host_session.h:79
session_manager_iface * session_manager
Selected session manager (if any).
Definition host_session.h:60
std::set< int > chains
Definition host_session.h:78
static void signal_handler(int signum)
unix signal handler
Definition host_session.cpp:578
bool has_gui
Definition host_session.h:82
virtual void remove_plugin(plugin_ctl_iface *plugin)
Definition host_session.cpp:209
std::string jack_session_id
Jack session ID, if given via command line, otherwise empty.
Definition host_session.h:70
void close()
Definition host_session.cpp:367
virtual void new_plugin(const char *name)
Definition host_session.cpp:195
std::string current_filename
File name of the current rack.
Definition host_session.h:68
virtual void reorder_plugins()
Definition host_session.cpp:628
std::string midi_name
Template for MIDI port names.
Definition host_session.h:50
std::vector< std::string > plugin_names
Plugins to create on startup, in create_plugins_from_list (based on command line).
Definition host_session.h:56
plugin_gui_window * gui_win
Definition host_session.h:84
jack_client client
Definition host_session.h:75
void set_signal_handlers()
Set handlers for SIGUSR1 (that LADISH uses to invoke Save function), SIGTERM and SIGHUP.
Definition host_session.cpp:615
std::string get_next_instance_name(const std::string &effect_name)
Definition host_session.cpp:67
volatile int quit_on_next_idle_call
If non-zero, quit has been requested through signal with same value.
Definition host_session.h:64
static const char * name
Definition pugl.h:1582
Definition benchmark.cpp:53
char * instance_name
Definition main.cpp:88
Interface used by the plugin to communicate with the main hosting window.
Definition gui.h:263
Interface for host-GUI-plugin interaction (should be really split in two, but ... meh).
Definition giface.h:389
Definition session_mgr.h:41
An interface that wraps UI-dependent elements of the session.
Definition gui.h:231
Definition session_mgr.h:29
Definition session_mgr.h:48
Definition session_mgr.h:35