+static Session * _create_session (string dir, string state, uint32_t rate)
+{
+ AudioEngine* engine = AudioEngine::instance ();
+
+ if (!engine->current_backend ()) {
+ if (!engine->set_backend ("None (Dummy)", "Unit-Test", "")) {
+ std::cerr << "Cannot create Audio/MIDI engine\n";
+ return 0;
+ }
+ }
+
+ if (!engine->current_backend ()) {
+ std::cerr << "Cannot create Audio/MIDI engine\n";
+ return 0;
+ }
+
+ if (engine->running ()) {
+ engine->stop ();
+ }
+
+ std::string s = Glib::build_filename (dir, state + statefile_suffix);
+ if (Glib::file_test (dir, Glib::FILE_TEST_EXISTS)) {
+ std::cerr << "Session already exists: " << s << "\n";
+ return 0;
+ }
+
+ engine->set_sample_rate (rate);
+
+ init_post_engine ();
+
+ if (engine->start () != 0) {
+ std::cerr << "Cannot start Audio/MIDI engine\n";
+ return 0;
+ }
+
+ Session* session = new Session (*engine, dir, state);
+ return session;
+}
+