summaryrefslogtreecommitdiff
path: root/session_utils/common.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-27 18:22:49 +0200
committerRobin Gareus <robin@gareus.org>2017-09-27 18:22:49 +0200
commit476952f2b60f595c2d7378af1b3db4eb41e2c13c (patch)
tree423af518c23cc0c86c05c800e95113784b8ca56a /session_utils/common.cc
parenteb928b05e98260d6e2079b104b75267058633a1d (diff)
Add session-util to create a new empty session
Diffstat (limited to 'session_utils/common.cc')
-rw-r--r--session_utils/common.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/session_utils/common.cc b/session_utils/common.cc
index eb17cfdbeb..86e945f616 100644
--- a/session_utils/common.cc
+++ b/session_utils/common.cc
@@ -176,6 +176,46 @@ SessionUtils::load_session (string dir, string state, bool exit_at_failure)
return s;
}
+Session *
+SessionUtils::create_session (string dir, string state, float sample_rate)
+{
+ AudioEngine* engine = AudioEngine::create ();
+
+ if (!engine->set_backend ("None (Dummy)", "Unit-Test", "")) {
+ std::cerr << "Cannot create Audio/MIDI engine\n";
+ ::exit (EXIT_FAILURE);
+ }
+
+ engine->set_input_channels (256);
+ engine->set_output_channels (256);
+
+ if (engine->set_sample_rate (sample_rate)) {
+ std::cerr << "Cannot set session's samplerate.\n";
+ return 0;
+ }
+
+ init_post_engine ();
+
+ if (engine->start () != 0) {
+ std::cerr << "Cannot start Audio/MIDI engine\n";
+ return 0;
+ }
+
+ std::string s = Glib::build_filename (dir, state + statefile_suffix);
+
+ if (Glib::file_test (dir, Glib::FILE_TEST_EXISTS)) {
+ std::cerr << "Session folder already exists '"<< dir << "'\n";
+ }
+ if (Glib::file_test (s, Glib::FILE_TEST_EXISTS)) {
+ std::cerr << "Session file exists '"<< s << "'\n";
+ return 0;
+ }
+
+ Session* session = new Session (*engine, dir, state);
+ engine->set_session (session);
+ return session;
+}
+
void
SessionUtils::unload_session (Session *s)
{