diff options
author | Robin Gareus <robin@gareus.org> | 2017-09-27 18:22:49 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-09-27 18:22:49 +0200 |
commit | 476952f2b60f595c2d7378af1b3db4eb41e2c13c (patch) | |
tree | 423af518c23cc0c86c05c800e95113784b8ca56a /session_utils/common.cc | |
parent | eb928b05e98260d6e2079b104b75267058633a1d (diff) |
Add session-util to create a new empty session
Diffstat (limited to 'session_utils/common.cc')
-rw-r--r-- | session_utils/common.cc | 40 |
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) { |