summaryrefslogtreecommitdiffstats
path: root/src/progs/console
diff options
context:
space:
mode:
Diffstat (limited to 'src/progs/console')
-rw-r--r--src/progs/console/ConsoleClientHooks.cpp33
-rw-r--r--src/progs/console/ConsoleClientHooks.h66
-rw-r--r--src/progs/console/Makefile.am12
-rw-r--r--src/progs/console/README4
-rw-r--r--src/progs/console/console_client.cpp110
-rw-r--r--src/progs/console/patches/COPYING2
-rw-r--r--src/progs/console/patches/dssi_test.omp19
-rw-r--r--src/progs/console/patches/filter_patch.omp54
-rw-r--r--src/progs/console/patches/old_super_simple_patch.omp36
-rw-r--r--src/progs/console/patches/send_test.omp2
-rw-r--r--src/progs/console/patches/simple_patch.omp54
-rw-r--r--src/progs/console/patches/super_simple_patch.omp36
-rw-r--r--src/progs/console/patches/test_patch.omp48
13 files changed, 476 insertions, 0 deletions
diff --git a/src/progs/console/ConsoleClientHooks.cpp b/src/progs/console/ConsoleClientHooks.cpp
new file mode 100644
index 00000000..1a911c6a
--- /dev/null
+++ b/src/progs/console/ConsoleClientHooks.cpp
@@ -0,0 +1,33 @@
+/* This file is part of Om. Copyright (C) 2005 Dave Robillard.
+ *
+ * Om 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.
+ *
+ * Om 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 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.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include "ConsoleClientHooks.h"
+
+#include <iostream>
+
+
+void
+ConsoleClientHooks::new_node(NodeModel* nm)
+{
+ std::cerr << "[ConsoleClient] New node notification" << std::endl;
+}
+
+void
+ConsoleClientHooks::error(std::string msg)
+{
+ std::cerr << "Server returned an error: " << msg << std::endl;
+}
diff --git a/src/progs/console/ConsoleClientHooks.h b/src/progs/console/ConsoleClientHooks.h
new file mode 100644
index 00000000..ceb6cd5a
--- /dev/null
+++ b/src/progs/console/ConsoleClientHooks.h
@@ -0,0 +1,66 @@
+/* This file is part of Om. Copyright (C) 2005 Dave Robillard.
+ *
+ * Om 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.
+ *
+ * Om 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 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.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef CONSOLECLIENTHOOKS_H
+#define CONSOLECLIENTHOOKS_H
+
+#include "ClientHooks.h"
+
+#include <string>
+using std::string;
+
+namespace LibOmClient {
+
+class PatchModel;
+class NodeModel;
+class ConnectionModel;
+class PortModel;
+class MetadataModel;
+class PluginModel;
+
+class ConsoleClientHooks : public ClientHooks
+{
+public:
+ ConsoleClientHooks()
+ ~ConsoleClientHooks();
+
+ void error(const string& msg);
+ void new_node(NodeModel* nm);
+
+ void engine_enabled() {}
+ void engine_disabled() {}
+ void new_patch(PatchModel* pm) {}
+ void new_port(PortModel* port_info) {}
+ void port_removal(const string& path) {}
+ void patch_destruction(const string& path) {}
+ void patch_enabled(const string& path) {}
+ void patch_disabled(const string& path) {}
+ void node_removal(const string& path) {}
+ void object_renamed(const string& old_path, const string& new_path) {}
+ void connection(ConnectionModel* cm) {}
+ void disconnection(const string& src_port_path, const string& dst_port_path) {}
+ void metadata_update(MetadataModel* mm) {}
+ void control_change(const string& port_path, float value) {}
+ void new_plugin(PluginModel* pi) {}
+ void program_add(const string& path, int bank, int program, const string& name) {}
+ void program_remove(const string& path, int bank, int program) {}
+};
+
+
+} // namespace LibOmClient
+
+
+#endif // CONSOLECLIENTHOOKS_H
diff --git a/src/progs/console/Makefile.am b/src/progs/console/Makefile.am
new file mode 100644
index 00000000..f46bdbad
--- /dev/null
+++ b/src/progs/console/Makefile.am
@@ -0,0 +1,12 @@
+om_console_client_CXXFLAGS = -I$(top_srcdir)/src/clients -I$(top_srcdir)/src/common -DPKGDATADIR=\"$(pkgdatadir)\" $(LXML2_CFLAGS) $(LOSC_CFLAGS)
+om_console_client_LDADD = ../libomclient.a $(LOSC_LIBS) $(LXML2_LIBS)
+
+bin_PROGRAMS = console_client
+EXTRA_DIST = README
+
+console_client_CXXFLAGS = "-I../../common"
+console_client_LDADD = @LOSC_LIBS@ ../Comm.o
+console_client_SOURCES = \
+ console_client.cpp \
+ ConsoleClientHooks.h \
+ ConsoleClientHooks.cpp
diff --git a/src/progs/console/README b/src/progs/console/README
new file mode 100644
index 00000000..79c629a5
--- /dev/null
+++ b/src/progs/console/README
@@ -0,0 +1,4 @@
+Everything in and under this directory is very, very, very old. It remains
+on the off chance that I actually make it work again - and for history's
+sake :)
+
diff --git a/src/progs/console/console_client.cpp b/src/progs/console/console_client.cpp
new file mode 100644
index 00000000..4e5586ce
--- /dev/null
+++ b/src/progs/console/console_client.cpp
@@ -0,0 +1,110 @@
+/* This file is part of Om. Copyright (C) 2005 Dave Robillard.
+ *
+ * Om 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.
+ *
+ * Om 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 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.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string>
+#include <sstream>
+#include <iostream>
+#include <lo/lo.h>
+#include "OSCModelEngineInterface.h"
+#include "ConsoleClientHooks.h"
+
+
+OSCModelEngineInterface* comm;
+ConsoleClientHooks* client_hooks;
+
+int
+main()
+{
+ std::string input;
+ std::string s;
+ std::string path;
+ std::string types;
+ lo_message m;
+
+ client_hooks = new ConsoleClientHooks();
+ comm = new OSCModelEngineInterface(client_hooks);
+ comm->attach("1234");
+
+ while (input != "q") {
+ std::cout << "> ";
+ std::getline(std::cin, input);
+ std::istringstream stream(input);
+
+ if (std::cin.eof()) break;
+
+ if (input == "") continue;
+
+ //std::cout << "INPUT = " << input << std::endl;
+
+ m = lo_message_new();
+ stream >> path;
+
+ char cs[256];
+
+ stream >> types;
+
+ for (uint i=0; stream >> s && i < types.length(); ++i) {
+ // Take care of quoted strings
+ if (s[0] == '\"') {
+ s = s.substr(1); // hack off begin quote
+
+ if (s[s.length()-1] == '\"') { // single quoted word
+ s = s.substr(0, s.length()-1);
+ } else {
+ std::string temp;
+ do {
+ stream >> temp;
+ if (temp.find('\n') != std::string::npos) {
+ std::cerr << "Mismatched quotes.\n" << std::endl;
+ break;
+ }
+ s += ' ';
+ s += temp;
+ } while (temp[temp.length()-1] != '\"');
+ s = s.substr(0, s.length() - 1); // hack off end quote
+ }
+ }
+
+ switch (types[i]) {
+ case 'f':
+ //std::cerr << "float" << std::endl;
+ lo_message_add_float(m, atof(s.c_str()));
+ break;
+ case 's':
+ strncpy(cs, s.c_str(), 256);
+ //std::cerr << "string" << std::endl;
+ lo_message_add_string(m, cs);
+ break;
+ case 'i':
+ //std::cerr << "integer" << std::endl;
+ lo_message_add_int32(m, atoi(s.c_str()));
+ break;
+ default:
+ std::cerr << "Unknown type \'" << types[i] << "\'" << std::endl;
+ exit(1);
+ }
+ }
+
+ //std::cout << "Sending message..." << std::endl;
+ //lo_message_pp(m);
+ //usleep(500);
+ lo_send_message(comm->addr(), path.c_str(), m);
+ lo_message_free(m);
+ //std::cout << "Input = " << input << std::endl;
+ input = "";
+ }
+ return 0;
+}
diff --git a/src/progs/console/patches/COPYING b/src/progs/console/patches/COPYING
new file mode 100644
index 00000000..e265c4a3
--- /dev/null
+++ b/src/progs/console/patches/COPYING
@@ -0,0 +1,2 @@
+The files in this directory are temporary and not considered code; thus are
+released into the public domain. You may do with them as you please.
diff --git a/src/progs/console/patches/dssi_test.omp b/src/progs/console/patches/dssi_test.omp
new file mode 100644
index 00000000..0613a57b
--- /dev/null
+++ b/src/progs/console/patches/dssi_test.omp
@@ -0,0 +1,19 @@
+/create_patch si patch1 1
+/patches/patch1/add_output s out_1
+/patches/patch1/add_output s out_2
+
+/patches/patch1/add_midi_input
+
+/patches/patch1/load_dssi_plugin sss trivial_synth.so trivial_synth synth
+
+/patches/patch1/connect ssss midi_in Frequency synth Frequency
+/patches/patch1/connect ssss synth Output output out_1
+/patches/patch1/connect ssss synth Output output out_2
+
+/patches/patch1/set_control ssf midi_in Frequency 440
+
+/patches/patch1/set_control ssf osc Slope 0.5
+
+/patches/patch1/activate
+/engine/set_master_patch s patch1
+/engine/start
diff --git a/src/progs/console/patches/filter_patch.omp b/src/progs/console/patches/filter_patch.omp
new file mode 100644
index 00000000..acaad0c8
--- /dev/null
+++ b/src/progs/console/patches/filter_patch.omp
@@ -0,0 +1,54 @@
+/create_patch si patch1 1
+/patches/patch1/add_output s out_1
+/patches/patch1/add_output s out_2
+
+/patches/patch1/add_midi_input
+
+/patches/patch1/load_ladspa_plugin isss 1 triangle_1649.so triangle_fcsc_oa osc
+/patches/patch1/load_ladspa_plugin isss 1 dahdsr_2021.so dahdsr_cg+t_control aenv
+/patches/patch1/load_ladspa_plugin isss 1 amp_1654.so amp_gaia_oa amp
+/patches/patch1/load_ladspa_plugin isss 1 lp4pole_1671.so lp4pole_fcrcia_oa filt
+/patches/patch1/load_ladspa_plugin isss 1 dahdsr_2021.so dahdsr_cg+t_control fenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa fscale
+/patches/patch1/load_ladspa_plugin isss 1 sum_1665.so sum_iaic_oa sum
+
+/patches/patch1/connect ssss midi_in Frequency osc Frequency
+/patches/patch1/connect ssss midi_in Gate aenv "Gate"
+/patches/patch1/connect ssss midi_in Gate fenv "Gate"
+/patches/patch1/connect ssss osc Output filt Input
+/patches/patch1/connect ssss fenv "Envelope Out" fscale "First Input"
+/patches/patch1/connect ssss fscale "Product Output" sum "First Input"
+/patches/patch1/connect ssss midi_in Frequency sum "Second Input"
+/patches/patch1/connect ssss sum "Summed Output" filt "Cutoff Frequency"
+
+/patches/patch1/connect ssss filt Output amp "Input"
+/patches/patch1/connect ssss aenv "Envelope Out" amp "Gain (dB)"
+/patches/patch1/connect ssss amp "Output" output out_1
+/patches/patch1/connect ssss amp "Output" output out_2
+
+
+/patches/patch1/set_control ssf midi_in Frequency 200.0
+/patches/patch1/set_control ssf midi_in Gate 0.0
+/patches/patch1/set_control ssf filt Resonance 3.0
+/patches/patch1/set_control ssf osc Slope 0.9
+/patches/patch1/set_control ssf fscale "Second Input" 800
+
+/patches/patch1/set_control ssf aenv "Trigger" 0
+/patches/patch1/set_control ssf aenv "Delay Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Attack Time (s)" 0.01
+/patches/patch1/set_control ssf aenv "Hold Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Decay Time (s)" 0.3
+/patches/patch1/set_control ssf aenv "Sustain Level" 0.7
+/patches/patch1/set_control ssf aenv "Release Time (s)" 1.5
+
+/patches/patch1/set_control ssf fenv "Trigger" 0
+/patches/patch1/set_control ssf fenv "Delay Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Attack Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Hold Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Decay Time (s)" 0.1
+/patches/patch1/set_control ssf fenv "Sustain Level" 0.0
+/patches/patch1/set_control ssf fenv "Release Time (s)" 0.0
+
+/patches/patch1/activate
+/engine/set_master_patch s patch1
+/engine/start
diff --git a/src/progs/console/patches/old_super_simple_patch.omp b/src/progs/console/patches/old_super_simple_patch.omp
new file mode 100644
index 00000000..1abd3c23
--- /dev/null
+++ b/src/progs/console/patches/old_super_simple_patch.omp
@@ -0,0 +1,36 @@
+/create_patch si patch1 4
+/patches/patch1/add_output s out_1
+/patches/patch1/add_output s out_2
+
+/patches/patch1/add_midi_input
+
+/patches/patch1/load_ladspa_plugin isss 1 triangle_1649.so triangle_fcsc_oa osc
+/patches/patch1/load_ladspa_plugin isss 1 dahdsr_2021.so dahdsr_cg+t_control aenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaia_oa amp
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa endamp
+
+/patches/patch1/connect ssss midi_in Frequency osc Frequency
+/patches/patch1/connect ssss midi_in Gate aenv "Gate"
+/patches/patch1/connect ssss osc Output amp "First Input"
+/patches/patch1/connect ssss aenv "Envelope Out" amp "Second Input"
+/patches/patch1/connect ssss amp "Product Output" endamp "First Input"
+/patches/patch1/connect ssss endamp "Product Output" output out_1
+/patches/patch1/connect ssss endamp "Product Output" output out_2
+
+
+/patches/patch1/set_control ssf midi_in Frequency 200
+/patches/patch1/set_control ssf midi_in Gate 0
+/patches/patch1/set_control ssf osc Slope 0.5
+/patches/patch1/set_control ssf endamp "Second Input" 0.5
+
+/patches/patch1/set_control ssf aenv "Trigger" 0
+/patches/patch1/set_control ssf aenv "Delay Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Attack Time (s)" 0.001
+/patches/patch1/set_control ssf aenv "Hold Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Decay Time (s)" 0.3
+/patches/patch1/set_control ssf aenv "Sustain Level" 0.5
+/patches/patch1/set_control ssf aenv "Release Time (s)" 0.5
+
+/patches/patch1/activate
+/engine/set_master_patch s patch1
+/engine/start
diff --git a/src/progs/console/patches/send_test.omp b/src/progs/console/patches/send_test.omp
new file mode 100644
index 00000000..579a3b80
--- /dev/null
+++ b/src/progs/console/patches/send_test.omp
@@ -0,0 +1,2 @@
+/load_plugins
+/send_plugins
diff --git a/src/progs/console/patches/simple_patch.omp b/src/progs/console/patches/simple_patch.omp
new file mode 100644
index 00000000..aaa38827
--- /dev/null
+++ b/src/progs/console/patches/simple_patch.omp
@@ -0,0 +1,54 @@
+/load_plugins
+/create_patch si patch1 1
+/patches/patch1/add_output s out_1
+/patches/patch1/add_output s out_2
+
+/patches/patch1/add_midi_input
+
+/patches/patch1/load_ladspa_plugin isss 1 triangle_1649.so triangle_fcsc_oa osc
+/patches/patch1/load_ladspa_plugin isss 1 dahdsr_2021.so dahdsr_cg+t_control aenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaia_oa amp
+/patches/patch1/load_ladspa_plugin isss 1 lp4pole_1671.so lp4pole_fcrcia_oa filt
+/patches/patch1/load_ladspa_plugin isss 1 dahdsr_2021.so dahdsr_cg+t_control fenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa fscale
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa endamp
+
+/patches/patch1/connect ssss midi_in Frequency osc Frequency
+/patches/patch1/connect ssss midi_in Gate aenv "Gate"
+/patches/patch1/connect ssss midi_in Gate fenv "Gate"
+/patches/patch1/connect ssss osc Output filt Input
+/patches/patch1/connect ssss fenv "Envelope Out" fscale "First Input"
+/patches/patch1/connect ssss fscale "Product Output" filt "Cutoff Frequency"
+/patches/patch1/connect ssss filt Output amp "First Input"
+/patches/patch1/connect ssss aenv "Envelope Out" amp "Second Input"
+/patches/patch1/connect ssss amp "Product Output" endamp "First Input"
+/patches/patch1/connect ssss endamp "Product Output" output out_1
+/patches/patch1/connect ssss endamp "Product Output" output out_2
+
+
+/patches/patch1/set_control ssf midi_in Frequency 200.0
+/patches/patch1/set_control ssf midi_in Gate 0.0
+/patches/patch1/set_control ssf filt Resonance 2.0
+/patches/patch1/set_control ssf osc Slope 1.0
+/patches/patch1/set_control ssf fscale "Second Input" 900
+/patches/patch1/set_control ssf endamp "Second Input" 0.5
+
+/patches/patch1/set_control ssf aenv "Trigger" 0
+/patches/patch1/set_control ssf aenv "Delay Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Attack Time (s)" 0.01
+/patches/patch1/set_control ssf aenv "Hold Time (s)" 0.0
+/patches/patch1/set_control ssf aenv "Decay Time (s)" 0.3
+/patches/patch1/set_control ssf aenv "Sustain Level" 0.6
+/patches/patch1/set_control ssf aenv "Release Time (s)" 0.6
+
+/patches/patch1/set_control ssf fenv "Trigger" 0
+/patches/patch1/set_control ssf fenv "Delay Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Attack Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Hold Time (s)" 0.0
+/patches/patch1/set_control ssf fenv "Decay Time (s)" 0.2
+/patches/patch1/set_control ssf fenv "Sustain Level" 0.5
+/patches/patch1/set_control ssf fenv "Release Time (s)" 0.5
+
+/patches/patch1/activate
+/engine/set_master_patch s patch1
+/engine/start
diff --git a/src/progs/console/patches/super_simple_patch.omp b/src/progs/console/patches/super_simple_patch.omp
new file mode 100644
index 00000000..02dc63a2
--- /dev/null
+++ b/src/progs/console/patches/super_simple_patch.omp
@@ -0,0 +1,36 @@
+/load_plugins
+
+/create_patch si patch1 1
+
+/patches/patch1/load_internal_plugin iss 0 midi_in midi_in
+/patches/patch1/load_internal_plugin iss 0 output output
+
+/patches/patch1/load_ladspa_plugin isss 0 triangle_1649.so triangle_fcsc_oa osc
+/patches/patch1/load_ladspa_plugin isss 0 dahdsr_2021.so dahdsr_cg+t_control aenv
+/patches/patch1/load_ladspa_plugin isss 0 product_1668.so product_iaia_oa amp
+/patches/patch1/load_ladspa_plugin isss 0 product_1668.so product_iaic_oa endamp
+
+/patches/patch1/connect sisi midi_in 0 osc 0
+/patches/patch1/connect sisi midi_in 1 aenv 0
+/patches/patch1/connect sisi osc 2 amp 0
+/patches/patch1/connect sisi aenv 8 amp 1
+/patches/patch1/connect sisi amp 2 endamp 0
+/patches/patch1/connect sisi endamp 2 output 0
+/patches/patch1/connect sisi endamp 2 output 1
+
+
+/patches/patch1/set_control sif midi_in 0 200
+/patches/patch1/set_control sif midi_in 1 1.0
+/patches/patch1/set_control sif osc 1 0.5
+/patches/patch1/set_control sif endamp 1 0.5
+
+/patches/patch1/set_control sif aenv 1 0
+/patches/patch1/set_control sif aenv 2 0.0
+/patches/patch1/set_control sif aenv 3 0.001
+/patches/patch1/set_control sif aenv 4 0.0
+/patches/patch1/set_control sif aenv 5 0.3
+/patches/patch1/set_control sif aenv 6 0.5
+/patches/patch1/set_control sif aenv 7 0.5
+
+/engine/set_master_patch i 0
+/engine/start
diff --git a/src/progs/console/patches/test_patch.omp b/src/progs/console/patches/test_patch.omp
new file mode 100644
index 00000000..04c0487b
--- /dev/null
+++ b/src/progs/console/patches/test_patch.omp
@@ -0,0 +1,48 @@
+/create_patch si patch1 1
+/patches/patch1/add_output s out_1
+/patches/patch1/add_output s out_2
+
+/patches/patch1/add_midi_input
+
+/patches/patch1/load_ladspa_plugin isss 1 triangle_1649.so triangle_fcsc_oa osc
+/patches/patch1/load_ladspa_plugin isss 1 adsr_1653.so adsr aenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaia_oa amp
+/patches/patch1/load_ladspa_plugin isss 1 lp4pole_1671.so lp4pole_fcrcia_oa filt
+/patches/patch1/load_ladspa_plugin isss 1 adsr_1653.so adsr fenv
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa fscale
+/patches/patch1/load_ladspa_plugin isss 1 product_1668.so product_iaic_oa endamp
+
+/patches/patch1/connect ssss midi_in Frequency osc Frequency
+/patches/patch1/connect ssss midi_in Gate aenv "Driving Signal"
+/patches/patch1/connect ssss midi_in Gate fenv "Driving Signal"
+/patches/patch1/connect ssss osc Output filt Input
+/patches/patch1/connect ssss fenv "Envelope Out" output out_1
+/patches/patch1/connect ssss fscale "Product Output" filt "Cutoff Frequency"
+/patches/patch1/connect ssss filt Output amp "First Input"
+/patches/patch1/connect ssss aenv "Envelope Out" output out_2
+/patches/patch1/connect ssss amp "Product Output" endamp "First Input"
+/patches/patch1/connect ssss endamp "Product Output" output out_1
+/patches/patch1/connect ssss endamp "Product Output" output out_2
+
+
+/patches/patch1/set_control ssf midi_in Frequency 200
+/patches/patch1/set_control ssf filt Resonance 3.0
+/patches/patch1/set_control ssf osc Slope 1.0
+/patches/patch1/set_control ssf fscale "Second Input" 900
+/patches/patch1/set_control ssf endamp "Second Input" 0.5
+
+/patches/patch1/set_control ssf aenv "Trigger Threshold" 0
+/patches/patch1/set_control ssf aenv "Attack Time (s)" 0.1
+/patches/patch1/set_control ssf aenv "Decay Time (s)" 0.3
+/patches/patch1/set_control ssf aenv "Sustain Level" 0.5
+/patches/patch1/set_control ssf aenv "Release Time (s)" 0.5
+
+/patches/patch1/set_control ssf fenv "Trigger Threshold" 0
+/patches/patch1/set_control ssf fenv "Attack Time (s)" 0.1
+/patches/patch1/set_control ssf fenv "Decay Time (s)" 0.2
+/patches/patch1/set_control ssf fenv "Sustain Level" 0.6
+/patches/patch1/set_control ssf fenv "Release Time (s)" 0.4
+
+/patches/patch1/activate
+/engine/set_master_patch s patch1
+/engine/start