summaryrefslogtreecommitdiff
path: root/session_utils/new_empty_session.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/new_empty_session.cc
parenteb928b05e98260d6e2079b104b75267058633a1d (diff)
Add session-util to create a new empty session
Diffstat (limited to 'session_utils/new_empty_session.cc')
-rw-r--r--session_utils/new_empty_session.cc97
1 files changed, 97 insertions, 0 deletions
diff --git a/session_utils/new_empty_session.cc b/session_utils/new_empty_session.cc
new file mode 100644
index 0000000000..21eb6879a2
--- /dev/null
+++ b/session_utils/new_empty_session.cc
@@ -0,0 +1,97 @@
+#include <iostream>
+#include <cstdlib>
+#include <getopt.h>
+
+#include "common.h"
+
+using namespace std;
+using namespace ARDOUR;
+using namespace SessionUtils;
+
+
+static void usage (int status)
+{
+ // help2man compatible format (standard GNU help-text)
+ printf (UTILNAME " - create a new empty session from the commandline.\n\n");
+ printf ("Usage: " UTILNAME " [ OPTIONS ] <session-dir> <session/snapshot-name>\n\n");
+ printf ("Options:\n\
+ -h, --help display this help and exit\n\
+ -s, --samplerate <rate> samplerate to use (default 48000)\n\
+ -V, --version print version information and exit\n\
+\n");
+ printf ("\n\
+This tool creates a new empty Ardour session.\n\
+\n\
+Note: the tool expects a session-name without .ardour file-name extension.\n\
+\n\
+Examples:\n\
+"UTILNAME " -s 44100 /tmp/TestSession TestSession\n\
+\n");
+
+ printf ("Report bugs to <http://tracker.ardour.org/>\n"
+ "Website: <http://ardour.org/>\n");
+ ::exit (status);
+}
+
+int main (int argc, char* argv[])
+{
+ int sample_rate = 48000;
+
+ const char *optstring = "hs:V";
+
+ const struct option longopts[] = {
+ { "help", 0, 0, 'h' },
+ { "samplerate", 1, 0, 's' },
+ { "version", 0, 0, 'V' },
+ };
+
+ int c = 0;
+ while (EOF != (c = getopt_long (argc, argv,
+ optstring, longopts, (int *) 0))) {
+ switch (c) {
+ case 's':
+ {
+ const int sr = atoi (optarg);
+ if (sr >= 8000 && sr <= 192000) {
+ sample_rate = sr;
+ } else {
+ fprintf(stderr, "Invalid Samplerate\n");
+ }
+ }
+ break;
+
+ case 'V':
+ printf ("ardour-utils version %s\n\n", VERSIONSTRING);
+ printf ("Copyright (C) GPL 2017 Robin Gareus <robin@gareus.org>\n");
+ exit (0);
+ break;
+
+ case 'h':
+ usage (0);
+ break;
+
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+ }
+
+ // XXX perhaps allow to infer the session-name from the dir-name
+ if (optind + 2 > argc) {
+ usage (EXIT_FAILURE);
+ }
+
+ /* all systems go */
+
+ SessionUtils::init();
+ Session* s = 0;
+
+ s = SessionUtils::create_session (argv[optind], argv[optind+1], sample_rate);
+
+ /* save is implicit when creating a new session */
+
+ SessionUtils::unload_session(s);
+ SessionUtils::cleanup();
+
+ return 0;
+}