summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-10-09 14:00:42 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-10-09 14:00:42 -0400
commit2a6a16f980ff9181b138f7a30aedfbde4426a591 (patch)
treed86752508bbd033be18301796e7d0c571a4fe1c0 /gtk2_ardour
parent66aa6dfc8ecdb7591768bc45866a8c2b0d77e767 (diff)
parent465b800d8b7dc0d9e0f92a16c6fcae29d2bbd544 (diff)
merge with master, fixing conflicts in 3 wscript files
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc272
-rw-r--r--gtk2_ardour/ardour_ui.h19
-rw-r--r--gtk2_ardour/ardour_ui_dependents.cc8
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc59
-rw-r--r--gtk2_ardour/ardour_ui_options.cc18
-rw-r--r--gtk2_ardour/audio_clock.cc2
-rw-r--r--gtk2_ardour/editor_ops.cc2
-rw-r--r--gtk2_ardour/editor_regions.cc8
-rw-r--r--gtk2_ardour/engine_dialog.cc746
-rw-r--r--gtk2_ardour/engine_dialog.h22
-rw-r--r--gtk2_ardour/export_video_dialog.cc1
-rw-r--r--gtk2_ardour/gtk_pianokeyboard.c8
-rw-r--r--gtk2_ardour/keyeditor.cc2
-rw-r--r--gtk2_ardour/main.cc12
-rw-r--r--gtk2_ardour/mixer_strip.cc4
-rw-r--r--gtk2_ardour/plugin_selector.cc10
-rw-r--r--gtk2_ardour/po/de.po2563
-rw-r--r--gtk2_ardour/processor_box.cc2
-rw-r--r--gtk2_ardour/rc_option_editor.cc6
-rw-r--r--gtk2_ardour/session_dialog.cc1075
-rw-r--r--gtk2_ardour/session_dialog.h240
-rw-r--r--gtk2_ardour/session_option_editor.cc2
-rw-r--r--gtk2_ardour/sfdb_ui.cc4
-rw-r--r--gtk2_ardour/small-splash.pngbin0 -> 9671 bytes
-rw-r--r--gtk2_ardour/startup.cc1095
-rw-r--r--gtk2_ardour/startup.h181
-rw-r--r--gtk2_ardour/transcode_video_dialog.cc1
-rw-r--r--gtk2_ardour/utils.cc15
-rw-r--r--gtk2_ardour/utils.h2
-rw-r--r--gtk2_ardour/video_monitor.cc2
-rw-r--r--gtk2_ardour/window_manager.cc1
-rw-r--r--gtk2_ardour/wscript1
32 files changed, 3392 insertions, 2991 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 5dde7f977e..8205290590 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -113,6 +113,7 @@ typedef uint64_t microseconds_t;
#include "rc_option_editor.h"
#include "route_time_axis.h"
#include "route_params_ui.h"
+#include "session_dialog.h"
#include "session_metadata_dialog.h"
#include "session_option_editor.h"
#include "shuttle_control.h"
@@ -160,7 +161,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
/* start of private members */
- , _startup (0)
, nsm (0)
, _was_dirty (false)
, _mixer_on_top (false)
@@ -195,6 +195,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
, about (X_("about"), _("About"))
, location_ui (X_("locations"), _("Locations"))
, route_params (X_("inspector"), _("Tracks and Busses"))
+ , audio_midi_setup (X_("audio-midi-setup"), _("Audio/MIDI Setup"))
, session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this))
, add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this))
, bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this))
@@ -206,7 +207,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
, _status_bar_visibility (X_("status-bar"))
, _feedback_exists (false)
- , _audio_midi_setup (0)
{
Gtkmm2ext::init(localedir);
@@ -217,7 +217,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
}
ui_config = new UIConfiguration();
- _audio_midi_setup = new EngineControl;
editor = 0;
mixer = 0;
@@ -352,6 +351,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
WM::Manager::instance().register_window (&add_route_dialog);
WM::Manager::instance().register_window (&add_video_dialog);
WM::Manager::instance().register_window (&route_params);
+ WM::Manager::instance().register_window (&audio_midi_setup);
WM::Manager::instance().register_window (&bundle_manager);
WM::Manager::instance().register_window (&location_ui);
WM::Manager::instance().register_window (&big_clock_window);
@@ -365,9 +365,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
(void) theme_manager.get (true);
- starting.connect (sigc::mem_fun(*this, &ARDOUR_UI::startup));
- stopping.connect (sigc::mem_fun(*this, &ARDOUR_UI::shutdown));
-
_process_thread = new ProcessThread ();
_process_thread->init ();
@@ -406,58 +403,12 @@ ARDOUR_UI::engine_running ()
if (first_time_engine_run) {
post_engine();
first_time_engine_run = false;
- }
+ }
- ActionManager::set_sensitive (ActionManager::engine_sensitive_actions, true);
- ActionManager::set_sensitive (ActionManager::engine_opposite_sensitive_actions, false);
-
- Glib::RefPtr<Action> action;
- const char* action_name = 0;
-
- switch (AudioEngine::instance()->samples_per_cycle()) {
- case 32:
- action_name = X_("JACKLatency32");
- break;
- case 64:
- action_name = X_("JACKLatency64");
- break;
- case 128:
- action_name = X_("JACKLatency128");
- break;
- case 512:
- action_name = X_("JACKLatency512");
- break;
- case 1024:
- action_name = X_("JACKLatency1024");
- break;
- case 2048:
- action_name = X_("JACKLatency2048");
- break;
- case 4096:
- action_name = X_("JACKLatency4096");
- break;
- case 8192:
- action_name = X_("JACKLatency8192");
- break;
- default:
- /* XXX can we do anything useful ? */
- break;
- }
-
- if (action_name) {
-
- action = ActionManager::get_action (X_("JACK"), action_name);
-
- if (action) {
- Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic (action);
- ract->set_active ();
- }
-
- update_disk_space ();
- update_cpu_load ();
- update_sample_rate (AudioEngine::instance()->sample_rate());
- update_timecode_format ();
- }
+ update_disk_space ();
+ update_cpu_load ();
+ update_sample_rate (AudioEngine::instance()->sample_rate());
+ update_timecode_format ();
}
void
@@ -485,13 +436,13 @@ ARDOUR_UI::engine_halted (const char* reason, bool free_reason)
*/
if (strlen (reason)) {
- msgstr = string_compose (_("The audio backend (JACK) was shutdown because:\n\n%1"), reason);
+ msgstr = string_compose (_("The audio backend was shutdown because:\n\n%1"), reason);
} else {
msgstr = string_compose (_("\
-JACK has either been shutdown or it\n\
+`The audio backend has either been shutdown or it\n\
disconnected %1 because %1\n\
was not fast enough. Try to restart\n\
-JACK, reconnect and save the session."), PROGRAM_NAME);
+the audio backend and save the session."), PROGRAM_NAME);
}
MessageDialog msg (*editor, msgstr);
@@ -586,6 +537,10 @@ ARDOUR_UI::post_engine ()
ARDOUR_UI::~ARDOUR_UI ()
{
+ if (ui_config->dirty()) {
+ ui_config->save_state();
+ }
+
delete keyboard;
delete editor;
delete mixer;
@@ -762,8 +717,8 @@ ARDOUR_UI::check_announcements ()
#endif
}
-void
-ARDOUR_UI::startup ()
+int
+ARDOUR_UI::starting ()
{
Application* app = Application::instance ();
char *nsm_url;
@@ -825,10 +780,33 @@ ARDOUR_UI::startup ()
delete nsm;
nsm = 0;
}
- }
- else if (get_session_parameters (true, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) {
- exit (1);
+ } else {
+
+ if (ArdourStartup::required()) {
+ ArdourStartup s;
+ s.present ();
+ main().run();
+ s.hide ();
+ switch (s.response ()) {
+ case Gtk::RESPONSE_REJECT:
+ return -1;
+ default:
+ break;
+ }
+ }
+
+ /* we need to create this early because it may need to set the
+ * audio backend end up.
+ */
+
+ audio_midi_setup.get (true);
+
+ /* go get a session */
+
+ if (get_session_parameters (false, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) {
+ return -1;
+ }
}
use_config ();
@@ -843,6 +821,7 @@ ARDOUR_UI::startup ()
_status_bar_visibility.update ();
BootMessage (string_compose (_("%1 is ready for use"), PROGRAM_NAME));
+ return 0;
}
void
@@ -1156,7 +1135,6 @@ ARDOUR_UI::update_sample_rate (framecnt_t)
}
}
}
-
sample_rate_label.set_markup (buf);
}
@@ -1860,7 +1838,7 @@ ARDOUR_UI::transport_roll ()
#if 0
if (_session->config.get_external_sync()) {
switch (Config->get_sync_source()) {
- case JACK:
+ case Engine:
break;
default:
/* transport controlled by the master */
@@ -1910,7 +1888,7 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
if (_session->config.get_external_sync()) {
switch (Config->get_sync_source()) {
- case JACK:
+ case Engine:
break;
default:
/* transport controlled by the master */
@@ -2482,7 +2460,7 @@ ARDOUR_UI::ask_about_loading_existing_session (const std::string& session_path)
}
int
-ARDOUR_UI::build_session_from_nsd (const std::string& session_path, const std::string& session_name)
+ARDOUR_UI::build_session_from_dialog (SessionDialog& sd, const std::string& session_path, const std::string& session_name)
{
BusProfile bus_profile;
@@ -2498,13 +2476,13 @@ ARDOUR_UI::build_session_from_nsd (const std::string& session_path, const std::s
/* get settings from advanced section of NSD */
- if (_startup->create_master_bus()) {
- bus_profile.master_out_channels = (uint32_t) _startup->master_channel_count();
+ if (sd.create_master_bus()) {
+ bus_profile.master_out_channels = (uint32_t) sd.master_channel_count();
} else {
bus_profile.master_out_channels = 0;
}
- if (_startup->connect_inputs()) {
+ if (sd.connect_inputs()) {
bus_profile.input_ac = AutoConnectPhysical;
} else {
bus_profile.input_ac = AutoConnectOption (0);
@@ -2512,16 +2490,16 @@ ARDOUR_UI::build_session_from_nsd (const std::string& session_path, const std::s
bus_profile.output_ac = AutoConnectOption (0);
- if (_startup->connect_outputs ()) {
- if (_startup->connect_outs_to_master()) {
+ if (sd.connect_outputs ()) {
+ if (sd.connect_outs_to_master()) {
bus_profile.output_ac = AutoConnectMaster;
- } else if (_startup->connect_outs_to_physical()) {
+ } else if (sd.connect_outs_to_physical()) {
bus_profile.output_ac = AutoConnectPhysical;
}
}
- bus_profile.requested_physical_in = (uint32_t) _startup->input_limit_count();
- bus_profile.requested_physical_out = (uint32_t) _startup->output_limit_count();
+ bus_profile.requested_physical_in = (uint32_t) sd.input_limit_count();
+ bus_profile.requested_physical_out = (uint32_t) sd.output_limit_count();
}
if (build_session (session_path, session_name, bus_profile)) {
@@ -2557,6 +2535,7 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
string template_name;
int ret = -1;
bool likely_new = false;
+ bool cancel_not_quit;
/* deal with any existing DIRTY session now, rather than later. don't
* treat a non-dirty session this way, so that it stays visible
@@ -2567,6 +2546,11 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
ARDOUR_UI::instance()->video_timeline->sync_session_state();
}
+ /* if there is already a session, relabel the button
+ on the SessionDialog so that we don't Quit directly
+ */
+ cancel_not_quit = (_session != 0);
+
if (_session && _session->dirty()) {
if (unload_session (false)) {
/* unload cancelled by user */
@@ -2580,6 +2564,20 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
template_name = load_template;
}
+ session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name);
+ session_path = ARDOUR_COMMAND_LINE::session_name;
+
+ if (!session_path.empty()) {
+ if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_EXISTS)) {
+ if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_IS_REGULAR)) {
+ /* session/snapshot file, change path to be dir */
+ session_path = Glib::path_get_dirname (session_path);
+ }
+ }
+ }
+
+ SessionDialog session_dialog (should_be_new, session_name, session_path, load_template, cancel_not_quit);
+
while (ret != 0) {
if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
@@ -2602,34 +2600,35 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
} else {
session_path = "";
session_name = "";
- }
-
- delete _startup;
- _startup = new ArdourStartup (should_be_new, session_name, session_path, load_template);
-
- if (!_startup->ready_without_display()) {
- _startup->present ();
- main().run();
- _startup->hide ();
+ session_dialog.clear_given ();
}
- switch (_startup->response()) {
- case RESPONSE_OK:
- break;
- default:
- if (quit_on_cancel) {
- exit (1);
- } else {
- return ret;
+ if (should_be_new || session_name.empty()) {
+ /* need the dialog to get info from user */
+
+ cerr << "run dialog\n";
+
+ switch (session_dialog.run()) {
+ case RESPONSE_ACCEPT:
+ break;
+ default:
+ if (quit_on_cancel) {
+ exit (1);
+ } else {
+ return ret;
+ }
}
+
+ session_dialog.hide ();
}
/* if we run the startup dialog again, offer more than just "new session" */
should_be_new = false;
- session_name = _startup->session_name (likely_new);
-
+ session_name = session_dialog.session_name (likely_new);
+ session_path = session_dialog.session_folder ();
+
if (nsm) {
likely_new = true;
}
@@ -2646,8 +2645,8 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
continue;
}
- if (_startup->use_session_template()) {
- template_name = _startup->session_template_name();
+ if (session_dialog.use_session_template()) {
+ template_name = session_dialog.session_template_name();
_session_is_new = true;
}
@@ -2664,12 +2663,12 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
} else {
- session_path = _startup->session_folder();
+ session_path = session_dialog.session_folder();
char illegal = Session::session_name_is_legal (session_name);
if (illegal) {
- MessageDialog msg (*_startup,
+ MessageDialog msg (session_dialog,
string_compose (_("To ensure compatibility with various systems\n"
"session names may not contain a '%1' character"),
illegal));
@@ -2681,6 +2680,7 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
if (Glib::file_test (session_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) {
+
if (likely_new && !nsm) {
std::string existing = Glib::build_filename (session_path, session_name);
@@ -2696,12 +2696,7 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
} else {
if (!likely_new) {
- if (_startup) {
- pop_back_splash (*_startup);
- } else {
- hide_splash ();
- }
-
+ pop_back_splash (session_dialog);
MessageDialog msg (string_compose (_("There is no existing session at \"%1\""), session_path));
msg.run ();
ARDOUR_COMMAND_LINE::session_name = ""; // cancel that
@@ -2709,10 +2704,11 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
}
char illegal = Session::session_name_is_legal(session_name);
+
if (illegal) {
- pop_back_splash (*_startup);
- MessageDialog msg (*_startup, string_compose(_("To ensure compatibility with various systems\n"
- "session names may not contain a '%1' character"), illegal));
+ pop_back_splash (session_dialog);
+ MessageDialog msg (session_dialog, string_compose(_("To ensure compatibility with various systems\n"
+ "session names may not contain a '%1' character"), illegal));
msg.run ();
ARDOUR_COMMAND_LINE::session_name = ""; // cancel that
continue;
@@ -2723,7 +2719,7 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
if (likely_new && template_name.empty()) {
- ret = build_session_from_nsd (session_path, session_name);
+ ret = build_session_from_dialog (session_dialog, session_path, session_name);
} else {
@@ -2738,6 +2734,12 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
_session->save_state (ARDOUR_COMMAND_LINE::immediate_save, false);
exit (1);
}
+
+ /* clear this to avoid endless attempts to load the
+ same session.
+ */
+
+ ARDOUR_COMMAND_LINE::session_name = "";
}
}
@@ -2830,22 +2832,12 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name,
Gtk::MESSAGE_INFO,
BUTTONS_OK);
+ msg.set_keep_above (true);
msg.set_title (_("Loading Error"));
- msg.set_secondary_text (_("Click the Refresh button to try again."));
- msg.add_button (Stock::REFRESH, 1);
msg.set_position (Gtk::WIN_POS_CENTER);
pop_back_splash (msg);
msg.present ();
-
- int response = msg.run ();
-
- switch (response) {
- case 1:
- break;
- default:
- exit (1);
- }
-
+ (void) msg.run ();
msg.hide ();
goto out;
@@ -3804,6 +3796,7 @@ ARDOUR_UI::disconnect_from_engine ()
/* drop connection to AudioEngine::Halted so that we don't act
* as if the engine unexpectedly shut down
*/
+
halt_connection.disconnect ();
if (AudioEngine::instance()->stop ()) {
@@ -4136,41 +4129,12 @@ ARDOUR_UI::reset_route_peak_display (Route* route)
}
}
-void
-ARDOUR_UI::toggle_audio_midi_setup ()
-{
- Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-audio-midi-setup"));
- if (!act) {
- return;
- }
-
- Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
-
- if (tact->get_active()) {
- launch_audio_midi_setup ();
- } else {
- _audio_midi_setup->hide ();
- }
-}
-
-void
-ARDOUR_UI::launch_audio_midi_setup ()
-{
- if (!_audio_midi_setup) {
- _audio_midi_setup = new EngineControl ();
- }
-
- _audio_midi_setup->present ();
-}
-
int
ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate)
{
- launch_audio_midi_setup ();
+ audio_midi_setup->set_desired_sample_rate (desired_sample_rate);
- _audio_midi_setup->set_desired_sample_rate (desired_sample_rate);
-
- switch (_audio_midi_setup->run()) {
+ switch (audio_midi_setup->run()) {
case Gtk::RESPONSE_OK:
return 0;
case Gtk::RESPONSE_APPLY:
@@ -4179,3 +4143,5 @@ ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate)
return -1;
}
}
+
+
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 0ca8cde907..8f4432f8e2 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -83,7 +83,6 @@ class AddRouteDialog;
class AddVideoDialog;
class VideoTimeLine;
class SystemExec;
-class ArdourStartup;
class ArdourKeyboard;
class AudioClock;
class BigClockWindow;
@@ -98,6 +97,7 @@ class Mixer_UI;
class PublicEditor;
class RCOptionEditor;
class RouteParams_UI;
+class SessionDialog;
class SessionOptionEditor;
class ShuttleControl;
class Splash;
@@ -153,7 +153,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
bool get_smart_mode () const;
int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
- int build_session_from_nsd (const std::string& session_name, const std::string& session_path);
+ int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
bool ask_about_loading_existing_session (const std::string& session_path);
/// @return true if session was successfully unloaded.
@@ -312,11 +312,10 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void toggle_session_options_window ();
private:
- ArdourStartup* _startup;
- Gtk::Tooltips _tooltips;
+ Gtk::Tooltips _tooltips;
NSM_Client *nsm;
- bool _was_dirty;
- bool _mixer_on_top;
+ bool _was_dirty;
+ bool _mixer_on_top;
bool first_time_engine_run;
void goto_editor_window ();
@@ -331,8 +330,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
static ARDOUR_UI *theArdourUI;
- void startup ();
- void shutdown ();
+ int starting ();
int ask_about_saving_session (const std::vector<std::string>& actions);
@@ -603,6 +601,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
WM::Proxy<About> about;
WM::Proxy<LocationUIWindow> location_ui;
WM::Proxy<RouteParams_UI> route_params;
+ WM::Proxy<EngineControl> audio_midi_setup;
/* Windows/Dialogs that require a creator method */
@@ -670,8 +669,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
int pending_state_dialog ();
int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
- void set_engine_buffer_size (ARDOUR::pframes_t);
-
Gtk::MenuItem* jack_disconnect_item;
Gtk::MenuItem* jack_reconnect_item;
Gtk::Menu* jack_bufsize_menu;
@@ -749,8 +746,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
std::string _announce_string;
void check_announcements ();
- EngineControl* _audio_midi_setup;
- void launch_audio_midi_setup ();
int do_audio_midi_setup (uint32_t);
};
diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc
index 821382717f..fbfc8c7afd 100644
--- a/gtk2_ardour/ardour_ui_dependents.cc
+++ b/gtk2_ardour/ardour_ui_dependents.cc
@@ -51,14 +51,6 @@ namespace ARDOUR {
using namespace ARDOUR;
void
-ARDOUR_UI::shutdown ()
-{
- if (ui_config->dirty()) {
- ui_config->save_state();
- }
-}
-
-void
ARDOUR_UI::we_have_dependents ()
{
install_actions ();
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index b64498fb33..251fc8f6fc 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -197,7 +197,6 @@ ARDOUR_UI::install_actions ()
ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window));
ActionManager::register_action (common_actions, X_("toggle-editor-mixer"), _("Toggle Editor+Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_editor_mixer));
ActionManager::register_toggle_action (common_actions, X_("toggle-meterbridge"), S_("Window|Meterbridge"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_meterbridge));
- ActionManager::register_toggle_action (common_actions, X_("toggle-audio-midi-setup"), S_("Window|Audio/MIDI Setup"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_audio_midi_setup));
act = ActionManager::register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window));
ActionManager::session_sensitive_actions.push_back (act);
@@ -397,60 +396,6 @@ ARDOUR_UI::install_actions ()
}
void
-ARDOUR_UI::set_engine_buffer_size (pframes_t nframes)
-{
- Glib::RefPtr<Action> action;
- const char* action_name = 0;
-
- switch (nframes) {
- case 32:
- action_name = X_("EngineLatency32");
- break;
- case 64:
- action_name = X_("EngineLatency64");
- break;
- case 128:
- action_name = X_("EngineLatency128");
- break;
- case 256:
- action_name = X_("EngineLatency256");
- break;
- case 512:
- action_name = X_("EngineLatency512");
- break;
- case 1024:
- action_name = X_("EngineLatency1024");
- break;
- case 2048:
- action_name = X_("EngineLatency2048");
- break;
- case 4096:
- action_name = X_("EngineLatency4096");
- break;
- case 8192:
- action_name = X_("EngineLatency8192");
- break;
- default:
- /* XXX can we do anything useful ? */
- break;
- }
-
- if (action_name) {
-
- action = ActionManager::get_action (X_("JACK"), action_name);
-
- if (action) {
- Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic (action);
-
- if (ract && ract->get_active()) {
- AudioEngine::instance()->request_buffer_size (nframes);
- update_sample_rate (0);
- }
- }
- }
-}
-
-void
ARDOUR_UI::build_menu_bar ()
{
menu_bar = dynamic_cast<MenuBar*> (ActionManager::get_widget (X_("/Main")));
@@ -528,7 +473,7 @@ ARDOUR_UI::build_menu_bar ()
_status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), disk_space);
_status_bar_visibility.add (&cpu_load_label, X_("DSP"), _("DSP"), true);
_status_bar_visibility.add (&buffer_load_label, X_("Buffers"), _("Buffers"), true);
- _status_bar_visibility.add (&sample_rate_label, X_("JACK"), _("JACK Sampling Rate and Latency"), true);
+ _status_bar_visibility.add (&sample_rate_label, X_("Audio"), _("Audio"), true);
_status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), true);
_status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), true);
@@ -614,7 +559,7 @@ ARDOUR_UI::save_ardour_state ()
window_node->add_child_nocopy (*tearoff_node);
Config->add_extra_xml (*window_node);
- Config->add_extra_xml (_audio_midi_setup->get_state());
+ Config->add_extra_xml (audio_midi_setup->get_state());
Config->save_state();
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index 6b2c9da6fa..0e28900450 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -29,10 +29,6 @@
#include "ardour/rc_configuration.h"
#include "ardour/session.h"
-#ifdef HAVE_LIBLO
-#include "ardour/osc.h"
-#endif
-
#include "audio_clock.h"
#include "ardour_ui.h"
#include "actions.h"
@@ -60,7 +56,7 @@ ARDOUR_UI::toggle_external_sync()
{
if (_session) {
if (_session->config.get_video_pullup() != 0.0f) {
- if (Config->get_sync_source() == JACK) {
+ if (Config->get_sync_source() == Engine) {
MessageDialog msg (
_("It is not possible to use JACK as the the sync source\n\
when the pull up/down setting is non-zero."));
@@ -342,16 +338,6 @@ ARDOUR_UI::parameter_changed (std::string p)
ActionManager::map_some_state ("options", "SendMMC", &RCConfiguration::get_send_mmc);
- } else if (p == "use-osc") {
-
-#ifdef HAVE_LIBLO
- if (Config->get_use_osc()) {
- osc->start ();
- } else {
- osc->stop ();
- }
-#endif
-
} else if (p == "keep-tearoffs") {
ActionManager::map_some_state ("Common", "KeepTearoffs", &RCConfiguration::get_keep_tearoffs);
} else if (p == "mmc-control") {
@@ -465,7 +451,7 @@ ARDOUR_UI::synchronize_sync_source_and_video_pullup ()
act->set_sensitive (true);
} else {
/* can't sync to JACK if video pullup != 0.0 */
- if (Config->get_sync_source() == JACK) {
+ if (Config->get_sync_source() == Engine) {
act->set_sensitive (false);
} else {
act->set_sensitive (true);
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index c658160e14..6680e95b15 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -996,7 +996,7 @@ AudioClock::set_slave_info ()
Slave* slave = _session->slave();
switch (sync_src) {
- case JACK:
+ case Engine:
_left_layout->set_markup (string_compose ("<span size=\"%1\">" TXTSPAN "%2</span></span>",
INFO_FONT_SIZE, sync_source_to_string(sync_src, true)));
_right_layout->set_text ("");
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 93a53dd1d3..6ada12220a 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2108,7 +2108,7 @@ Editor::transition_to_rolling (bool fwd)
if (_session->config.get_external_sync()) {
switch (Config->get_sync_source()) {
- case JACK:
+ case Engine:
break;
default:
/* transport controlled by the master */
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index ad5263d1d1..72a0da2909 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -1115,7 +1115,7 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b)
switch (_sort_type) {
case ByName:
- cmp = strcasecmp (region1->name().c_str(), region2->name().c_str());
+ cmp = g_strcasecmp (region1->name().c_str(), region2->name().c_str());
break;
case ByLength:
@@ -1140,7 +1140,7 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b)
break;
case BySourceFileName:
- cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str());
+ cmp = g_strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str());
break;
case BySourceFileLength:
@@ -1153,9 +1153,9 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b)
case BySourceFileFS:
if (region1->source()->name() == region2->source()->name()) {
- cmp = strcasecmp (region1->name().c_str(), region2->name().c_str());
+ cmp = g_strcasecmp (region1->name().c_str(), region2->name().c_str());
} else {
- cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str());
+ cmp = g_strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str());
}
break;
}
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 65fa7227a7..dfd24af739 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -48,6 +48,7 @@
#include "ardour_ui.h"
#include "engine_dialog.h"
#include "gui_thread.h"
+#include "utils.h"
#include "i18n.h"
using namespace std;
@@ -78,20 +79,147 @@ EngineControl::EngineControl ()
, aj_button (_("Start MIDI ALSA/JACK bridge"))
, ignore_changes (0)
, _desired_sample_rate (0)
+ , no_push (true)
+ , started_at_least_once (false)
{
- if (!ARDOUR::AudioEngine::instance()->setup_required()) {
- _have_control = false;
- } else {
- _have_control = true;
- }
+ using namespace Notebook_Helpers;
+ vector<string> strings;
+ Label* label;
+ AttachOptions xopt = AttachOptions (FILL|EXPAND);
+ int row;
set_name (X_("AudioMIDISetup"));
- build_notebook ();
+ /* the backend combo is the one thing that is ALWAYS visible
+ */
+
+ vector<const ARDOUR::AudioBackendInfo*> backends = ARDOUR::AudioEngine::instance()->available_backends();
+ for (vector<const ARDOUR::AudioBackendInfo*>::const_iterator b = backends.begin(); b != backends.end(); ++b) {
+ strings.push_back ((*b)->name);
+ }
+
+ set_popdown_strings (backend_combo, strings);
+ backend_combo.set_active_text (strings.front());
+ backend_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::backend_changed));
+
+ /* setup basic packing characteristics for the table used on the main
+ * tab of the notebook
+ */
+
+ basic_packer.set_spacings (6);
+ basic_packer.set_border_width (12);
+ basic_packer.set_homogeneous (true);
+
+ /* pack it in */
+
+ basic_hbox.pack_start (basic_packer, false, false);
+
+ /* latency tab */
+
+ /* latency measurement tab */
+
+ lm_title.set_markup (string_compose ("<span size=\"large\" weight=\"bold\">%1</span>", _("Latency Measurement Tool")));
+
+ row = 0;
+ lm_table.set_row_spacings (12);
+
+ lm_table.attach (lm_title, 0, 2, row, row+1, xopt, (AttachOptions) 0);
+ row++;
+
+ Gtk::Label* preamble;
+
+ preamble = manage (new Label);
+ preamble->set_width_chars (60);
+ preamble->set_line_wrap (true);
+ preamble->set_markup (_("<span weight=\"bold\">Turn down the volume on your hardware to a very low level.</span>"));
+
+ lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ row++;
+
+ preamble = manage (new Label);
+ preamble->set_width_chars (60);
+ preamble->set_line_wrap (true);
+ preamble->set_markup (_("Select two channels below and connect them using a cable or (less ideally) a speaker and microphone."));
+
+ lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ row++;
+
+ label = manage (new Label (_("Output channel")));
+ lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0);
+
+ Gtk::Alignment* misc_align = manage (new Alignment (0.0, 0.5));
+ misc_align->add (lm_output_channel_combo);
+ lm_table.attach (*misc_align, 1, 2, row, row+1, xopt, (AttachOptions) 0);
+ ++row;
+
+ label = manage (new Label (_("Input channel")));
+ lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0);
+
+ misc_align = manage (new Alignment (0.0, 0.5));
+ misc_align->add (lm_input_channel_combo);
+ lm_table.attach (*misc_align, 1, 2, row, row+1, FILL, (AttachOptions) 0);
+ ++row;
+
+ xopt = AttachOptions(0);
+
+ lm_measure_button.add (lm_start_stop_label);
+
+ lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled));
+ lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked));
+ lm_use_button.set_sensitive (false);
+
+ preamble = manage (new Label);
+ preamble->set_width_chars (60);
+ preamble->set_line_wrap (true);
+ preamble->set_markup (_("Once the channels are connected, click the \"Measure latency\" button."));
+ lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ row++;
+
+ lm_table.attach (lm_measure_button, 0, 2, row, row+1, xopt, (AttachOptions) 0);
+ ++row;
+ lm_table.attach (lm_results, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ ++row;
+
+
+ preamble = manage (new Label);
+ preamble->set_width_chars (60);
+ preamble->set_line_wrap (true);
+ preamble->set_markup (_("When satisfied with the results, click the \"Use results\" button."));
+ lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ row++;
+
+ lm_table.attach (lm_use_button, 0, 2, row, row+1, xopt, (AttachOptions) 0);
+ ++row;
+
+ lm_results.set_markup ("<i>No measurement results yet</i>");
+
+ lm_vbox.set_border_width (12);
+ lm_vbox.pack_start (lm_table, false, false);
+
+ /* pack it all up */
+
+ notebook.pages().push_back (TabElem (basic_vbox, _("Audio")));
+ notebook.pages().push_back (TabElem (midi_vbox, _("MIDI")));
+ notebook.pages().push_back (TabElem (lm_vbox, _("Latency")));
+ notebook.set_border_width (12);
+
+ notebook.set_tab_pos (POS_RIGHT);
+ notebook.show_all ();
+
+ notebook.set_name ("SettingsNotebook");
+
+ /* packup the notebook */
get_vbox()->set_border_width (12);
get_vbox()->pack_start (notebook);
+ /* need a special function to print "all available channels" when the
+ * channel counts hit zero.
+ */
+
+ input_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &input_channels));
+ output_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &output_channels));
+
control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked));
manage_control_app_sensitivity ();
@@ -103,12 +231,31 @@ EngineControl::EngineControl ()
XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioMIDISetup");
- /* push a change as if we altered the backend */
+ ARDOUR::AudioEngine::instance()->Running.connect (running_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_running, this), gui_context());
+ ARDOUR::AudioEngine::instance()->Stopped.connect (stopped_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_stopped, this), gui_context());
+ ARDOUR::AudioEngine::instance()->Halted.connect (stopped_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_stopped, this), gui_context());
+
backend_changed ();
if (audio_setup) {
set_state (*audio_setup);
- }
+ }
+
+ /* Connect to signals */
+
+ driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed));
+ sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::sample_rate_changed));
+ buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::buffer_size_changed));
+ device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed));
+
+ input_latency.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
+ output_latency.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
+ input_channels.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
+ output_channels.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
+
+ notebook.signal_switch_page().connect (sigc::mem_fun (*this, &EngineControl::on_switch_page));
+
+ no_push = false;
}
void
@@ -139,36 +286,58 @@ EngineControl::on_response (int response_id)
void
EngineControl::build_notebook ()
{
- using namespace Notebook_Helpers;
Label* label;
- vector<string> strings;
- int row = 0;
+ AttachOptions xopt = AttachOptions (FILL|EXPAND);
- vector<const ARDOUR::AudioBackendInfo*> backends = ARDOUR::AudioEngine::instance()->available_backends();
- for (vector<const ARDOUR::AudioBackendInfo*>::const_iterator b = backends.begin(); b != backends.end(); ++b) {
- strings.push_back ((*b)->name);
+ /* clear the table */
+
+ Gtkmm2ext::container_clear (basic_vbox);
+ Gtkmm2ext::container_clear (basic_packer);
+
+ label = manage (left_aligned_label (_("Audio System:")));
+ basic_packer.attach (*label, 0, 1, 0, 1, xopt, (AttachOptions) 0);
+ basic_packer.attach (backend_combo, 1, 2, 0, 1, xopt, (AttachOptions) 0);
+
+ if (_have_control) {
+ build_full_control_notebook ();
+ } else {
+ build_no_control_notebook ();
}
- set_popdown_strings (backend_combo, strings);
- backend_combo.set_active_text (strings.front());
+ basic_vbox.pack_start (basic_hbox, false, false);
- basic_packer.set_spacings (6);
- basic_packer.set_border_width (12);
- basic_packer.set_homogeneous (true);
+ if (_have_control) {
+ Gtk::HBox* hpacker = manage (new HBox);
+ hpacker->set_border_width (12);
+ hpacker->pack_start (control_app_button, false, false);
+ hpacker->show ();
+ control_app_button.show();
+ basic_vbox.pack_start (*hpacker);
+ }
- row = 0;
+ basic_vbox.show_all ();
+}
+
+void
+EngineControl::build_full_control_notebook ()
+{
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
+ using namespace Notebook_Helpers;
+ Label* label;
+ vector<string> strings;
AttachOptions xopt = AttachOptions (FILL|EXPAND);
+ int row = 1; // row zero == backend combo
- label = manage (left_aligned_label (_("Audio System:")));
- basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
- basic_packer.attach (backend_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
- row++;
+ /* start packing it up */
- label = manage (left_aligned_label (_("Driver:")));
- basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
- basic_packer.attach (driver_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
- row++;
+ if (backend->requires_driver_selection()) {
+ label = manage (left_aligned_label (_("Driver:")));
+ basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
+ basic_packer.attach (driver_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
+ row++;
+ }
label = manage (left_aligned_label (_("Device:")));
basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
@@ -236,126 +405,46 @@ EngineControl::build_notebook ()
basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0);
++row;
- basic_hbox.pack_start (basic_packer, false, false);
- basic_vbox.pack_start (basic_hbox, false, false);
-
- Gtk::HBox* hpacker = manage (new HBox);
- hpacker->set_border_width (12);
- hpacker->pack_start (control_app_button, false, false);
- hpacker->show ();
- control_app_button.show();
- basic_vbox.pack_start (*hpacker);
-
- /* latency measurement tab */
-
- lm_title.set_markup (string_compose ("<span size=\"large\" weight=\"bold\">%1</span>", _("Latency Measurement Tool")));
-
- row = 0;
- lm_table.set_row_spacings (12);
-
- lm_table.attach (lm_title, 0, 2, row, row+1, xopt, (AttachOptions) 0);
- row++;
-
- Gtk::Label* preamble;
-
- preamble = manage (new Label);
- preamble->set_width_chars (60);
- preamble->set_line_wrap (true);
- preamble->set_markup (_("<span weight=\"bold\">Turn down the volume on your hardware to a very low level.</span>"));
+}
- lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
- row++;
+void
+EngineControl::build_no_control_notebook ()
+{
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
- preamble = manage (new Label);
- preamble->set_width_chars (60);
- preamble->set_line_wrap (true);
- preamble->set_markup (_("Select two channels below and connect them using a cable or (less ideally) a speaker and microphone."));
+ using namespace Notebook_Helpers;
+ Label* label;
+ vector<string> strings;
+ AttachOptions xopt = AttachOptions (FILL|EXPAND);
+ int row = 1; // row zero == backend combo
+ const string msg = string_compose (_("The %1 audio backend was configured and started externally.\nThis limits your control over it."), backend->name());
- lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ label = manage (new Label);
+ label->set_markup (string_compose ("<span weight=\"bold\" foreground=\"red\">%1</span>", msg));
+ basic_packer.attach (*label, 0, 2, row, row + 1, xopt, (AttachOptions) 0);
row++;
- label = manage (new Label (_("Output channel")));
- lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0);
-
- Gtk::Alignment* misc_align = manage (new Alignment (0.0, 0.5));
- misc_align->add (lm_output_channel_combo);
- lm_table.attach (*misc_align, 1, 2, row, row+1, xopt, (AttachOptions) 0);
- ++row;
-
- label = manage (new Label (_("Input channel")));
- lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0);
-
- misc_align = manage (new Alignment (0.0, 0.5));
- misc_align->add (lm_input_channel_combo);
- lm_table.attach (*misc_align, 1, 2, row, row+1, FILL, (AttachOptions) 0);
- ++row;
-
- xopt = AttachOptions(0);
-
- lm_measure_button.add (lm_start_stop_label);
-
- lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled));
- lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked));
- lm_use_button.set_sensitive (false);
-
-
- preamble = manage (new Label);
- preamble->set_width_chars (60);
- preamble->set_line_wrap (true);
- preamble->set_markup (_("Once the channels are connected, click the \"Measure latency\" button."));
- lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
- row++;
+ if (backend->can_change_sample_rate_when_running()) {
+ label = manage (left_aligned_label (_("Sample rate:")));
+ basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
+ basic_packer.attach (sample_rate_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
+ row++;
+ }
- lm_table.attach (lm_measure_button, 0, 2, row, row+1, xopt, (AttachOptions) 0);
- ++row;
- lm_table.attach (lm_results, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
- ++row;
+ if (backend->can_change_buffer_size_when_running()) {
+ label = manage (left_aligned_label (_("Buffer size:")));
+ basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
+ basic_packer.attach (buffer_size_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
+ buffer_size_duration_label.set_alignment (0.0); /* left-align */
+ basic_packer.attach (buffer_size_duration_label, 2, 3, row, row+1, xopt, (AttachOptions) 0);
+ row++;
+ }
+ connect_disconnect_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::connect_disconnect_click));
- preamble = manage (new Label);
- preamble->set_width_chars (60);
- preamble->set_line_wrap (true);
- preamble->set_markup (_("When satisfied with the results, click the \"Use results\" button."));
- lm_table.attach (*preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0);
+ basic_packer.attach (connect_disconnect_button, 0, 2, row, row+1, FILL, AttachOptions (0));
row++;
-
- lm_table.attach (lm_use_button, 0, 2, row, row+1, xopt, (AttachOptions) 0);
- ++row;
-
- lm_results.set_markup ("<i>No measurement results yet</i>");
-
- lm_vbox.set_border_width (12);
- lm_vbox.pack_start (lm_table, false, false);
-
- /* pack it all up */
-
- notebook.pages().push_back (TabElem (basic_vbox, _("Audio")));
- notebook.pages().push_back (TabElem (midi_vbox, _("MIDI")));
- notebook.pages().push_back (TabElem (lm_vbox, _("Latency")));
- notebook.set_border_width (12);
-
- notebook.set_tab_pos (POS_RIGHT);
- notebook.show_all ();
-
- notebook.set_name ("SettingsNotebook");
-
- /* Connect to signals */
-
- backend_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::backend_changed));
- driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed));
- sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::sample_rate_changed));
- buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::buffer_size_changed));
- device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed));
-
- input_latency.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
- output_latency.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
- input_channels.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
- output_channels.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
-
- input_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &input_channels));
- output_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &output_channels));
-
- notebook.signal_switch_page().connect (sigc::mem_fun (*this, &EngineControl::on_switch_page));
}
EngineControl::~EngineControl ()
@@ -471,6 +560,11 @@ EngineControl::refresh_midi_display ()
}
void
+EngineControl::update_sensitivity ()
+{
+}
+
+void
EngineControl::backend_changed ()
{
if (ignore_changes) {
@@ -485,16 +579,29 @@ EngineControl::backend_changed ()
return;
}
+ _have_control = ARDOUR::AudioEngine::instance()->setup_required ();
+
+ build_notebook ();
setup_midi_tab_for_backend ();
if (backend->requires_driver_selection()) {
vector<string> drivers = backend->enumerate_drivers();
- driver_combo.set_sensitive (true);
- set_popdown_strings (driver_combo, drivers);
- driver_combo.set_active_text (drivers.front());
- driver_changed ();
+
+ if (!drivers.empty()) {
+ {
+ PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
+ set_popdown_strings (driver_combo, drivers);
+ driver_combo.set_active_text (drivers.front());
+ }
+
+ driver_changed ();
+ }
+
} else {
driver_combo.set_sensitive (false);
+ /* this will change the device text which will cause a call to
+ * device changed which will set up parameters
+ */
list_devices ();
}
@@ -540,33 +647,33 @@ EngineControl::list_devices ()
available_devices.push_back (i->name);
}
- ignore_changes++;
- set_popdown_strings (device_combo, available_devices);
- ignore_changes--;
-
if (!available_devices.empty()) {
- sample_rate_combo.set_sensitive (true);
- buffer_size_combo.set_sensitive (true);
- input_latency.set_sensitive (true);
- output_latency.set_sensitive (true);
- input_channels.set_sensitive (true);
- output_channels.set_sensitive (true);
+
+ update_sensitivity ();
- /* changing the text in the combo will trigger device_changed()
- which should populate the parameter controls
- */
-
- device_combo.set_active_text (available_devices.front());
+ {
+ PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
+ set_popdown_strings (device_combo, available_devices);
+ device_combo.set_active_text (available_devices.front());
+ }
+
+ device_changed ();
+
+ ok_button->set_sensitive (true);
+ apply_button->set_sensitive (true);
+
} else {
- sample_rate_combo.set_sensitive (true);
- buffer_size_combo.set_sensitive (true);
- input_latency.set_sensitive (true);
- output_latency.set_sensitive (true);
- input_channels.set_sensitive (true);
- output_channels.set_sensitive (true);
+ sample_rate_combo.set_sensitive (false);
+ buffer_size_combo.set_sensitive (false);
+ input_latency.set_sensitive (false);
+ output_latency.set_sensitive (false);
+ input_channels.set_sensitive (false);
+ output_channels.set_sensitive (false);
+ ok_button->set_sensitive (false);
+ apply_button->set_sensitive (false);
}
}
-
+
void
EngineControl::driver_changed ()
{
@@ -595,59 +702,95 @@ EngineControl::device_changed ()
string device_name = device_combo.get_active_text ();
vector<string> s;
- /* don't allow programmatic change to sample_rate_combo to cause a
- recursive call to this method.
- */
-
- ignore_changes++;
+ {
+ PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
- /* sample rates */
-
- string desired;
+ /* don't allow programmatic change to combos to cause a
+ recursive call to this method.
+ */
+
+ /* sample rates */
+
+ string desired;
+
+ vector<float> sr;
- vector<float> sr = backend->available_sample_rates (device_name);
- for (vector<float>::const_iterator x = sr.begin(); x != sr.end(); ++x) {
- s.push_back (rate_as_string (*x));
- if (*x == _desired_sample_rate) {
- desired = s.back();
+ if (_have_control) {
+ sr = backend->available_sample_rates (device_name);
+ } else {
+
+ sr.push_back (8000.0f);
+ sr.push_back (16000.0f);
+ sr.push_back (32000.0f);
+ sr.push_back (44100.0f);
+ sr.push_back (48000.0f);
+ sr.push_back (88200.0f);
+ sr.push_back (96000.0f);
+ sr.push_back (192000.0f);
+ sr.push_back (384000.0f);
}
- }
- if (!s.empty()) {
- set_popdown_strings (sample_rate_combo, s);
-
- if (desired.empty()) {
- sample_rate_combo.set_active_text (s.front());
+ for (vector<float>::const_iterator x = sr.begin(); x != sr.end(); ++x) {
+ s.push_back (rate_as_string (*x));
+ if (*x == _desired_sample_rate) {
+ desired = s.back();
+ }
+ }
+
+ if (!s.empty()) {
+ sample_rate_combo.set_sensitive (true);
+ set_popdown_strings (sample_rate_combo, s);
+
+ if (desired.empty()) {
+ sample_rate_combo.set_active_text (s.front());
+ } else {
+ sample_rate_combo.set_active_text (desired);
+ }
+
} else {
- sample_rate_combo.set_active_text (desired);
+ sample_rate_combo.set_sensitive (false);
}
- } else {
- /* hmm ... how to tell the user about the fact that we have no
- * available sample rates.
- */
- }
-
- vector<uint32_t> bs = backend->available_buffer_sizes(device_name);
- s.clear ();
- for (vector<uint32_t>::const_iterator x = bs.begin(); x != bs.end(); ++x) {
- s.push_back (bufsize_as_string (*x));
- }
+ /* buffer sizes */
+
+ vector<uint32_t> bs;
+
+ if (_have_control) {
+ bs = backend->available_buffer_sizes(device_name);
+ } else if (backend->can_change_buffer_size_when_running()) {
+ bs.push_back (8);
+ bs.push_back (16);
+ bs.push_back (32);
+ bs.push_back (64);
+ bs.push_back (128);
+ bs.push_back (256);
+ bs.push_back (512);
+ bs.push_back (1024);
+ bs.push_back (2048);
+ bs.push_back (4096);
+ bs.push_back (8192);
+ }
+ s.clear ();
+ for (vector<uint32_t>::const_iterator x = bs.begin(); x != bs.end(); ++x) {
+ s.push_back (bufsize_as_string (*x));
+ }
+
+ if (!s.empty()) {
+ buffer_size_combo.set_sensitive (true);
+ set_popdown_strings (buffer_size_combo, s);
+
+ buffer_size_combo.set_active_text (s.front());
+ show_buffer_duration ();
+ } else {
+ buffer_size_combo.set_sensitive (false);
+ }
- if (!s.empty()) {
- set_popdown_strings (buffer_size_combo, s);
- buffer_size_combo.set_active_text (s.front());
- show_buffer_duration ();
- } else {
- /* hmm ... how to tell the user about the fact that we have no
- * available buffer sizes.
+ /* XXX theoretically need to set min + max channel counts here
*/
+
+ manage_control_app_sensitivity ();
}
- manage_control_app_sensitivity ();
-
- ignore_changes--;
-
/* pick up any saved state for this device */
maybe_display_saved_state ();
@@ -658,18 +801,6 @@ EngineControl::device_changed ()
}
string
-EngineControl::rate_as_string (float r)
-{
- char buf[32];
- if (fmod (r, 1000.0f)) {
- snprintf (buf, sizeof (buf), "%.1f kHz", r/1000.0);
- } else {
- snprintf (buf, sizeof (buf), "%.0f kHz", r/1000.0);
- }
- return buf;
-}
-
-string
EngineControl::bufsize_as_string (uint32_t sz)
{
/* Translators: "samples" is always plural here, so no
@@ -774,6 +905,10 @@ EngineControl::get_saved_state_for_currently_displayed_backend_and_device ()
EngineControl::State*
EngineControl::save_state ()
{
+ if (!_have_control) {
+ return 0;
+ }
+
bool existing = true;
State* state = get_saved_state_for_currently_displayed_backend_and_device ();
@@ -808,10 +943,15 @@ EngineControl::store_state (State& state)
void
EngineControl::maybe_display_saved_state ()
{
+ if (!_have_control) {
+ return;
+ }
+
State* state = get_saved_state_for_currently_displayed_backend_and_device ();
if (state) {
- ignore_changes++;
+ PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
+
if (!_desired_sample_rate) {
sample_rate_combo.set_active_text (rate_as_string (state->sample_rate));
}
@@ -822,7 +962,6 @@ EngineControl::maybe_display_saved_state ()
show_buffer_duration ();
input_latency.set_value (state->input_latency);
output_latency.set_value (state->output_latency);
- ignore_changes--;
}
}
@@ -952,6 +1091,7 @@ EngineControl::set_state (const XMLNode& root)
/* now see if there was an active state and switch the setup to it */
for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) {
+
if ((*i).active) {
ignore_changes++;
backend_combo.set_active_text ((*i).backend);
@@ -971,6 +1111,10 @@ EngineControl::set_state (const XMLNode& root)
int
EngineControl::push_state_to_backend (bool start)
{
+ if (no_push) {
+ return 0;
+ }
+
boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
if (!backend) {
@@ -992,47 +1136,60 @@ EngineControl::push_state_to_backend (bool start)
uint32_t ichan = get_input_channels ();
if (_have_control) {
-
- /* we can control the backend */
- if (backend->requires_driver_selection()) {
- if (get_driver() != backend->driver_name()) {
- change_driver = true;
+ if (started_at_least_once) {
+
+ /* we can control the backend */
+
+ if (backend->requires_driver_selection()) {
+ if (get_driver() != backend->driver_name()) {
+ change_driver = true;
+ }
}
- }
+
+ if (get_device_name() != backend->device_name()) {
+ change_device = true;
+ }
+
+ if (get_rate() != backend->sample_rate()) {
+ change_rate = true;
+ }
+
+ if (get_buffer_size() != backend->buffer_size()) {
+ change_bufsize = true;
+ }
+
+ /* zero-requested channels means "all available" */
- if (get_device_name() != backend->device_name()) {
- change_device = true;
- }
+ if (ichan == 0) {
+ ichan = backend->input_channels();
+ }
+
+ if (ochan == 0) {
+ ochan = backend->output_channels();
+ }
+
+ if (ichan != backend->input_channels()) {
+ change_channels = true;
+ }
+
+ if (ochan != backend->output_channels()) {
+ change_channels = true;
+ }
- if (get_rate() != backend->sample_rate()) {
+ if (get_input_latency() != backend->systemic_input_latency() ||
+ get_output_latency() != backend->systemic_output_latency()) {
+ change_latency = true;
+ }
+ } else {
+ /* backend never started, so we have to force a group
+ of settings.
+ */
+ change_driver = true;
+ change_device = true;
change_rate = true;
- }
-
- if (get_buffer_size() != backend->buffer_size()) {
change_bufsize = true;
- }
-
- /* zero-requested channels means "all available" */
-
- if (ichan == 0) {
- ichan = backend->input_channels();
- }
-
- if (ochan == 0) {
- ochan = backend->output_channels();
- }
-
- if (ichan != backend->input_channels()) {
change_channels = true;
- }
-
- if (ochan != backend->output_channels()) {
- change_channels = true;
- }
-
- if (get_input_latency() != backend->systemic_input_latency() ||
- get_output_latency() != backend->systemic_output_latency()) {
change_latency = true;
}
@@ -1175,26 +1332,28 @@ EngineControl::post_push ()
* necessary
*/
- State* state = get_saved_state_for_currently_displayed_backend_and_device ();
-
- if (!state) {
- state = save_state ();
- assert (state);
- }
-
- /* all off */
-
- for (StateList::iterator i = states.begin(); i != states.end(); ++i) {
- (*i).active = false;
+ if (_have_control) {
+ State* state = get_saved_state_for_currently_displayed_backend_and_device ();
+
+ if (!state) {
+ state = save_state ();
+ assert (state);
+ }
+
+ /* all off */
+
+ for (StateList::iterator i = states.begin(); i != states.end(); ++i) {
+ (*i).active = false;
+ }
+
+ /* mark this one active (to be used next time the dialog is
+ * shown)
+ */
+
+ state->active = true;
+
+ manage_control_app_sensitivity ();
}
-
- /* mark this one active (to be used next time the dialog is
- * shown)
- */
-
- state->active = true;
-
- manage_control_app_sensitivity ();
/* schedule a redisplay of MIDI ports */
@@ -1482,3 +1641,42 @@ EngineControl::on_delete_event (GdkEventAny* ev)
return ArdourDialog::on_delete_event (ev);
}
+void
+EngineControl::engine_running ()
+{
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
+
+ buffer_size_combo.set_active_text (bufsize_as_string (backend->buffer_size()));
+ sample_rate_combo.set_active_text (rate_as_string (backend->sample_rate()));
+
+ buffer_size_combo.set_sensitive (true);
+ sample_rate_combo.set_sensitive (true);
+
+ connect_disconnect_button.set_label (string_compose (_("Disconnect from %1"), backend->name()));
+
+ started_at_least_once = true;
+}
+
+void
+EngineControl::engine_stopped ()
+{
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
+
+ buffer_size_combo.set_sensitive (false);
+ connect_disconnect_button.set_label (string_compose (_("Connect to %1"), backend->name()));
+
+ sample_rate_combo.set_sensitive (true);
+ buffer_size_combo.set_sensitive (true);
+}
+
+void
+EngineControl::connect_disconnect_click()
+{
+ if (ARDOUR::AudioEngine::instance()->running()) {
+ ARDOUR_UI::instance()->disconnect_from_engine ();
+ } else {
+ ARDOUR_UI::instance()->reconnect_to_engine ();
+ }
+}
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index fcbdfe4cb8..ac17814a5f 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -75,8 +75,11 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
Gtk::Adjustment ports_adjustment;
Gtk::SpinButton ports_spinner;
+ Gtk::Label have_control_text;
Gtk::Button control_app_button;
+ Gtk::Button connect_disconnect_button;
+
/* latency measurement */
Gtk::ComboBoxText lm_output_channel_combo;
@@ -106,9 +109,9 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
uint32_t ignore_changes;
uint32_t _desired_sample_rate;
-
- static bool engine_running ();
-
+ bool no_push;
+ bool started_at_least_once;
+
void driver_changed ();
void backend_changed ();
void sample_rate_changed ();
@@ -119,7 +122,6 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void setup_midi_tab_for_jack ();
void refresh_midi_display ();
- std::string rate_as_string (float);
std::string bufsize_as_string (uint32_t);
float get_rate() const;
@@ -174,6 +176,8 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
static bool print_channel_count (Gtk::SpinButton*);
void build_notebook ();
+ void build_full_control_notebook ();
+ void build_no_control_notebook ();
void on_response (int);
void control_app_button_clicked ();
@@ -181,6 +185,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void manage_control_app_sensitivity ();
int push_state_to_backend (bool start);
void post_push ();
+ void update_sensitivity ();
/* latency measurement */
void latency_button_toggled ();
@@ -190,9 +195,16 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void disable_latency_tab ();
void start_latency_detection ();
void end_latency_detection ();
-
+
void on_switch_page (GtkNotebookPage*, guint page_num);
bool on_delete_event (GdkEventAny*);
+
+ void engine_running ();
+ void engine_stopped ();
+ PBD::ScopedConnection running_connection;
+ PBD::ScopedConnection stopped_connection;
+
+ void connect_disconnect_click ();
};
#endif /* __gtk2_ardour_engine_dialog_h__ */
diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc
index 7f6fcc2a8a..b3a97f20b9 100644
--- a/gtk2_ardour/export_video_dialog.cc
+++ b/gtk2_ardour/export_video_dialog.cc
@@ -28,7 +28,6 @@
#include <fcntl.h>
#include <sigc++/bind.h>
-#include <libgen.h>
#include <glib/gstdio.h>
diff --git a/gtk2_ardour/gtk_pianokeyboard.c b/gtk2_ardour/gtk_pianokeyboard.c
index 1e5768040e..f3897e3d44 100644
--- a/gtk2_ardour/gtk_pianokeyboard.c
+++ b/gtk2_ardour/gtk_pianokeyboard.c
@@ -33,9 +33,9 @@
#include <assert.h>
#include <string.h>
-#include <strings.h>
#include <stdint.h>
#include <cairo/cairo.h>
+
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
@@ -732,13 +732,13 @@ piano_keyboard_set_keyboard_layout(PianoKeyboard *pk, const char *layout)
{
assert(layout);
- if (!strcasecmp(layout, "QWERTY")) {
+ if (!g_strcasecmp(layout, "QWERTY")) {
bind_keys_qwerty(pk);
- } else if (!strcasecmp(layout, "QWERTZ")) {
+ } else if (!g_strcasecmp(layout, "QWERTZ")) {
bind_keys_qwertz(pk);
- } else if (!strcasecmp(layout, "AZERTY")) {
+ } else if (!g_strcasecmp(layout, "AZERTY")) {
bind_keys_azerty(pk);
} else {
diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc
index 07042a1cdf..f23e246958 100644
--- a/gtk2_ardour/keyeditor.cc
+++ b/gtk2_ardour/keyeditor.cc
@@ -250,8 +250,6 @@ KeyEditor::populate ()
//kinda kludgy way to avoid displaying menu items as mappable
if ( parts[1] == _("Main_menu") )
continue;
- if ( parts[1] == _("JACK") )
- continue;
if ( parts[1] == _("redirectmenu") )
continue;
if ( parts[1] == _("Editor_menus") )
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index f55405a84d..da2677b296 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -37,8 +37,6 @@
#include "pbd/boost_debug.h"
#endif
-#include <jack/jack.h>
-
#include "ardour/revision.h"
#include "ardour/version.h"
#include "ardour/ardour.h"
@@ -81,17 +79,10 @@ static const char* localedir = LOCALEDIR;
void
gui_jack_error ()
{
- MessageDialog win (string_compose (_("%1 could not connect to JACK."), PROGRAM_NAME),
+ MessageDialog win (string_compose (_("%1 could not connect to the audio backend."), PROGRAM_NAME),
false,
Gtk::MESSAGE_INFO,
Gtk::BUTTONS_NONE);
- win.set_secondary_text(string_compose (_("There are several possible reasons:\n\
-\n\
-1) JACK is not running.\n\
-2) JACK is running as another user, perhaps root.\n\
-3) There is already another client called \"%1\".\n\
-\n\
-Please consider the possibilities, and perhaps (re)start JACK."), PROGRAM_NAME));
win.add_button (Stock::QUIT, RESPONSE_CLOSE);
win.set_default_response (RESPONSE_CLOSE);
@@ -530,6 +521,7 @@ int main (int argc, char *argv[])
ui->run (text_receiver);
Gtkmm2ext::Application::instance()->cleanup();
+ delete ui;
ui = 0;
ARDOUR::cleanup ();
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 9e2140fd10..a8ec7d5c79 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -698,7 +698,7 @@ MixerStrip::output_press (GdkEventButton *ev)
{
using namespace Menu_Helpers;
if (!_session->engine().connected()) {
- MessageDialog msg (_("Not connected to JACK - no I/O changes are possible"));
+ MessageDialog msg (_("Not connected to audio engine - no I/O changes are possible"));
msg.run ();
return true;
}
@@ -826,7 +826,7 @@ MixerStrip::input_press (GdkEventButton *ev)
citems.clear();
if (!_session->engine().connected()) {
- MessageDialog msg (_("Not connected to JACK - no I/O changes are possible"));
+ MessageDialog msg (_("Not connected to audio engine - no I/O changes are possible"));
msg.run ();
return true;
}
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 2a031318ff..9c03bd5c48 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -537,13 +537,13 @@ struct PluginMenuCompareByCreator {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp = strcasecmp (a->creator.c_str(), b->creator.c_str());
+ cmp = g_strcasecmp (a->creator.c_str(), b->creator.c_str());
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same creator ... compare names */
- if (strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
+ if (g_strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
return true;
}
}
@@ -555,7 +555,7 @@ struct PluginMenuCompareByName {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp = strcasecmp (a->name.c_str(), b->name.c_str());
+ cmp = g_strcasecmp (a->name.c_str(), b->name.c_str());
if (cmp < 0) {
return true;
@@ -573,13 +573,13 @@ struct PluginMenuCompareByCategory {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp = strcasecmp (a->category.c_str(), b->category.c_str());
+ cmp = g_strcasecmp (a->category.c_str(), b->category.c_str());
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same category ... compare names */
- if (strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
+ if (g_strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
return true;
}
}
diff --git a/gtk2_ardour/po/de.po b/gtk2_ardour/po/de.po
index 74288bde3f..5817ab3878 100644
--- a/gtk2_ardour/po/de.po
+++ b/gtk2_ardour/po/de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk-ardour 0.347.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-03 10:44+0200\n"
-"PO-Revision-Date: 2013-09-03 11:41+0200\n"
+"POT-Creation-Date: 2013-09-26 16:09+0200\n"
+"PO-Revision-Date: 2013-09-26 16:32+0200\n"
"Last-Translator: Edgar Aichinger <edogawa@aon.at>\n"
"Language-Team: German <ardour-dev@lists.ardour.org>\n"
"Language: de\n"
@@ -448,8 +448,8 @@ msgstr "Audiobusse"
msgid "Add:"
msgstr "Erstelle:"
-#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91
-#: add_video_dialog.cc:150 video_server_dialog.cc:112
+#: add_route_dialog.cc:114 time_fx_dialog.cc:91 add_video_dialog.cc:150
+#: video_server_dialog.cc:112
msgid "<b>Options</b>"
msgstr "<b>Optionen</b>"
@@ -463,21 +463,22 @@ msgid "Group:"
msgstr "Gruppe:"
#: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298
-#: rc_option_editor.cc:1456 rc_option_editor.cc:1458 rc_option_editor.cc:1460
-#: rc_option_editor.cc:1478 rc_option_editor.cc:1480 rc_option_editor.cc:1488
-#: rc_option_editor.cc:1490 rc_option_editor.cc:1508 rc_option_editor.cc:1521
-#: rc_option_editor.cc:1523 rc_option_editor.cc:1525 rc_option_editor.cc:1556
-#: rc_option_editor.cc:1558 rc_option_editor.cc:1560 rc_option_editor.cc:1568
-#: rc_option_editor.cc:1576 rc_option_editor.cc:1584
+#: ardour_ui_ed.cc:476 engine_dialog.cc:201 rc_option_editor.cc:1454
+#: rc_option_editor.cc:1456 rc_option_editor.cc:1458 rc_option_editor.cc:1474
+#: rc_option_editor.cc:1476 rc_option_editor.cc:1484 rc_option_editor.cc:1486
+#: rc_option_editor.cc:1504 rc_option_editor.cc:1517 rc_option_editor.cc:1519
+#: rc_option_editor.cc:1521 rc_option_editor.cc:1552 rc_option_editor.cc:1554
+#: rc_option_editor.cc:1556 rc_option_editor.cc:1564 rc_option_editor.cc:1572
+#: rc_option_editor.cc:1580
msgid "Audio"
msgstr "Audio"
#: add_route_dialog.cc:216 add_route_dialog.cc:227 add_route_dialog.cc:299
-#: editor_actions.cc:105 missing_file_dialog.cc:55 rc_option_editor.cc:1707
-#: rc_option_editor.cc:1715 rc_option_editor.cc:1723 rc_option_editor.cc:1732
-#: rc_option_editor.cc:1740 rc_option_editor.cc:1748 rc_option_editor.cc:1756
-#: rc_option_editor.cc:1765 rc_option_editor.cc:1774 rc_option_editor.cc:1783
-#: rc_option_editor.cc:1791 rc_option_editor.cc:1799
+#: editor_actions.cc:105 engine_dialog.cc:202 missing_file_dialog.cc:55
+#: rc_option_editor.cc:1703 rc_option_editor.cc:1711 rc_option_editor.cc:1719
+#: rc_option_editor.cc:1728 rc_option_editor.cc:1736 rc_option_editor.cc:1744
+#: rc_option_editor.cc:1752 rc_option_editor.cc:1761 rc_option_editor.cc:1770
+#: rc_option_editor.cc:1779 rc_option_editor.cc:1787 rc_option_editor.cc:1795
msgid "MIDI"
msgstr "MIDI"
@@ -626,7 +627,7 @@ msgstr "Normalisieren"
msgid "FFT analysis window"
msgstr "FFT-Analysefenster"
-#: analysis_window.cc:60 editor.cc:1856
+#: analysis_window.cc:60 editor.cc:1857
msgid "Spectral Analysis"
msgstr "FFT-Analyse"
@@ -650,50 +651,54 @@ msgstr ""
"Schaltfläche kann den Status des nichtexistenten Kontrollzieles nicht "
"verfolgen\n"
-#: ardour_ui.cc:180
+#: ardour_ui.cc:179
msgid "audition"
msgstr "Vorhören"
-#: ardour_ui.cc:181
+#: ardour_ui.cc:180
msgid "solo"
msgstr "Solo"
-#: ardour_ui.cc:182
+#: ardour_ui.cc:181
msgid "feedback"
msgstr "Feedback"
-#: ardour_ui.cc:187 speaker_dialog.cc:36
+#: ardour_ui.cc:186 speaker_dialog.cc:36
msgid "Speaker Configuration"
msgstr "Lautsprechereinstellung"
-#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64
+#: ardour_ui.cc:187 theme_manager.cc:56 theme_manager.cc:64
msgid "Theme Manager"
msgstr "Thema"
-#: ardour_ui.cc:189 keyeditor.cc:53
+#: ardour_ui.cc:188 keyeditor.cc:53
msgid "Key Bindings"
msgstr "Tastenkombinationen"
-#: ardour_ui.cc:190
+#: ardour_ui.cc:189
msgid "Preferences"
msgstr "Globale Einstellungen"
-#: ardour_ui.cc:191 ardour_ui.cc:196
+#: ardour_ui.cc:190 ardour_ui.cc:196
msgid "Add Tracks/Busses"
msgstr "Spuren/Busse hinzufügen"
-#: ardour_ui.cc:192
+#: ardour_ui.cc:191
msgid "About"
msgstr "Ãœber..."
-#: ardour_ui.cc:193 location_ui.cc:1146
+#: ardour_ui.cc:192 location_ui.cc:1146
msgid "Locations"
msgstr "Positionen"
-#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606
+#: ardour_ui.cc:193 route_params_ui.cc:58 route_params_ui.cc:606
msgid "Tracks and Busses"
msgstr "Spuren/Busse"
+#: ardour_ui.cc:194 engine_dialog.cc:61
+msgid "Audio/MIDI Setup"
+msgstr "Audio/MIDI Einstellungen"
+
#: ardour_ui.cc:195
msgid "Properties"
msgstr "Projekteinstellungen"
@@ -718,15 +723,33 @@ msgstr "MIDI-Verbindungen"
msgid "Errors"
msgstr "Fehlermeldungen"
-#: ardour_ui.cc:388
-msgid "Starting audio engine"
-msgstr "Starte Audio-Engine"
+#: ardour_ui.cc:438
+msgid ""
+"The audio backend was shutdown because:\n"
+"\n"
+"%1"
+msgstr ""
+"Das Audiobackend wurde aus folgendem Grund beendet:\n"
+"\n"
+"%1"
-#: ardour_ui.cc:758 startup.cc:638
+#: ardour_ui.cc:440
+msgid ""
+"`The audio backend has either been shutdown or it\n"
+"disconnected %1 because %1\n"
+"was not fast enough. Try to restart\n"
+"the audio backend and save the session."
+msgstr ""
+"Das Audiobackend wurde entweder beendet oder von\n"
+"%1 getrennt, weil %1 nicht schnell genug\n"
+"war. Sie sollten versuchen, das Audiobackend \n"
+"neu zu starten und das Projekt zu speichern."
+
+#: ardour_ui.cc:818 startup.cc:378
msgid "%1 is ready for use"
msgstr "%1 ist bereit"
-#: ardour_ui.cc:806
+#: ardour_ui.cc:866
msgid ""
"WARNING: Your system has a limit for maximum amount of locked memory. This "
"might cause %1 to run out of memory before your system runs out of memory. \n"
@@ -741,23 +764,23 @@ msgstr ""
"Sie können die Speicherbegrenzung mit 'ulimit -l' einsehen und normalerweise "
"in %2 verändern."
-#: ardour_ui.cc:823
+#: ardour_ui.cc:883
msgid "Do not show this window again"
msgstr "Diese Meldung nicht erneut anzeigen"
-#: ardour_ui.cc:865
+#: ardour_ui.cc:925
msgid "Don't quit"
msgstr "Abbrechen"
-#: ardour_ui.cc:866
+#: ardour_ui.cc:926
msgid "Just quit"
msgstr "Beenden ohne zu speichern"
-#: ardour_ui.cc:867
+#: ardour_ui.cc:927
msgid "Save and quit"
msgstr "Speichern und beenden"
-#: ardour_ui.cc:877
+#: ardour_ui.cc:937
msgid ""
"%1 was unable to save your session.\n"
"\n"
@@ -771,15 +794,15 @@ msgstr ""
"\n"
"\"Trotzdem beenden\"."
-#: ardour_ui.cc:908
+#: ardour_ui.cc:968
msgid "Please wait while %1 cleans up..."
msgstr "Bitte warten Sie, während %1 aufräumt."
-#: ardour_ui.cc:925
+#: ardour_ui.cc:986
msgid "Unsaved Session"
msgstr "Nicht gespeichertes Projekt"
-#: ardour_ui.cc:946
+#: ardour_ui.cc:1007
msgid ""
"The session \"%1\"\n"
"has not been saved.\n"
@@ -797,7 +820,7 @@ msgstr ""
"\n"
"Wie wollen Sie vorgehen?"
-#: ardour_ui.cc:949
+#: ardour_ui.cc:1010
msgid ""
"The snapshot \"%1\"\n"
"has not been saved.\n"
@@ -815,74 +838,75 @@ msgstr ""
"\n"
"Wie wollen Sie vorgehen?"
-#: ardour_ui.cc:963
+#: ardour_ui.cc:1024
msgid "Prompter"
msgstr "Frage"
-#: ardour_ui.cc:1049
-msgid "disconnected"
-msgstr "getrennt"
+#: ardour_ui.cc:1110 ardour_ui.cc:1118
+#, c-format
+msgid "Audio: <span foreground=\"red\">none</span>"
+msgstr "Audio: <span foreground=\"red\">Kein</span>"
-#: ardour_ui.cc:1056
+#: ardour_ui.cc:1122
#, c-format
-msgid "JACK: <span foreground=\"green\">%.1f kHz / %4.1f ms</span>"
-msgstr "JACK: <span foreground=\"green\">%.1f kHz / %4.1f ms</span>"
+msgid "Audio: <span foreground=\"green\">%.1f kHz / %4.1f ms</span>"
+msgstr "Audio: <span foreground=\"green\">%.1f kHz / %4.1f ms</span>"
-#: ardour_ui.cc:1060
+#: ardour_ui.cc:1126
#, c-format
-msgid "JACK: <span foreground=\"green\">%<PRId64> kHz / %4.1f ms</span>"
-msgstr "JACK: <span foreground=\"green\">%<PRId64> kHz / %4.1f ms</span>"
+msgid "Audio: <span foreground=\"green\">%<PRId64> kHz / %4.1f ms</span>"
+msgstr "Audio: <span foreground=\"green\">%<PRId64> kHz / %4.1f ms</span>"
-#: ardour_ui.cc:1078 export_video_dialog.cc:68
+#: ardour_ui.cc:1144 export_video_dialog.cc:68
msgid "File:"
msgstr "Datei:"
-#: ardour_ui.cc:1082
+#: ardour_ui.cc:1148
msgid "BWF"
msgstr "BWF"
-#: ardour_ui.cc:1085
+#: ardour_ui.cc:1151
msgid "WAV"
msgstr "WAV"
-#: ardour_ui.cc:1088
+#: ardour_ui.cc:1154
msgid "WAV64"
msgstr "WAV64"
-#: ardour_ui.cc:1091 session_option_editor.cc:197
+#: ardour_ui.cc:1157 session_option_editor.cc:197
msgid "CAF"
msgstr "CAF"
-#: ardour_ui.cc:1094
+#: ardour_ui.cc:1160
msgid "AIFF"
msgstr "AIFF"
-#: ardour_ui.cc:1097
+#: ardour_ui.cc:1163
msgid "iXML"
msgstr "iXML"
-#: ardour_ui.cc:1100
+#: ardour_ui.cc:1166
msgid "RF64"
msgstr "RF64"
-#: ardour_ui.cc:1108
+#: ardour_ui.cc:1174
msgid "32-float"
msgstr "32-float"
-#: ardour_ui.cc:1111
+#: ardour_ui.cc:1177
msgid "24-int"
msgstr "24-int"
-#: ardour_ui.cc:1114
+#: ardour_ui.cc:1180
msgid "16-int"
msgstr "16-int"
-#: ardour_ui.cc:1133
+#: ardour_ui.cc:1199
#, c-format
msgid "DSP: <span foreground=\"%s\">%5.1f%%</span>"
msgstr "DSP: <span foreground=\"%s\">%5.1f%%</span>"
-#: ardour_ui.cc:1152
+#: ardour_ui.cc:1218
#, c-format
msgid ""
"Buffers: <span foreground=\"green\">p:</span><span foreground=\"%s\">"
@@ -893,61 +917,62 @@ msgstr ""
"%%</span> <span foreground=\"green\">c:</span><span foreground=\"%s\">"
"%<PRIu32>%%</span>"
-#: ardour_ui.cc:1188
+#: ardour_ui.cc:1259
msgid "Disk: <span foreground=\"green\">Unknown</span>"
msgstr "Disk: <span foreground=\"green\">Unbekannt</span>"
-#: ardour_ui.cc:1190
+#: ardour_ui.cc:1261
msgid "Disk: <span foreground=\"green\">24hrs+</span>"
msgstr "Disk: <span foreground=\"green\">24h+</span>"
-#: ardour_ui.cc:1208
+#: ardour_ui.cc:1279
msgid "Disk: <span foreground=\"green\">&gt;24 hrs</span>"
msgstr "Disk: <span foreground=\"green\">&gt;24 h</span>"
-#: ardour_ui.cc:1219
+#: ardour_ui.cc:1290
#, c-format
msgid "Disk: <span foreground=\"%s\">%02dh:%02dm:%02ds</span>"
msgstr "Disk: <span foreground=\"%s\">%02dh:%02dm:%02ds</span>"
-#: ardour_ui.cc:1245
+#: ardour_ui.cc:1316
#, c-format
msgid "Timecode|TC: <span foreground=\"%s\">%s</span>"
msgstr "Timecode|TC: <span foreground=\"%s\">%s</span>"
-#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054
+#: ardour_ui.cc:1433 ardour_ui.cc:1442 session_dialog.cc:301
+#: session_dialog.cc:306
msgid "Recent Sessions"
msgstr "Zuletzt verwendete Projekte"
-#: ardour_ui.cc:1451
+#: ardour_ui.cc:1521
msgid ""
-"%1 is not connected to JACK\n"
+"%1 is not connected to any audio backend.\n"
"You cannot open or close sessions in this condition"
msgstr ""
-"%1 ist derzeit nicht mit JACK verbunden.\n"
-"Dadurch können keine Projekte geöffnet oder geschlossen werden."
+"%1 ist derzeit mit keinem Audiobackend verbunden.\n"
+"Daher können keine Projekte geöffnet oder geschlossen werden."
-#: ardour_ui.cc:1478
+#: ardour_ui.cc:1545
msgid "Open Session"
msgstr "Projekt öffnen"
-#: ardour_ui.cc:1503 session_import_dialog.cc:169
-#: session_metadata_dialog.cc:729 startup.cc:1083
+#: ardour_ui.cc:1570 session_dialog.cc:332 session_import_dialog.cc:169
+#: session_metadata_dialog.cc:729
msgid "%1 sessions"
msgstr "%1 Projekte"
-#: ardour_ui.cc:1540
+#: ardour_ui.cc:1607
msgid "You cannot add a track without a session already loaded."
msgstr ""
"Sie können erst Spuren oder Busse hinzufügen, wenn ein Projekt geladen wurde."
-#: ardour_ui.cc:1548
+#: ardour_ui.cc:1615
msgid "could not create %1 new mixed track"
msgid_plural "could not create %1 new mixed tracks"
msgstr[0] "konnte %1 neue Audio+MIDI-Spur nicht erstellen"
msgstr[1] "konnte %1 neue Audio+MIDI-Spuren nicht erstellen"
-#: ardour_ui.cc:1554 ardour_ui.cc:1615
+#: ardour_ui.cc:1621 ardour_ui.cc:1682
msgid ""
"There are insufficient JACK ports available\n"
"to create a new track or bus.\n"
@@ -960,24 +985,24 @@ msgstr ""
"%1 und starten Sie JACK mit einer größeren\n"
"Anzahl Ports neu."
-#: ardour_ui.cc:1589
+#: ardour_ui.cc:1656
msgid "You cannot add a track or bus without a session already loaded."
msgstr ""
"Sie können erst Spuren oder Busse hinzufügen, wenn ein Projekt geladen wurde."
-#: ardour_ui.cc:1598
+#: ardour_ui.cc:1665
msgid "could not create %1 new audio track"
msgid_plural "could not create %1 new audio tracks"
msgstr[0] "konnte %1 neue Audiospur nicht erstellen."
msgstr[1] "konnte %1 neue Audiospuren nicht erstellen."
-#: ardour_ui.cc:1607
+#: ardour_ui.cc:1674
msgid "could not create %1 new audio bus"
msgid_plural "could not create %1 new audio busses"
msgstr[0] "konnte %1 neuen Audiobus nicht erstellen"
msgstr[1] "konnte %1 neue Audiobusse nicht erstellen"
-#: ardour_ui.cc:1724
+#: ardour_ui.cc:1798
msgid ""
"Please create one or more tracks before trying to record.\n"
"You can do this with the \"Add Track or Bus\" option in the Session menu."
@@ -986,41 +1011,15 @@ msgstr ""
"eine oder mehrere Spur hinzu. Die geht über \"Spur/Bus hinzufügen\"\n"
"im Menüpunkt Projekt."
-#: ardour_ui.cc:2114
-msgid ""
-"The audio backend (JACK) was shutdown because:\n"
-"\n"
-"%1"
-msgstr ""
-"Der Audioserver (JACK) wurde aus folgendem Grund beendet:\n"
-"\n"
-"%1"
-
-#: ardour_ui.cc:2116
-msgid ""
-"JACK has either been shutdown or it\n"
-"disconnected %1 because %1\n"
-"was not fast enough. Try to restart\n"
-"JACK, reconnect and save the session."
-msgstr ""
-"JACK wurde entweder beendet oder von\n"
-"%1 getrennt, weil %1 nicht schnell genug\n"
-"war. Sie sollten versuchen, JACK neu zu starten,\n"
-"neu zu verbinden, und das Projekt zu speichern."
-
-#: ardour_ui.cc:2142
-msgid "Unable to start the session running"
-msgstr "Konnte das aktuelle Projekt nicht starten"
-
-#: ardour_ui.cc:2222
+#: ardour_ui.cc:2175
msgid "Take Snapshot"
msgstr "Schnappschuss machen"
-#: ardour_ui.cc:2223
+#: ardour_ui.cc:2176
msgid "Name of new snapshot"
msgstr "Name für neuen Schnappschuss"
-#: ardour_ui.cc:2247
+#: ardour_ui.cc:2200
msgid ""
"To ensure compatibility with various systems\n"
"snapshot names may not contain a '%1' character"
@@ -1028,29 +1027,29 @@ msgstr ""
"Um die Kompatibilität mit verschiedenen Systemen sicher zu stellen,\n"
"dürfen Namen von Schnappschüssen kein '%1'-Zeichen enthalten"
-#: ardour_ui.cc:2259
+#: ardour_ui.cc:2212
msgid "Confirm Snapshot Overwrite"
msgstr "Bestätige das Überschreiben des Schnappschusses"
-#: ardour_ui.cc:2260
+#: ardour_ui.cc:2213
msgid "A snapshot already exists with that name. Do you want to overwrite it?"
msgstr ""
"Ein Schnappschuss mit diesem Namen existiert bereits. Wollen Sie ihn "
"überschreiben?"
-#: ardour_ui.cc:2263 utils_videotl.cc:67
+#: ardour_ui.cc:2216 utils_videotl.cc:67
msgid "Overwrite"
msgstr "Ãœberschreiben"
-#: ardour_ui.cc:2297
+#: ardour_ui.cc:2250
msgid "Rename Session"
msgstr "Projekt umbenennen"
-#: ardour_ui.cc:2298
+#: ardour_ui.cc:2251
msgid "New session name"
msgstr "Neuer Projektname"
-#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737
+#: ardour_ui.cc:2265 ardour_ui.cc:2650 ardour_ui.cc:2686
msgid ""
"To ensure compatibility with various systems\n"
"session names may not contain a '%1' character"
@@ -1058,14 +1057,14 @@ msgstr ""
"Um die Kompatibilität mit verschiedenen Systemen sicher zu stellen,\n"
"dürfen Projektnamen kein '%1'-Zeichen enthalten"
-#: ardour_ui.cc:2320
+#: ardour_ui.cc:2273
msgid ""
"That name is already in use by another directory/folder. Please try again."
msgstr ""
"Dieser Name wird schon von einem anderen Verzeichnis/Ordner benutzt. Bitte "
"versuchen Sie einen anderen Namen."
-#: ardour_ui.cc:2329
+#: ardour_ui.cc:2282
msgid ""
"Renaming this session failed.\n"
"Things could be seriously messed up at this point"
@@ -1073,19 +1072,19 @@ msgstr ""
"Das Umbenennen des Projekts ist fehlgeschlagen.\n"
"Dies könnte auf schwerwiegende Probleme hinweisen."
-#: ardour_ui.cc:2440
+#: ardour_ui.cc:2393
msgid "Save Template"
msgstr "Als Vorlage Speichern"
-#: ardour_ui.cc:2441
+#: ardour_ui.cc:2394
msgid "Name for template:"
msgstr "Name für Vorlage"
-#: ardour_ui.cc:2442
+#: ardour_ui.cc:2395
msgid "-template"
msgstr "-Vorlage"
-#: ardour_ui.cc:2480
+#: ardour_ui.cc:2433
msgid ""
"This session\n"
"%1\n"
@@ -1095,52 +1094,48 @@ msgstr ""
"%1\n"
"existiert bereits. Wollen Sie sie öffnen?"
-#: ardour_ui.cc:2490
+#: ardour_ui.cc:2443
msgid "Open Existing Session"
msgstr "Vorhandenes Projekt öffnen"
-#: ardour_ui.cc:2728
+#: ardour_ui.cc:2677
msgid "There is no existing session at \"%1\""
msgstr "Es gibt kein Projekt in: \"%1\""
-#: ardour_ui.cc:2815
+#: ardour_ui.cc:2764
msgid "Please wait while %1 loads your session"
msgstr "Bitte warten Sie, während %1 das Projekt lädt"
-#: ardour_ui.cc:2830
+#: ardour_ui.cc:2779
msgid "Port Registration Error"
msgstr "Fehler bei der Registrierung von Ports"
-#: ardour_ui.cc:2831
+#: ardour_ui.cc:2780
msgid "Click the Close button to try again."
msgstr "Klicken Sie auf Schließen, um es erneut zu versuchen."
-#: ardour_ui.cc:2852
+#: ardour_ui.cc:2801
msgid "Session \"%1 (snapshot %2)\" did not load successfully"
msgstr "Projekt \"%1 (Schnappschuss %2)\" konnte nicht geladen werden."
-#: ardour_ui.cc:2858
+#: ardour_ui.cc:2808
msgid "Loading Error"
msgstr "Fehler beim Laden"
-#: ardour_ui.cc:2859
-msgid "Click the Refresh button to try again."
-msgstr "Klicken Sie auf Aktualisieren, um es erneut zu versuchen."
-
-#: ardour_ui.cc:2941
+#: ardour_ui.cc:2875
msgid "Could not create session in \"%1\""
msgstr "Konnte kein Projekt in \"%1\" anlegen"
-#: ardour_ui.cc:3041
+#: ardour_ui.cc:2975
msgid "No files were ready for clean-up"
msgstr "Keine Audiodateien zum Aufräumen vorhanden"
-#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195
+#: ardour_ui.cc:2979 ardour_ui.cc:2989 ardour_ui.cc:3122 ardour_ui.cc:3129
#: ardour_ui_ed.cc:104
msgid "Clean-up"
msgstr "Aufräumen"
-#: ardour_ui.cc:3046
+#: ardour_ui.cc:2980
msgid ""
"If this seems suprising, \n"
"check for any existing snapshots.\n"
@@ -1152,19 +1147,19 @@ msgstr ""
"sind sie wahrscheinlich noch in einem\n"
"älteren Schnappschuss als Region eingebunden."
-#: ardour_ui.cc:3105
+#: ardour_ui.cc:3039
msgid "kilo"
msgstr "kilo"
-#: ardour_ui.cc:3108
+#: ardour_ui.cc:3042
msgid "mega"
msgstr "mega"
-#: ardour_ui.cc:3111
+#: ardour_ui.cc:3045
msgid "giga"
msgstr "giga"
-#: ardour_ui.cc:3116
+#: ardour_ui.cc:3050
msgid ""
"The following file was deleted from %2,\n"
"releasing %3 %4bytes of disk space"
@@ -1178,7 +1173,7 @@ msgstr[1] ""
"Die folgenden %1 Dateien wurden von %2\n"
"gelöscht und gaben %3 %4bytes Speicherplatz frei"
-#: ardour_ui.cc:3123
+#: ardour_ui.cc:3057
msgid ""
"The following file was not in use and \n"
"has been moved to: %2\n"
@@ -1216,11 +1211,11 @@ msgstr[1] ""
"\n"
"%3 %4bytes Speicherplatz freigegeben werden.\n"
-#: ardour_ui.cc:3183
+#: ardour_ui.cc:3117
msgid "Are you sure you want to clean-up?"
msgstr "Wollen Sie wirklich aufräumen?"
-#: ardour_ui.cc:3190
+#: ardour_ui.cc:3124
msgid ""
"Clean-up is a destructive operation.\n"
"ALL undo/redo information will be lost if you clean-up.\n"
@@ -1232,42 +1227,42 @@ msgstr ""
"Nach dem Aufräumen werden alle nicht benötigten Audiodateien in den \"dead "
"sounds\" Ordner verschoben."
-#: ardour_ui.cc:3198
+#: ardour_ui.cc:3132
msgid "CleanupDialog"
msgstr "Aufräumdialog"
-#: ardour_ui.cc:3228
+#: ardour_ui.cc:3162
msgid "Cleaned Files"
msgstr "Aufgeräumte Dateien"
-#: ardour_ui.cc:3245
+#: ardour_ui.cc:3179
msgid "deleted file"
msgstr "gelöschte Datei"
-#: ardour_ui.cc:3337
+#: ardour_ui.cc:3271
msgid ""
"Video-Server was not launched by Ardour. The request to stop it is ignored."
msgstr ""
"Der Video-Server wurde nicht von Ardour gestartet, der Befehl ihn anzuhalten "
"wird ignoriert."
-#: ardour_ui.cc:3341
+#: ardour_ui.cc:3275
msgid "Stop Video-Server"
msgstr "Video-Server anhalten"
-#: ardour_ui.cc:3342
+#: ardour_ui.cc:3276
msgid "Do you really want to stop the Video Server?"
msgstr "Wollen Sie den Video-Server wirklich anhalten?"
-#: ardour_ui.cc:3345
+#: ardour_ui.cc:3279
msgid "Yes, Stop It"
msgstr "Ja, anhalten."
-#: ardour_ui.cc:3371
+#: ardour_ui.cc:3305
msgid "The Video Server is already started."
msgstr "Der Video-Server läuft bereits"
-#: ardour_ui.cc:3373
+#: ardour_ui.cc:3307
msgid ""
"An external Video Server is configured and can be reached. Not starting a "
"new instance."
@@ -1275,7 +1270,7 @@ msgstr ""
"Ein externer Video-Server wurde konfiguriert, ist aber nicht erreichbar. Es "
"wird keine neue Instanz gestartet."
-#: ardour_ui.cc:3381 ardour_ui.cc:3471
+#: ardour_ui.cc:3315 ardour_ui.cc:3405
msgid ""
"Could not connect to the Video Server. Start it or configure its access URL "
"in Edit -> Preferences."
@@ -1284,36 +1279,36 @@ msgstr ""
"ihn vorher starten oder die Adresse in Bearbeiten -> Globale Einstellungen "
"anpassen"
-#: ardour_ui.cc:3405
+#: ardour_ui.cc:3339
msgid "Specified docroot is not an existing directory."
msgstr "Das eingestellte Dokumentenverzeichnis existiert nicht."
-#: ardour_ui.cc:3410
+#: ardour_ui.cc:3344
msgid "Given Video Server is not an executable file."
msgstr "Der eingestellte Video-Server ist keine ausführbare Datei."
-#: ardour_ui.cc:3443
+#: ardour_ui.cc:3377
msgid "Cannot launch the video-server"
msgstr "Kann den Videoserver nicht starten "
-#: ardour_ui.cc:3452
+#: ardour_ui.cc:3386
msgid "Video-server was started but does not respond to requests..."
msgstr "Viideoserver wurde gestartet, reagiert aber nicht auf Anfragen..."
-#: ardour_ui.cc:3497 editor_audio_import.cc:632
+#: ardour_ui.cc:3431 editor_audio_import.cc:632
msgid "could not open %1"
msgstr "Konnte \"%s\" nicht öffnen."
-#: ardour_ui.cc:3501
+#: ardour_ui.cc:3435
msgid "no video-file selected"
msgstr "Es wurde keine Video-Datei ausgewählt."
-#: ardour_ui.cc:3673
+#: ardour_ui.cc:3607
msgid "Recording was stopped because your system could not keep up."
msgstr ""
"Die Aufnahme wurde gestoppt, da Ihr System nicht schnell genug folgen konnte."
-#: ardour_ui.cc:3702
+#: ardour_ui.cc:3636
msgid ""
"The disk system on your computer\n"
"was not able to keep up with %1.\n"
@@ -1327,7 +1322,7 @@ msgstr ""
"Die Daten konnten nicht schnell genug geschrieben\n"
"werden, um die Aufnahme fortzuführen.\n"
-#: ardour_ui.cc:3721
+#: ardour_ui.cc:3655
msgid ""
"The disk system on your computer\n"
"was not able to keep up with %1.\n"
@@ -1341,11 +1336,11 @@ msgstr ""
"Die Daten konnten nicht schnell genug gelesen\n"
"werden, um die Wiedergabe aufrechtzuerhalten.\n"
-#: ardour_ui.cc:3761
+#: ardour_ui.cc:3695
msgid "Crash Recovery"
msgstr "Absturz-Wiederherstellung"
-#: ardour_ui.cc:3762
+#: ardour_ui.cc:3696
msgid ""
"This session appears to have been in the\n"
"middle of recording when %1 or\n"
@@ -1363,19 +1358,19 @@ msgstr ""
"für Sie wiederherstellen oder sie verwerfen.\n"
"Bitte entscheiden Sie, wie Sie vorgehen möchten.\n"
-#: ardour_ui.cc:3774
+#: ardour_ui.cc:3708
msgid "Ignore crash data"
msgstr "Daten verwerfen"
-#: ardour_ui.cc:3775
+#: ardour_ui.cc:3709
msgid "Recover from crash"
msgstr "Daten wiederherstellen"
-#: ardour_ui.cc:3795
+#: ardour_ui.cc:3729
msgid "Sample Rate Mismatch"
msgstr "Samplerate passt nicht"
-#: ardour_ui.cc:3796
+#: ardour_ui.cc:3730
msgid ""
"This session was created with a sample rate of %1 Hz, but\n"
"%2 is currently running at %3 Hz. If you load this session,\n"
@@ -1386,23 +1381,23 @@ msgstr ""
"%2 läuft derzeit mit %3 Hz. Wenn Sie dieses Projekt laden, \n"
"wird Ihr Audiomaterial mit der falschen Samplerate abgespielt.\n"
-#: ardour_ui.cc:3805
+#: ardour_ui.cc:3739
msgid "Do not load session"
msgstr "Projekt nicht laden"
-#: ardour_ui.cc:3806
+#: ardour_ui.cc:3740
msgid "Load session anyway"
msgstr "Projekt trotzdem laden"
-#: ardour_ui.cc:3829
-msgid "Could not disconnect from JACK"
-msgstr "Konnte Verbindung mit JACK nicht trennen"
+#: ardour_ui.cc:3766
+msgid "Could not disconnect from Audio/MIDI engine"
+msgstr "Konnte Verbindung mit der Audio/MIDI Engine nicht trennen"
-#: ardour_ui.cc:3842
-msgid "Could not reconnect to JACK"
-msgstr "Konnte nicht erneut zu JACK verbinden"
+#: ardour_ui.cc:3781
+msgid "Could not reconnect to the Audio/MIDI engine"
+msgstr "Konnte nicht zur Audio/MIDI Engine wiederverbinden"
-#: ardour_ui.cc:4116
+#: ardour_ui.cc:4056
msgid ""
"%4This is a session from an older version of %3%5\n"
"\n"
@@ -1562,20 +1557,20 @@ msgstr "[WARNUNG]:"
msgid "[INFO]: "
msgstr "[INFO]: "
-#: ardour_ui2.cc:247 ardour_ui_ed.cc:377
+#: ardour_ui2.cc:247 ardour_ui_ed.cc:344
msgid "Auto Return"
msgstr "Auto Return"
-#: ardour_ui2.cc:249 ardour_ui_ed.cc:380
+#: ardour_ui2.cc:249 ardour_ui_ed.cc:347
msgid "Follow Edits"
msgstr "Folge Bearbeitungen"
-#: ardour_ui2.cc:628 rc_option_editor.cc:1004 rc_option_editor.cc:1022
-#: rc_option_editor.cc:1025 rc_option_editor.cc:1027 rc_option_editor.cc:1029
-#: rc_option_editor.cc:1037 rc_option_editor.cc:1045 rc_option_editor.cc:1047
-#: rc_option_editor.cc:1055 rc_option_editor.cc:1062 rc_option_editor.cc:1071
-#: rc_option_editor.cc:1073 rc_option_editor.cc:1075 rc_option_editor.cc:1083
-#: rc_option_editor.cc:1085 rc_option_editor.cc:1094
+#: ardour_ui2.cc:628 rc_option_editor.cc:1002 rc_option_editor.cc:1020
+#: rc_option_editor.cc:1023 rc_option_editor.cc:1025 rc_option_editor.cc:1027
+#: rc_option_editor.cc:1035 rc_option_editor.cc:1043 rc_option_editor.cc:1045
+#: rc_option_editor.cc:1053 rc_option_editor.cc:1060 rc_option_editor.cc:1069
+#: rc_option_editor.cc:1071 rc_option_editor.cc:1073 rc_option_editor.cc:1081
+#: rc_option_editor.cc:1083 rc_option_editor.cc:1092
#: session_option_editor.cc:234 session_option_editor.cc:236
#: session_option_editor.cc:257 session_option_editor.cc:259
#: session_option_editor.cc:261 session_option_editor.cc:268
@@ -1594,19 +1589,19 @@ msgstr "Mixer laden"
msgid "Reload Session History"
msgstr "Projekt-Aktionsverlauf laden"
-#: ardour_ui_dialogs.cc:242
+#: ardour_ui_dialogs.cc:238
msgid "Don't close"
msgstr "Abbrechen"
-#: ardour_ui_dialogs.cc:243
+#: ardour_ui_dialogs.cc:239
msgid "Just close"
msgstr "Ohne speichern schließen"
-#: ardour_ui_dialogs.cc:244
+#: ardour_ui_dialogs.cc:240
msgid "Save and close"
msgstr "Speichern und schließen"
-#: ardour_ui_dialogs.cc:340
+#: ardour_ui_dialogs.cc:339
msgid "This screen is not tall enough to display the mixer window"
msgstr ""
"Dieser Bildschirm ist nicht hoch genug, um das Mixerfenster darzustellen"
@@ -1616,11 +1611,11 @@ msgid "Session"
msgstr "Projekt"
#: ardour_ui_ed.cc:106 editor_actions.cc:134 editor_regions.cc:115
-#: port_group.cc:457 session_option_editor.cc:82 session_option_editor.cc:89
+#: port_group.cc:458 session_option_editor.cc:82 session_option_editor.cc:89
msgid "Sync"
msgstr "Sync"
-#: ardour_ui_ed.cc:107 engine_dialog.cc:369
+#: ardour_ui_ed.cc:107
msgid "Options"
msgstr "Optionen"
@@ -1648,15 +1643,15 @@ msgstr "Dateiformat"
msgid "Sample Format"
msgstr "Sampleformat"
-#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839
+#: ardour_ui_ed.cc:114 rc_option_editor.cc:1822 rc_option_editor.cc:1835
msgid "Control Surfaces"
msgstr "Eingabegeräte / Controller"
-#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558
+#: ardour_ui_ed.cc:115 rc_option_editor.cc:1554
msgid "Plugins"
msgstr "Plugins"
-#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902
+#: ardour_ui_ed.cc:116 rc_option_editor.cc:1898
msgid "Metering"
msgstr "Pegelanzeige"
@@ -1754,170 +1749,153 @@ msgstr "Nicht benutzte Dateien entfernen..."
msgid "Flush Wastebasket"
msgstr "Müll leeren"
-#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472
-msgid "JACK"
-msgstr "JACK"
-
-#: ardour_ui_ed.cc:190 route_params_ui.cc:105
-msgid "Latency"
-msgstr "Latenz"
-
-#: ardour_ui_ed.cc:192
-msgid "Reconnect"
-msgstr "Verbinde neu"
-
-#: ardour_ui_ed.cc:195 global_port_matrix.cc:207 io_selector.cc:210
-#: mixer_strip.cc:719 mixer_strip.cc:845
-msgid "Disconnect"
-msgstr "Trenne"
-
-#: ardour_ui_ed.cc:222
+#: ardour_ui_ed.cc:189
msgid "Quit"
msgstr "Beenden"
-#: ardour_ui_ed.cc:226
+#: ardour_ui_ed.cc:193
msgid "Maximise Editor Space"
msgstr "Editor maximieren"
-#: ardour_ui_ed.cc:227
+#: ardour_ui_ed.cc:194
msgid "Show Toolbars"
msgstr "Zeige Werkzeugleisten"
-#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871
+#: ardour_ui_ed.cc:197 mixer_ui.cc:1865 mixer_ui.cc:1871
msgid "Window|Mixer"
msgstr "Mixer"
-#: ardour_ui_ed.cc:231
+#: ardour_ui_ed.cc:198
msgid "Toggle Editor+Mixer"
msgstr "Editor+Mixer umschalten"
-#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236
+#: ardour_ui_ed.cc:199 meterbridge.cc:230 meterbridge.cc:236
msgid "Window|Meterbridge"
msgstr "Meterbridge"
-#: ardour_ui_ed.cc:234 midi_tracer.cc:39
+#: ardour_ui_ed.cc:201 midi_tracer.cc:42
msgid "MIDI Tracer"
msgstr "Midisignale verfolgen"
-#: ardour_ui_ed.cc:236
+#: ardour_ui_ed.cc:203
msgid "Chat"
msgstr "Chat"
-#: ardour_ui_ed.cc:238
+#: ardour_ui_ed.cc:205
msgid "Help|Manual"
msgstr "Handbuch"
-#: ardour_ui_ed.cc:239
+#: ardour_ui_ed.cc:206
msgid "Reference"
msgstr "Referenz"
-#: ardour_ui_ed.cc:241 plugin_ui.cc:418
+#: ardour_ui_ed.cc:208 plugin_ui.cc:416
msgid "Save"
msgstr "Speichern"
-#: ardour_ui_ed.cc:249 rc_option_editor.cc:1114 rc_option_editor.cc:1125
-#: rc_option_editor.cc:1134 rc_option_editor.cc:1147 rc_option_editor.cc:1160
-#: rc_option_editor.cc:1169 rc_option_editor.cc:1179 rc_option_editor.cc:1181
-#: rc_option_editor.cc:1191 rc_option_editor.cc:1207 rc_option_editor.cc:1220
-#: rc_option_editor.cc:1238 rc_option_editor.cc:1240 rc_option_editor.cc:1254
-#: rc_option_editor.cc:1257 rc_option_editor.cc:1259 rc_option_editor.cc:1276
-#: rc_option_editor.cc:1287
+#: ardour_ui_ed.cc:216 rc_option_editor.cc:1112 rc_option_editor.cc:1123
+#: rc_option_editor.cc:1132 rc_option_editor.cc:1145 rc_option_editor.cc:1158
+#: rc_option_editor.cc:1167 rc_option_editor.cc:1177 rc_option_editor.cc:1179
+#: rc_option_editor.cc:1189 rc_option_editor.cc:1205 rc_option_editor.cc:1218
+#: rc_option_editor.cc:1236 rc_option_editor.cc:1238 rc_option_editor.cc:1252
+#: rc_option_editor.cc:1255 rc_option_editor.cc:1257 rc_option_editor.cc:1274
+#: rc_option_editor.cc:1285
msgid "Transport"
msgstr "Transport"
-#: ardour_ui_ed.cc:255 engine_dialog.cc:85
+#: ardour_ui_ed.cc:222
msgid "Stop"
msgstr "Stopp"
-#: ardour_ui_ed.cc:258
+#: ardour_ui_ed.cc:225
msgid "Roll"
msgstr "Wiedergabe"
-#: ardour_ui_ed.cc:262
+#: ardour_ui_ed.cc:229
msgid "Start/Stop"
msgstr "Start/Stopp"
-#: ardour_ui_ed.cc:265
+#: ardour_ui_ed.cc:232
msgid "Start/Continue/Stop"
msgstr "Start/Stopp"
-#: ardour_ui_ed.cc:268
+#: ardour_ui_ed.cc:235
msgid "Stop and Forget Capture"
msgstr "Stopp + Aufnahme verwerfen"
-#: ardour_ui_ed.cc:278
+#: ardour_ui_ed.cc:245
msgid "Transition To Roll"
msgstr "Vorwärts (normal)"
-#: ardour_ui_ed.cc:282
+#: ardour_ui_ed.cc:249
msgid "Transition To Reverse"
msgstr "Rückwärts (normal)"
-#: ardour_ui_ed.cc:286
+#: ardour_ui_ed.cc:253
msgid "Play Loop Range"
msgstr "Schleife wiedergeben"
-#: ardour_ui_ed.cc:289
+#: ardour_ui_ed.cc:256
msgid "Play Selected Range"
msgstr "Gewählten Bereich wiedergeben"
-#: ardour_ui_ed.cc:292
+#: ardour_ui_ed.cc:259
msgid "Play Selection w/Preroll"
msgstr "Ausgewählten Bereich mit Vorlauf wiedergeben"
-#: ardour_ui_ed.cc:296
+#: ardour_ui_ed.cc:263
msgid "Enable Record"
msgstr "Aufnahme aktivieren"
-#: ardour_ui_ed.cc:299
+#: ardour_ui_ed.cc:266
msgid "Start Recording"
msgstr "Aufnahme starten"
-#: ardour_ui_ed.cc:303
+#: ardour_ui_ed.cc:270
msgid "Rewind"
msgstr "Rückwärts (beschleunigen)"
-#: ardour_ui_ed.cc:306
+#: ardour_ui_ed.cc:273
msgid "Rewind (Slow)"
msgstr "Rückwärts (langsam)"
-#: ardour_ui_ed.cc:309
+#: ardour_ui_ed.cc:276
msgid "Rewind (Fast)"
msgstr "Rückwärts (schnell)"
-#: ardour_ui_ed.cc:312 startup.cc:727
+#: ardour_ui_ed.cc:279
msgid "Forward"
msgstr "Vorwärts (beschleunigen)"
-#: ardour_ui_ed.cc:315
+#: ardour_ui_ed.cc:282
msgid "Forward (Slow)"
msgstr "Vorwärts (langsam)"
-#: ardour_ui_ed.cc:318
+#: ardour_ui_ed.cc:285
msgid "Forward (Fast)"
msgstr "Vorwärts (schnell)"
-#: ardour_ui_ed.cc:321
+#: ardour_ui_ed.cc:288
msgid "Goto Zero"
msgstr "Zum Nullpunkt springen"
-#: ardour_ui_ed.cc:324
+#: ardour_ui_ed.cc:291
msgid "Goto Start"
msgstr "Zum Anfang springen"
-#: ardour_ui_ed.cc:327
+#: ardour_ui_ed.cc:294
msgid "Goto End"
msgstr "Zum Ende springen"
-#: ardour_ui_ed.cc:330
+#: ardour_ui_ed.cc:297
msgid "Goto Wall Clock"
msgstr "Zur lokalen Uhrzeit springen"
-#: ardour_ui_ed.cc:334
+#: ardour_ui_ed.cc:301
msgid "Focus On Clock"
msgstr "Fokus auf Zeitanzeige setzen"
-#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 audio_clock.cc:2046 editor.cc:237
+#: ardour_ui_ed.cc:305 ardour_ui_ed.cc:314 audio_clock.cc:2046 editor.cc:237
#: editor_actions.cc:544 editor_actions.cc:553 export_timespan_selector.cc:88
#: session_option_editor.cc:41 session_option_editor.cc:61
#: session_option_editor.cc:80 session_option_editor.cc:96
@@ -1926,125 +1904,121 @@ msgstr "Fokus auf Zeitanzeige setzen"
msgid "Timecode"
msgstr "Timecode"
-#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542
+#: ardour_ui_ed.cc:307 ardour_ui_ed.cc:316 editor_actions.cc:542
msgid "Bars & Beats"
msgstr "Takte & Schläge"
-#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351
+#: ardour_ui_ed.cc:309 ardour_ui_ed.cc:318
msgid "Minutes & Seconds"
msgstr "Minuten & Sekunden"
-#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238
+#: ardour_ui_ed.cc:311 ardour_ui_ed.cc:320 audio_clock.cc:2050 editor.cc:238
#: editor_actions.cc:543
msgid "Samples"
msgstr "Samples"
-#: ardour_ui_ed.cc:356
+#: ardour_ui_ed.cc:323
msgid "Punch In"
msgstr "Punch In"
-#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137
+#: ardour_ui_ed.cc:324 mixer_strip.cc:1905 route_ui.cc:137
#: time_info_box.cc:113
msgid "In"
msgstr "In"
-#: ardour_ui_ed.cc:360
+#: ardour_ui_ed.cc:327
msgid "Punch Out"
msgstr "Punch Out"
-#: ardour_ui_ed.cc:361 time_info_box.cc:114
+#: ardour_ui_ed.cc:328 time_info_box.cc:114
msgid "Out"
msgstr "Out"
-#: ardour_ui_ed.cc:364
+#: ardour_ui_ed.cc:331
msgid "Punch In/Out"
msgstr "Punch In/Out"
-#: ardour_ui_ed.cc:365
+#: ardour_ui_ed.cc:332
msgid "In/Out"
msgstr "In/Out"
-#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071
+#: ardour_ui_ed.cc:335 rc_option_editor.cc:1069
msgid "Click"
msgstr "Klick"
-#: ardour_ui_ed.cc:371
+#: ardour_ui_ed.cc:338
msgid "Auto Input"
msgstr "Auto Input"
-#: ardour_ui_ed.cc:374
+#: ardour_ui_ed.cc:341
msgid "Auto Play"
msgstr "Auto Play"
-#: ardour_ui_ed.cc:385
+#: ardour_ui_ed.cc:352
msgid "Sync Startup to Video"
msgstr "Start mit Video synchronisieren"
-#: ardour_ui_ed.cc:387
+#: ardour_ui_ed.cc:354
msgid "Time Master"
msgstr "Time Master"
-#: ardour_ui_ed.cc:394
+#: ardour_ui_ed.cc:361
msgid "Toggle Record Enable Track %1"
msgstr "Aufnahme auf Spur %1 aktivieren"
-#: ardour_ui_ed.cc:401
+#: ardour_ui_ed.cc:368
msgid "Percentage"
msgstr "Prozent"
-#: ardour_ui_ed.cc:402 shuttle_control.cc:169
+#: ardour_ui_ed.cc:369 shuttle_control.cc:169
msgid "Semitones"
msgstr "Halbtöne"
-#: ardour_ui_ed.cc:406
+#: ardour_ui_ed.cc:373
msgid "Send MTC"
msgstr "MTC senden"
-#: ardour_ui_ed.cc:408
+#: ardour_ui_ed.cc:375
msgid "Send MMC"
msgstr "MMC senden"
-#: ardour_ui_ed.cc:410
+#: ardour_ui_ed.cc:377
msgid "Use MMC"
msgstr "Benutze MMC"
-#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710
+#: ardour_ui_ed.cc:379 rc_option_editor.cc:1706
msgid "Send MIDI Clock"
msgstr "MIDI Clock senden"
-#: ardour_ui_ed.cc:414
+#: ardour_ui_ed.cc:381
msgid "Send MIDI Feedback"
msgstr "MIDI Feedback senden"
-#: ardour_ui_ed.cc:420
+#: ardour_ui_ed.cc:387
msgid "Panic"
msgstr "Panic"
-#: ardour_ui_ed.cc:560
+#: ardour_ui_ed.cc:472
msgid "Wall Clock"
msgstr "Uhrzeit"
-#: ardour_ui_ed.cc:561
+#: ardour_ui_ed.cc:473
msgid "Disk Space"
msgstr "Speicherplatz"
-#: ardour_ui_ed.cc:562
+#: ardour_ui_ed.cc:474
msgid "DSP"
msgstr "DSP"
-#: ardour_ui_ed.cc:563
+#: ardour_ui_ed.cc:475
msgid "Buffers"
msgstr "Puffer"
-#: ardour_ui_ed.cc:564
-msgid "JACK Sampling Rate and Latency"
-msgstr "JACK Samplerate und Latenz"
-
-#: ardour_ui_ed.cc:565
+#: ardour_ui_ed.cc:477
msgid "Timecode Format"
msgstr "Timecode-Format"
-#: ardour_ui_ed.cc:566
+#: ardour_ui_ed.cc:478
msgid "File Format"
msgstr "Dateiformat"
@@ -2183,32 +2157,32 @@ msgid "hide track"
msgstr "Diese Spur verbergen"
#: automation_time_axis.cc:255 automation_time_axis.cc:307
-#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456
-#: generic_pluginui.cc:746 panner_ui.cc:150
+#: automation_time_axis.cc:496 gain_meter.cc:194 generic_pluginui.cc:454
+#: generic_pluginui.cc:744 panner_ui.cc:149
msgid "Automation|Manual"
msgstr "Manuell"
#: automation_time_axis.cc:257 automation_time_axis.cc:318
-#: automation_time_axis.cc:501 editor.cc:1933 editor.cc:2010
-#: editor_actions.cc:118 editor_actions.cc:1865 gain_meter.cc:198
-#: generic_pluginui.cc:459 generic_pluginui.cc:748 midi_time_axis.cc:1488
-#: midi_time_axis.cc:1491 midi_time_axis.cc:1494 panner_ui.cc:153
+#: automation_time_axis.cc:501 editor.cc:1934 editor.cc:2011
+#: editor_actions.cc:118 editor_actions.cc:1865 gain_meter.cc:197
+#: generic_pluginui.cc:457 generic_pluginui.cc:746 midi_time_axis.cc:1488
+#: midi_time_axis.cc:1491 midi_time_axis.cc:1494 panner_ui.cc:152
msgid "Play"
msgstr "Wiedergabe"
#: automation_time_axis.cc:259 automation_time_axis.cc:329
-#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462
-#: generic_pluginui.cc:750 panner_ui.cc:156
+#: automation_time_axis.cc:506 gain_meter.cc:200 generic_pluginui.cc:460
+#: generic_pluginui.cc:748 panner_ui.cc:155
msgid "Write"
msgstr "Schreiben"
#: automation_time_axis.cc:261 automation_time_axis.cc:340
-#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465
-#: generic_pluginui.cc:752 panner_ui.cc:159
+#: automation_time_axis.cc:511 gain_meter.cc:203 generic_pluginui.cc:463
+#: generic_pluginui.cc:750 panner_ui.cc:158
msgid "Touch"
msgstr "Ändern"
-#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108
+#: automation_time_axis.cc:351 generic_pluginui.cc:466 meter_patterns.cc:108
msgid "???"
msgstr "???"
@@ -2233,8 +2207,8 @@ msgstr "Automationssmodus"
msgid "Discrete"
msgstr "Diskret"
-#: automation_time_axis.cc:537 editor.cc:1457 editor.cc:1464 editor.cc:1520
-#: editor.cc:1526 export_format_dialog.cc:476
+#: automation_time_axis.cc:537 editor.cc:1458 editor.cc:1465 editor.cc:1521
+#: editor.cc:1527 export_format_dialog.cc:476
msgid "Linear"
msgstr "Linear"
@@ -2265,13 +2239,13 @@ msgstr "Eingang"
msgid "Output"
msgstr "Ausgang"
-#: bundle_manager.cc:264 editor.cc:1974 editor_actions.cc:90
+#: bundle_manager.cc:264 editor.cc:1975 editor_actions.cc:90
#: editor_actions.cc:100
msgid "Edit"
msgstr "Bearbeiten"
-#: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310
-#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229
+#: bundle_manager.cc:265 editor.cc:5494 editor_actions.cc:310
+#: editor_actions.cc:368 plugin_ui.cc:417 processor_box.cc:2229
#: route_time_axis.cc:713
msgid "Delete"
msgstr "Löschen"
@@ -2448,164 +2422,164 @@ msgstr "Länge"
msgid "edit note"
msgstr "Note bearbeiten"
-#: editor.cc:137 editor.cc:3429
+#: editor.cc:137 editor.cc:3430
msgid "CD Frames"
msgstr "CD-Frames"
-#: editor.cc:138 editor.cc:3431
+#: editor.cc:138 editor.cc:3432
msgid "Timecode Frames"
msgstr "Timecode-Frames"
-#: editor.cc:139 editor.cc:3433
+#: editor.cc:139 editor.cc:3434
msgid "Timecode Seconds"
msgstr "Timecode-Sekunden"
-#: editor.cc:140 editor.cc:3435
+#: editor.cc:140 editor.cc:3436
msgid "Timecode Minutes"
msgstr "Timecode-Minuten"
-#: editor.cc:141 editor.cc:3437
+#: editor.cc:141 editor.cc:3438
msgid "Seconds"
msgstr "Sekunden"
-#: editor.cc:142 editor.cc:3439
+#: editor.cc:142 editor.cc:3440
msgid "Minutes"
msgstr "Minuten"
-#: editor.cc:143 editor.cc:3413 quantize_dialog.cc:37 quantize_dialog.cc:141
+#: editor.cc:143 editor.cc:3414 quantize_dialog.cc:37 quantize_dialog.cc:141
msgid "Beats/128"
msgstr "Schläge/128"
-#: editor.cc:144 editor.cc:3411 quantize_dialog.cc:38 quantize_dialog.cc:143
+#: editor.cc:144 editor.cc:3412 quantize_dialog.cc:38 quantize_dialog.cc:143
msgid "Beats/64"
msgstr "Schläge/64"
-#: editor.cc:145 editor.cc:3409 quantize_dialog.cc:39 quantize_dialog.cc:145
+#: editor.cc:145 editor.cc:3410 quantize_dialog.cc:39 quantize_dialog.cc:145
msgid "Beats/32"
msgstr "Schläge/32"
-#: editor.cc:146 editor.cc:3407
+#: editor.cc:146 editor.cc:3408
msgid "Beats/28"
msgstr "Schläge/28"
-#: editor.cc:147 editor.cc:3405
+#: editor.cc:147 editor.cc:3406
msgid "Beats/24"
msgstr "Schläge/24"
-#: editor.cc:148 editor.cc:3403
+#: editor.cc:148 editor.cc:3404
msgid "Beats/20"
msgstr "Schläge/20"
-#: editor.cc:149 editor.cc:3401 quantize_dialog.cc:40 quantize_dialog.cc:147
+#: editor.cc:149 editor.cc:3402 quantize_dialog.cc:40 quantize_dialog.cc:147
msgid "Beats/16"
msgstr "Schläge/16"
-#: editor.cc:150 editor.cc:3399
+#: editor.cc:150 editor.cc:3400
msgid "Beats/14"
msgstr "Schläge/14"
-#: editor.cc:151 editor.cc:3397
+#: editor.cc:151 editor.cc:3398
msgid "Beats/12"
msgstr "Schläge/12"
-#: editor.cc:152 editor.cc:3395
+#: editor.cc:152 editor.cc:3396
msgid "Beats/10"
msgstr "Schläge/10"
-#: editor.cc:153 editor.cc:3393 quantize_dialog.cc:41 quantize_dialog.cc:149
+#: editor.cc:153 editor.cc:3394 quantize_dialog.cc:41 quantize_dialog.cc:149
msgid "Beats/8"
msgstr "Schläge/8"
-#: editor.cc:154 editor.cc:3391
+#: editor.cc:154 editor.cc:3392
msgid "Beats/7"
msgstr "Schläge/7"
-#: editor.cc:155 editor.cc:3389
+#: editor.cc:155 editor.cc:3390
msgid "Beats/6"
msgstr "Schläge/6"
-#: editor.cc:156 editor.cc:3387
+#: editor.cc:156 editor.cc:3388
msgid "Beats/5"
msgstr "Schläge/5"
-#: editor.cc:157 editor.cc:3385 quantize_dialog.cc:42 quantize_dialog.cc:151
+#: editor.cc:157 editor.cc:3386 quantize_dialog.cc:42 quantize_dialog.cc:151
msgid "Beats/4"
msgstr "Schläge/4"
-#: editor.cc:158 editor.cc:3383 quantize_dialog.cc:43 quantize_dialog.cc:153
+#: editor.cc:158 editor.cc:3384 quantize_dialog.cc:43 quantize_dialog.cc:153
msgid "Beats/3"
msgstr "Schläge/3"
-#: editor.cc:159 editor.cc:3381 quantize_dialog.cc:44 quantize_dialog.cc:155
+#: editor.cc:159 editor.cc:3382 quantize_dialog.cc:44 quantize_dialog.cc:155
msgid "Beats/2"
msgstr "Schläge/2"
-#: editor.cc:160 editor.cc:3415 quantize_dialog.cc:45 quantize_dialog.cc:157
+#: editor.cc:160 editor.cc:3416 quantize_dialog.cc:45 quantize_dialog.cc:157
msgid "Beats"
msgstr "Schläge"
-#: editor.cc:161 editor.cc:3417
+#: editor.cc:161 editor.cc:3418
msgid "Bars"
msgstr "Takte"
-#: editor.cc:162 editor.cc:3419
+#: editor.cc:162 editor.cc:3420
msgid "Marks"
msgstr "Marker"
-#: editor.cc:163 editor.cc:3421
+#: editor.cc:163 editor.cc:3422
msgid "Region starts"
msgstr "Regionen-Anfang"
-#: editor.cc:164 editor.cc:3423
+#: editor.cc:164 editor.cc:3424
msgid "Region ends"
msgstr "Regionen-Ende"
-#: editor.cc:165 editor.cc:3427
+#: editor.cc:165 editor.cc:3428
msgid "Region syncs"
msgstr "Regionen-Sync"
-#: editor.cc:166 editor.cc:3425
+#: editor.cc:166 editor.cc:3426
msgid "Region bounds"
msgstr "Regionengrenzen"
-#: editor.cc:171 editor.cc:3455 editor_actions.cc:485
+#: editor.cc:171 editor.cc:3456 editor_actions.cc:485
msgid "No Grid"
msgstr "Raster aus"
-#: editor.cc:172 editor.cc:3457 editor_actions.cc:486
+#: editor.cc:172 editor.cc:3458 editor_actions.cc:486
msgid "Grid"
msgstr "Einrasten"
-#: editor.cc:173 editor.cc:3459 editor_actions.cc:487
+#: editor.cc:173 editor.cc:3460 editor_actions.cc:487
msgid "Magnetic"
msgstr "Magnetisch"
-#: editor.cc:178 editor.cc:188 editor.cc:3498 editor.cc:3523
+#: editor.cc:178 editor.cc:188 editor.cc:3499 editor.cc:3524
#: editor_actions.cc:117 editor_actions.cc:468
msgid "Playhead"
msgstr "Positionszeiger"
-#: editor.cc:179 editor.cc:3496 editor_actions.cc:470
+#: editor.cc:179 editor.cc:3497 editor_actions.cc:470
msgid "Marker"
msgstr "Marker"
-#: editor.cc:180 editor.cc:189 editor.cc:3525 editor_actions.cc:469
+#: editor.cc:180 editor.cc:189 editor.cc:3526 editor_actions.cc:469
msgid "Mouse"
msgstr "Maus"
-#: editor.cc:185 editor.cc:3517 mono_panner_editor.cc:42
+#: editor.cc:185 editor.cc:3518 mono_panner_editor.cc:42
msgid "Left"
msgstr "Links"
-#: editor.cc:186 editor.cc:3519 mono_panner_editor.cc:47
+#: editor.cc:186 editor.cc:3520 mono_panner_editor.cc:47
msgid "Right"
msgstr "Rechts"
-#: editor.cc:187 editor.cc:3521
+#: editor.cc:187 editor.cc:3522
msgid "Center"
msgstr "Mitte"
-#: editor.cc:190 editor.cc:3090 editor.cc:3527
+#: editor.cc:190 editor.cc:3091 editor.cc:3528
msgid "Edit point"
msgstr "Arbeitspunkt"
@@ -2665,337 +2639,337 @@ msgstr "Video Zeitleiste"
msgid "mode"
msgstr "Modus"
-#: editor.cc:542
+#: editor.cc:541
msgid "Regions"
msgstr "Regionen"
-#: editor.cc:543
+#: editor.cc:542
msgid "Tracks & Busses"
msgstr "Spuren & Busse"
-#: editor.cc:544
+#: editor.cc:543
msgid "Snapshots"
msgstr "Schnappschüsse"
-#: editor.cc:545
+#: editor.cc:544
msgid "Track & Bus Groups"
msgstr "Spuren & Bus-Gruppen"
-#: editor.cc:546
+#: editor.cc:545
msgid "Ranges & Marks"
msgstr "Bereiche & Marker"
-#: editor.cc:690 editor.cc:5345 rc_option_editor.cc:1294
-#: rc_option_editor.cc:1302 rc_option_editor.cc:1310 rc_option_editor.cc:1318
-#: rc_option_editor.cc:1335 rc_option_editor.cc:1337 rc_option_editor.cc:1345
-#: rc_option_editor.cc:1353 rc_option_editor.cc:1373 rc_option_editor.cc:1385
-#: rc_option_editor.cc:1387 rc_option_editor.cc:1395 rc_option_editor.cc:1403
-#: rc_option_editor.cc:1411 rc_option_editor.cc:1419 rc_option_editor.cc:1427
-#: rc_option_editor.cc:1442 rc_option_editor.cc:1446
+#: editor.cc:690 editor.cc:5346 rc_option_editor.cc:1292
+#: rc_option_editor.cc:1300 rc_option_editor.cc:1308 rc_option_editor.cc:1316
+#: rc_option_editor.cc:1333 rc_option_editor.cc:1335 rc_option_editor.cc:1343
+#: rc_option_editor.cc:1351 rc_option_editor.cc:1371 rc_option_editor.cc:1383
+#: rc_option_editor.cc:1385 rc_option_editor.cc:1393 rc_option_editor.cc:1401
+#: rc_option_editor.cc:1409 rc_option_editor.cc:1417 rc_option_editor.cc:1425
+#: rc_option_editor.cc:1440 rc_option_editor.cc:1444
msgid "Editor"
msgstr "Editor"
-#: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130
+#: editor.cc:1215 editor.cc:1225 editor.cc:4441 editor_actions.cc:130
#: editor_actions.cc:1813
msgid "Loop"
msgstr "Schleife"
-#: editor.cc:1231 editor.cc:1241 editor.cc:4467 editor_actions.cc:131
+#: editor.cc:1231 editor.cc:1241 editor.cc:4468 editor_actions.cc:131
#: time_info_box.cc:67
msgid "Punch"
msgstr "Punch"
-#: editor.cc:1352
+#: editor.cc:1353
msgid "Linear (for highly correlated material)"
msgstr "Linear (für stark korreliertes Material)"
-#: editor.cc:1362 editor.cc:1499 editor.cc:1561
+#: editor.cc:1363 editor.cc:1500 editor.cc:1562
msgid "Constant power"
msgstr "Konstante Energie"
-#: editor.cc:1371 editor.cc:1492 editor.cc:1554
+#: editor.cc:1372 editor.cc:1493 editor.cc:1555
msgid "Symmetric"
msgstr "Symmetrisch"
-#: editor.cc:1381 editor.cc:1474 editor.cc:1536
+#: editor.cc:1382 editor.cc:1475 editor.cc:1537
msgid "Slow"
msgstr "Langsam"
-#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627
+#: editor.cc:1391 editor.cc:1484 editor.cc:1546 sfdb_ui.cc:1627
#: sfdb_ui.cc:1736
msgid "Fast"
msgstr "Schnell"
-#: editor.cc:1437
+#: editor.cc:1438
msgid "programming error: fade in canvas item has no regionview data pointer!"
msgstr "Programmierfehler: fade in canvas item has no regionview data pointer!"
-#: editor.cc:1448 editor.cc:1512
+#: editor.cc:1449 editor.cc:1513
msgid "Deactivate"
msgstr "Deaktivieren"
-#: editor.cc:1450 editor.cc:1514
+#: editor.cc:1451 editor.cc:1515
msgid "Activate"
msgstr "Aktivieren"
-#: editor.cc:1458 editor.cc:1521
+#: editor.cc:1459 editor.cc:1522
msgid "Slowest"
msgstr "Sehr langsam"
-#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064
+#: editor.cc:1573 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064
msgid "programming error: "
msgstr "Programmierfehler:"
-#: editor.cc:1673 editor.cc:1681 editor_ops.cc:3522
+#: editor.cc:1674 editor.cc:1682 editor_ops.cc:3522
msgid "Freeze"
msgstr "Einfrieren"
-#: editor.cc:1677
+#: editor.cc:1678
msgid "Unfreeze"
msgstr "Auftauen"
-#: editor.cc:1816
+#: editor.cc:1817
msgid "Selected Regions"
msgstr "Ausgewählte Regionen"
-#: editor.cc:1852 editor_markers.cc:895
+#: editor.cc:1853 editor_markers.cc:895
msgid "Play Range"
msgstr "Bereich wiedergeben"
-#: editor.cc:1853 editor_markers.cc:898
+#: editor.cc:1854 editor_markers.cc:898
msgid "Loop Range"
msgstr "Bereich in Schleife wiedergeben"
-#: editor.cc:1862 editor_actions.cc:332
+#: editor.cc:1863 editor_actions.cc:332
msgid "Move Range Start to Previous Region Boundary"
msgstr "Anfang des Bereiches zur vorherigen Regiongrenze verschieben"
-#: editor.cc:1869 editor_actions.cc:339
+#: editor.cc:1870 editor_actions.cc:339
msgid "Move Range Start to Next Region Boundary"
msgstr "Anfang des Bereiches zur nächsten Regiongrenze verschieben"
-#: editor.cc:1876 editor_actions.cc:346
+#: editor.cc:1877 editor_actions.cc:346
msgid "Move Range End to Previous Region Boundary"
msgstr "Ende des Bereiches zur vorherigen Regiongrenze verschieben"
-#: editor.cc:1883 editor_actions.cc:353
+#: editor.cc:1884 editor_actions.cc:353
msgid "Move Range End to Next Region Boundary"
msgstr "Ende des Bereiches zur nächsten Regiongrenze verschieben"
-#: editor.cc:1889
+#: editor.cc:1890
msgid "Convert to Region In-Place"
msgstr "In Region umwanden (direkt)"
-#: editor.cc:1890
+#: editor.cc:1891
msgid "Convert to Region in Region List"
msgstr "In Region umwanden (in Regionenliste hinzufügen)"
-#: editor.cc:1893 editor_markers.cc:925
+#: editor.cc:1894 editor_markers.cc:925
msgid "Select All in Range"
msgstr "Alles im Bereich auswählen"
-#: editor.cc:1896
+#: editor.cc:1897
msgid "Set Loop from Range"
msgstr "Schleife aus Bereich erstellen"
-#: editor.cc:1897
+#: editor.cc:1898
msgid "Set Punch from Range"
msgstr "Punch aus Bereich erstellen"
-#: editor.cc:1900
+#: editor.cc:1901
msgid "Add Range Markers"
msgstr "Bereichsmarker einfügen"
-#: editor.cc:1903
+#: editor.cc:1904
msgid "Crop Region to Range"
msgstr "Region auf Bereich kürzen"
-#: editor.cc:1904
+#: editor.cc:1905
msgid "Fill Range with Region"
msgstr "Bereich mit Region füllen"
-#: editor.cc:1905 editor_actions.cc:289
+#: editor.cc:1906 editor_actions.cc:289
msgid "Duplicate Range"
msgstr "Bereich duplizieren"
-#: editor.cc:1908
+#: editor.cc:1909
msgid "Consolidate Range"
msgstr "Bereich als neue Region pre-Mixer"
-#: editor.cc:1909
+#: editor.cc:1910
msgid "Consolidate Range With Processing"
msgstr "Bereich als neue Region post-mixer"
-#: editor.cc:1910
+#: editor.cc:1911
msgid "Bounce Range to Region List"
msgstr "Auswahl zur Regionenliste bouncen"
-#: editor.cc:1911
+#: editor.cc:1912
msgid "Bounce Range to Region List With Processing"
msgstr "Auswahl zur Regionenliste bouncen (Post-Fader)"
-#: editor.cc:1912 editor_markers.cc:908
+#: editor.cc:1913 editor_markers.cc:908
msgid "Export Range..."
msgstr "Bereich exportieren..."
-#: editor.cc:1927 editor.cc:2008 editor_actions.cc:281
+#: editor.cc:1928 editor.cc:2009 editor_actions.cc:281
msgid "Play From Edit Point"
msgstr "Wiedergabe ab Arbeitspunkt"
-#: editor.cc:1928 editor.cc:2009
+#: editor.cc:1929 editor.cc:2010
msgid "Play From Start"
msgstr "Wiedergabe ab Anfang"
-#: editor.cc:1929
+#: editor.cc:1930
msgid "Play Region"
msgstr "Region wiedergeben"
-#: editor.cc:1931
+#: editor.cc:1932
msgid "Loop Region"
msgstr "Region in Schleife wiedergeben"
-#: editor.cc:1941 editor.cc:2018
+#: editor.cc:1942 editor.cc:2019
msgid "Select All in Track"
msgstr "Alles in der Spur auswählen"
-#: editor.cc:1942 editor.cc:2019 editor_actions.cc:185
+#: editor.cc:1943 editor.cc:2020 editor_actions.cc:185
#: export_timespan_selector.cc:53 processor_box.cc:2237
msgid "Select All"
msgstr "Alles auswählen"
-#: editor.cc:1943 editor.cc:2020
+#: editor.cc:1944 editor.cc:2021
msgid "Invert Selection in Track"
msgstr "Auswahl in der Spur umkehren"
-#: editor.cc:1944 editor.cc:2021 editor_actions.cc:187
+#: editor.cc:1945 editor.cc:2022 editor_actions.cc:187
msgid "Invert Selection"
msgstr "Auswahl umkehren"
-#: editor.cc:1946
+#: editor.cc:1947
msgid "Set Range to Loop Range"
msgstr "Bereich als Schleife auswählen"
-#: editor.cc:1947
+#: editor.cc:1948
msgid "Set Range to Punch Range"
msgstr "Bereich als Punchbereich"
-#: editor.cc:1949 editor.cc:2023 editor_actions.cc:188
+#: editor.cc:1950 editor.cc:2024 editor_actions.cc:188
msgid "Select All After Edit Point"
msgstr "Alle Regionen nach dem Arbeitspunkt auswählen"
-#: editor.cc:1950 editor.cc:2024 editor_actions.cc:189
+#: editor.cc:1951 editor.cc:2025 editor_actions.cc:189
msgid "Select All Before Edit Point"
msgstr "Alle Regionen vor dem Arbeitspunkt auswählen"
-#: editor.cc:1951 editor.cc:2025
+#: editor.cc:1952 editor.cc:2026
msgid "Select All After Playhead"
msgstr "Alle Regionen nach dem Positionszeiger auswählen"
-#: editor.cc:1952 editor.cc:2026
+#: editor.cc:1953 editor.cc:2027
msgid "Select All Before Playhead"
msgstr "Alle Regionen vor dem Positionszeiger auswählen"
-#: editor.cc:1953
+#: editor.cc:1954
msgid "Select All Between Playhead and Edit Point"
msgstr "Alle zwischen Positionszeiger und Arbeitspunkt auswählen"
-#: editor.cc:1954
+#: editor.cc:1955
msgid "Select All Within Playhead and Edit Point"
msgstr "Alles zwischen Positionszeiger und Arbeitspunkt auswählen"
-#: editor.cc:1955
+#: editor.cc:1956
msgid "Select Range Between Playhead and Edit Point"
msgstr "Wähle Bereich zwischen Positionszeiger und Arbeitspunkt aus"
-#: editor.cc:1957 editor.cc:2028 editor_actions.cc:127 editor_actions.cc:128
+#: editor.cc:1958 editor.cc:2029 editor_actions.cc:127 editor_actions.cc:128
msgid "Select"
msgstr "Auswahl"
-#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222
+#: editor.cc:1966 editor.cc:2037 editor_actions.cc:309 processor_box.cc:2222
msgid "Cut"
msgstr "Ausschneiden"
-#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225
+#: editor.cc:1967 editor.cc:2038 editor_actions.cc:312 processor_box.cc:2225
msgid "Copy"
msgstr "Kopieren"
-#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233
+#: editor.cc:1968 editor.cc:2039 editor_actions.cc:313 processor_box.cc:2233
msgid "Paste"
msgstr "Einfügen"
-#: editor.cc:1971 editor_actions.cc:87
+#: editor.cc:1972 editor_actions.cc:87
msgid "Align"
msgstr "Ausrichten"
-#: editor.cc:1972
+#: editor.cc:1973
msgid "Align Relative"
msgstr "Relativ ausrichten"
-#: editor.cc:1979
+#: editor.cc:1980
msgid "Insert Selected Region"
msgstr "Ausgewählte Region einfügen"
-#: editor.cc:1980
+#: editor.cc:1981
msgid "Insert Existing Media"
msgstr "Vorhandenes Material importieren"
-#: editor.cc:1989 editor.cc:2045
+#: editor.cc:1990 editor.cc:2046
msgid "Nudge Entire Track Later"
msgstr "Gesamte Spur schrittweise nach hinten"
-#: editor.cc:1990 editor.cc:2046
+#: editor.cc:1991 editor.cc:2047
msgid "Nudge Track After Edit Point Later"
msgstr "Spur nach Arbeitspunkt schrittweise nach hinten"
-#: editor.cc:1991 editor.cc:2047
+#: editor.cc:1992 editor.cc:2048
msgid "Nudge Entire Track Earlier"
msgstr "Gesamte Spur schrittweise nach vorne"
-#: editor.cc:1992 editor.cc:2048
+#: editor.cc:1993 editor.cc:2049
msgid "Nudge Track After Edit Point Earlier"
msgstr "Spur nach Arbeitspunkt schrittweise nach vorne"
-#: editor.cc:1994 editor.cc:2050
+#: editor.cc:1995 editor.cc:2051
msgid "Nudge"
msgstr "Verschieben"
-#: editor.cc:3070
+#: editor.cc:3071
msgid "Smart Mode (add Range functions to Object mode)"
msgstr "Smart-Modus (zusätzliche Bereichsfunktionen m Objekt-Modus)"
-#: editor.cc:3071
+#: editor.cc:3072
msgid "Object Mode (select/move Objects)"
msgstr "Objekt-Modus (Objekte auswählen/verschieben)"
-#: editor.cc:3072
+#: editor.cc:3073
msgid "Range Mode (select/move Ranges)"
msgstr "Bereichs-Modus (Bereiche auswählen/verschieben)"
-#: editor.cc:3073
+#: editor.cc:3074
msgid "Draw/Edit MIDI Notes"
msgstr "MIDI Noten eingeben/editieren"
-#: editor.cc:3074
+#: editor.cc:3075
msgid "Draw Region Gain"
msgstr "Lautstärkeautomation zeichnen"
-#: editor.cc:3075
+#: editor.cc:3076
msgid "Select Zoom Range"
msgstr "Zoombereich auswählen"
-#: editor.cc:3076
+#: editor.cc:3077
msgid "Stretch/Shrink Regions and MIDI Notes"
msgstr "Regionen und MIDI-Noten strecken/stauchen (Time-Stretch)"
-#: editor.cc:3077
+#: editor.cc:3078
msgid "Listen to Specific Regions"
msgstr "Ausgewählte Regionen vorhören"
-#: editor.cc:3078
+#: editor.cc:3079
msgid "Note Level Editing"
msgstr "Auf Notenebene bearbeiten"
-#: editor.cc:3079
+#: editor.cc:3080
msgid ""
"Groups: click to (de)activate\n"
"Context-click for other operations"
@@ -3003,51 +2977,51 @@ msgstr ""
"Gruppen: Klicken zum (De)aktivieren\n"
"Rechtsklick für Optionen"
-#: editor.cc:3080
+#: editor.cc:3081
msgid "Nudge Region/Selection Later"
msgstr "Region/Auswahl schrittweise nach hinten"
-#: editor.cc:3081
+#: editor.cc:3082
msgid "Nudge Region/Selection Earlier"
msgstr "Region/Auswahl schrittweise nach vorne"
-#: editor.cc:3082 editor_actions.cc:242
+#: editor.cc:3083 editor_actions.cc:242
msgid "Zoom In"
msgstr "Vergrößern"
-#: editor.cc:3083 editor_actions.cc:241
+#: editor.cc:3084 editor_actions.cc:241
msgid "Zoom Out"
msgstr "Verkleinern"
-#: editor.cc:3084 editor_actions.cc:243
+#: editor.cc:3085 editor_actions.cc:243
msgid "Zoom to Session"
msgstr "Auf ganzes Projekt zoomen"
-#: editor.cc:3085
+#: editor.cc:3086
msgid "Zoom focus"
msgstr "Zoom-Mittelpunkt"
-#: editor.cc:3086
+#: editor.cc:3087
msgid "Expand Tracks"
msgstr "Spuren vergrößern"
-#: editor.cc:3087
+#: editor.cc:3088
msgid "Shrink Tracks"
msgstr "Spuren verkleinern"
-#: editor.cc:3088
+#: editor.cc:3089
msgid "Snap/Grid Units"
msgstr "Rastereinheiten"
-#: editor.cc:3089
+#: editor.cc:3090
msgid "Snap/Grid Mode"
msgstr "Einrastmodus"
-#: editor.cc:3091
+#: editor.cc:3092
msgid "Edit Mode"
msgstr "Bearbeitungsmodus"
-#: editor.cc:3092
+#: editor.cc:3093
msgid ""
"Nudge Clock\n"
"(controls distance used to nudge regions and selections)"
@@ -3056,39 +3030,39 @@ msgstr ""
"(bestimmt den Abstand für das schrittweise Verschieben von Regionen und "
"Bereichen)"
-#: editor.cc:3194
+#: editor.cc:3195
msgid "malformed URL passed to drag-n-drop code"
msgstr "Ungültige URL an drag-n-drop-Code weitergeleitet"
-#: editor.cc:3256 editor_actions.cc:291
+#: editor.cc:3257 editor_actions.cc:291
msgid "Command|Undo"
msgstr "Rückgängig"
-#: editor.cc:3258
+#: editor.cc:3259
msgid "Command|Undo (%1)"
msgstr "Rückgängig (%1)"
-#: editor.cc:3265 editor_actions.cc:292
+#: editor.cc:3266 editor_actions.cc:292
msgid "Redo"
msgstr "Wiederherstellen"
-#: editor.cc:3267
+#: editor.cc:3268
msgid "Redo (%1)"
msgstr "Wiederherstellen (%1)"
-#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794
+#: editor.cc:3287 editor.cc:3311 editor_actions.cc:106 editor_actions.cc:1794
msgid "Duplicate"
msgstr "Duplizieren"
-#: editor.cc:3287
+#: editor.cc:3288
msgid "Number of duplications:"
msgstr "Anzahl der Duplikate:"
-#: editor.cc:3864
+#: editor.cc:3865
msgid "Playlist Deletion"
msgstr "Löschen von Wiedergabelisten"
-#: editor.cc:3865
+#: editor.cc:3866
msgid ""
"Playlist %1 is currently unused.\n"
"If it is kept, its audio files will not be cleaned.\n"
@@ -3100,36 +3074,36 @@ msgstr ""
"Falls sie gelöscht wird, werden die ausschließlich von ihr verwendeten "
"Audiodateien gelöscht."
-#: editor.cc:3875
+#: editor.cc:3876
msgid "Delete Playlist"
msgstr "Wiedergabeliste löschen"
-#: editor.cc:3876
+#: editor.cc:3877
msgid "Keep Playlist"
msgstr "Wiedergabeliste behalten"
-#: editor.cc:3877 editor_audio_import.cc:581 editor_ops.cc:5856
+#: editor.cc:3878 editor_audio_import.cc:581 editor_ops.cc:5856
#: sfdb_freesound_mootcher.cc:69 processor_box.cc:2003 processor_box.cc:2028
msgid "Cancel"
msgstr "Abbrechen"
-#: editor.cc:4021
+#: editor.cc:4022
msgid "new playlists"
msgstr "Neue Wiedergabelisten"
-#: editor.cc:4037
+#: editor.cc:4038
msgid "copy playlists"
msgstr "Wiedergabelisten kopieren"
-#: editor.cc:4052
+#: editor.cc:4053
msgid "clear playlists"
msgstr "Wiedergabelisten zurücksetzen"
-#: editor.cc:4687
+#: editor.cc:4688
msgid "Please wait while %1 loads visual data."
msgstr "Bitte warten Sie, während %1 die Daten zur Anzeige des Projekts lädt."
-#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253
+#: editor.cc:5493 editor_markers.cc:940 panner_ui.cc:392 processor_box.cc:2253
msgid "Edit..."
msgstr "Bearbeiten..."
@@ -3178,8 +3152,8 @@ msgstr "Layering"
msgid "Position"
msgstr "Position"
-#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177
-#: panner_ui.cc:586
+#: editor_actions.cc:101 gain_meter.cc:120 gain_meter.cc:794 panner_ui.cc:176
+#: panner_ui.cc:585
msgid "Trim"
msgstr "Anpassen"
@@ -3229,7 +3203,7 @@ msgstr "MIDI Optionen"
msgid "Misc Options"
msgstr "Sonstiges"
-#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48
+#: editor_actions.cc:115 rc_option_editor.cc:1458 route_group_dialog.cc:48
#: session_option_editor.cc:218 session_option_editor.cc:225
msgid "Monitoring"
msgstr "Monitoring"
@@ -3637,11 +3611,11 @@ msgstr "Log"
#: editor_actions.cc:320
msgid "Move Later to Transient"
-msgstr "Zum nächsten Transienten"
+msgstr "Zum nächsten Transienten bewegen"
#: editor_actions.cc:321
msgid "Move Earlier to Transient"
-msgstr "Zum vorigen Transienten"
+msgstr "Zum vorigen Transienten bewegen"
#: editor_actions.cc:325
msgid "Start Range"
@@ -3966,7 +3940,7 @@ msgstr "Min:Sek"
msgid "Video Monitor"
msgstr "Videomonitor"
-#: editor_actions.cc:549 rc_option_editor.cc:1842
+#: editor_actions.cc:549 rc_option_editor.cc:1838
msgid "Video"
msgstr "Video"
@@ -4485,31 +4459,31 @@ msgstr "Tempomarker kopieren"
msgid "move tempo mark"
msgstr "Tempowechsel bewegen"
-#: editor_drag.cc:2545
+#: editor_drag.cc:2550
msgid "change fade in length"
msgstr "Ändere Fade-In Länge"
-#: editor_drag.cc:2663
+#: editor_drag.cc:2668
msgid "change fade out length"
msgstr "Fade-Out verändern"
-#: editor_drag.cc:3018
+#: editor_drag.cc:3023
msgid "move marker"
msgstr "Marker bewegen"
-#: editor_drag.cc:3581
+#: editor_drag.cc:3586
msgid "An error occurred while executing time stretch operation"
msgstr "Beim Ausführen der Timestretch-Operation trat ein Fehler auf"
-#: editor_drag.cc:4011
+#: editor_drag.cc:4016
msgid "programming_error: %1"
msgstr "Programmierfehler: %1"
-#: editor_drag.cc:4081 editor_markers.cc:680
+#: editor_drag.cc:4086 editor_markers.cc:680
msgid "new range marker"
msgstr "Neuer Bereich"
-#: editor_drag.cc:4762
+#: editor_drag.cc:4767
msgid "rubberband selection"
msgstr "Gummiband-Auswahl"
@@ -5206,7 +5180,7 @@ msgstr "Übermäßige Aufteilung?"
#: editor_ops.cc:6125
msgid "place transient"
-msgstr "Transienten Platzieren"
+msgstr "Transienten platzieren"
#: editor_ops.cc:6160
msgid "snap regions to grid"
@@ -5401,8 +5375,8 @@ msgstr "G"
msgid "Region position glued to Bars|Beats time?"
msgstr "Regionenposition an Takt und Schäge gebunden?"
-#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759
-#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554
+#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:762
+#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:553
#: stereo_panner.cc:237
msgid "M"
msgstr "M"
@@ -5447,8 +5421,7 @@ msgstr "Ungenutzte Regionen entfernen"
msgid "Mult."
msgstr "Viele"
-#: editor_regions.cc:847 engine_dialog.cc:84 midi_list_editor.cc:103
-#: time_info_box.cc:91
+#: editor_regions.cc:847 midi_list_editor.cc:103 time_info_box.cc:91
msgid "Start"
msgstr "Start"
@@ -5514,7 +5487,7 @@ msgstr "Solo ein"
msgid "SI"
msgstr "SI"
-#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880
+#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1876
msgid "Solo Isolated"
msgstr "Isoliertes Solo"
@@ -5733,264 +5706,196 @@ msgstr ""
"Time-Stretch konnte nicht gestartet werden - Fehler beim erstellen des "
"Threads"
-#: engine_dialog.cc:75
-msgid "Realtime"
-msgstr "Realtime"
+#: engine_dialog.cc:73
+msgid "Device Control Panel"
+msgstr "Gerätekontrollfeld"
-#: engine_dialog.cc:76
-msgid "Do not lock memory"
-msgstr "Speicherzugriff nicht sperren"
+#: engine_dialog.cc:74 engine_dialog.cc:1600
+msgid "Measure latency"
+msgstr "Latenz messen"
-#: engine_dialog.cc:77
-msgid "Unlock memory"
-msgstr "Speicherzugriff öffnen"
+#: engine_dialog.cc:75
+msgid "Use results"
+msgstr "Benutze Ergebnisse"
#: engine_dialog.cc:78
-msgid "No zombies"
-msgstr "Keine Zombies (Soft Mode)"
+msgid "Refresh list"
+msgstr "Liste auffrischen"
#: engine_dialog.cc:79
-msgid "Provide monitor ports"
-msgstr "Monitor-Ports erstellen"
-
-#: engine_dialog.cc:80
-msgid "Force 16 bit"
-msgstr "Erzwinge 16 Bit"
-
-#: engine_dialog.cc:81
-msgid "H/W monitoring"
-msgstr "Hardware Monitoring"
-
-#: engine_dialog.cc:82
-msgid "H/W metering"
-msgstr "Hardware-Pegelanzeige"
-
-#: engine_dialog.cc:83
-msgid "Verbose output"
-msgstr "Ausführliche Statusmeldungen"
+msgid "Start MIDI ALSA/JACK bridge"
+msgstr "Starte MIDI ALSA/JACK bridge"
-#: engine_dialog.cc:103
-msgid "8000Hz"
-msgstr "8000 Hz"
+#: engine_dialog.cc:121
+msgid "Latency Measurement Tool"
+msgstr "Latenzmeßwerkzeug"
-#: engine_dialog.cc:104
-msgid "22050Hz"
-msgstr "22050 Hz"
-
-#: engine_dialog.cc:105
-msgid "44100Hz"
-msgstr "44100 Hz"
-
-#: engine_dialog.cc:106
-msgid "48000Hz"
-msgstr "48000 Hz"
-
-#: engine_dialog.cc:107
-msgid "88200Hz"
-msgstr "88200 Hz"
-
-#: engine_dialog.cc:108
-msgid "96000Hz"
-msgstr "96000 Hz"
-
-#: engine_dialog.cc:109
-msgid "192000Hz"
-msgstr "192000 Hz"
-
-#: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169
-#: engine_dialog.cc:562 midi_channel_selector.cc:163
-#: midi_channel_selector.cc:402 midi_channel_selector.cc:438
-#: rc_option_editor.cc:1250 sfdb_ui.cc:538
-msgid "None"
-msgstr "Kein"
-
-#: engine_dialog.cc:128 engine_dialog.cc:563
-msgid "Triangular"
-msgstr "dreieckig"
-
-#: engine_dialog.cc:129 engine_dialog.cc:565
-msgid "Rectangular"
-msgstr "rechteckig"
-
-#: engine_dialog.cc:130 engine_dialog.cc:567
-msgid "Shaped"
-msgstr "shaped"
+#: engine_dialog.cc:134
+msgid ""
+"<span weight=\"bold\">Turn down the volume on your hardware to a very low "
+"level.</span>"
+msgstr ""
+"<span weight=\"bold\">Stellen Sie Ihre Hardwarelautstärke auf einen sehr "
+"niedrigen "
+"Pegel ein.</span>"
-#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974
-msgid "Playback/recording on 1 device"
-msgstr "Wiedergabe/Aufnahme mit einem Gerät"
+#: engine_dialog.cc:142
+msgid ""
+"Select two channels below and connect them using a cable or (less ideally) a "
+"speaker and microphone."
+msgstr ""
+"Wählen Sie unten zwei Kanäle aus und verbinden sie mit einem Kabel oder "
+"(weniger empfehlenswert) mittels Lautsprecher und Mikrofon."
-#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540
-#: engine_dialog.cc:977
-msgid "Playback/recording on 2 devices"
-msgstr "Wiedergabe/Aufnahme mit zwei Geräten"
+#: engine_dialog.cc:147
+msgid "Output channel"
+msgstr "Ausgangskanal"
-#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980
-msgid "Playback only"
-msgstr "Nur Wiedergabe"
+#: engine_dialog.cc:155
+msgid "Input channel"
+msgstr "Eingangskanal"
-#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983
-msgid "Recording only"
-msgstr "Nur Aufnahme"
+#: engine_dialog.cc:174
+msgid "Once the channels are connected, click the \"Measure latency\" button."
+msgstr ""
+"Wenn die Kanäle verbunden sind, klicken Sie den Knopf \"Latenz messen\"."
-#: engine_dialog.cc:171 engine_dialog.cc:448
-msgid "coremidi"
-msgstr "coremidi"
+#: engine_dialog.cc:187
+msgid "When satisfied with the results, click the \"Use results\" button."
+msgstr ""
+"Wenn Sie mit dem Resultat zufrieden sind, klicken Sie den Knopf \"Benutze "
+"Ergebnisse\"."
-#: engine_dialog.cc:173 engine_dialog.cc:581
-msgid "seq"
-msgstr "seq"
+#: engine_dialog.cc:203 route_params_ui.cc:105
+msgid "Latency"
+msgstr "Latenz"
-#: engine_dialog.cc:174 engine_dialog.cc:583
-msgid "raw"
-msgstr "raw"
+#: engine_dialog.cc:298
+msgid "Audio System:"
+msgstr "Audiosystem:"
-#: engine_dialog.cc:181
+#: engine_dialog.cc:337
msgid "Driver:"
msgstr "Treiber:"
-#: engine_dialog.cc:186
-msgid "Audio Interface:"
-msgstr "Audio-Schnittstelle:"
+#: engine_dialog.cc:343
+msgid "Device:"
+msgstr "Gerät:"
-#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265
+#: engine_dialog.cc:348 engine_dialog.cc:430 sfdb_ui.cc:147 sfdb_ui.cc:260
+#: sfdb_ui.cc:265
msgid "Sample rate:"
msgstr "Samplerate:"
-#: engine_dialog.cc:196
+#: engine_dialog.cc:354 engine_dialog.cc:437
msgid "Buffer size:"
msgstr "Puffergröße"
-#: engine_dialog.cc:202
-msgid "Number of buffers:"
-msgstr "Pufferanzahl:"
+#: engine_dialog.cc:367
+msgid "Input Channels:"
+msgstr "Eingangskanäle:"
-#: engine_dialog.cc:209
-msgid "Approximate latency:"
-msgstr "Latenz (ca.)"
+#: engine_dialog.cc:378
+msgid "Output Channels:"
+msgstr "Ausgangskanäle:"
-#: engine_dialog.cc:222
-msgid "Audio mode:"
-msgstr "Audio-Modus:"
+#: engine_dialog.cc:389
+msgid "Hardware input latency:"
+msgstr "Hardware Eingangslatenz (Samples)"
-#: engine_dialog.cc:284 engine_dialog.cc:408
-msgid "Ignore"
-msgstr "ignorieren"
+#: engine_dialog.cc:392 engine_dialog.cc:405
+msgid "samples"
+msgstr "Samples"
-#: engine_dialog.cc:292
-msgid "Client timeout"
-msgstr "Client Timeout"
+#: engine_dialog.cc:402
+msgid "Hardware output latency:"
+msgstr "Hardware Ausgangslatenz (Samples)"
-#: engine_dialog.cc:299
-msgid "Number of ports:"
-msgstr "Portanzahl"
+#: engine_dialog.cc:422
+msgid ""
+"The %1 audio backend was configured and started externally.\n"
+"This limits your control over it."
+msgstr ""
+"Das %1 Audiobackend wurde extern konfiguriert und gestartet.\n"
+"Dies beschränkt Ihre Kontrolle darüber."
-#: engine_dialog.cc:304
-msgid "MIDI driver:"
-msgstr "MIDI-Treiber:"
+#: engine_dialog.cc:531
+msgid "MIDI Inputs"
+msgstr "MIDI Eingänge"
-#: engine_dialog.cc:310
-msgid "Dither:"
-msgstr "Dithering:"
+#: engine_dialog.cc:548
+msgid "MIDI Outputs"
+msgstr "MIDI Ausgänge"
-#: engine_dialog.cc:319
-msgid ""
-"No JACK server found anywhere on this system. Please install JACK and restart"
-msgstr ""
-"Es wurde kein JACK Server auf diesem System gefunden. Bitte installieren Sie "
-"JACK vor einem Neuversuch."
+#: engine_dialog.cc:617
+msgid "all available channels"
+msgstr "alle verfügbaren Kanäle"
-#: engine_dialog.cc:327
-msgid "Server:"
-msgstr "Server:"
+#: engine_dialog.cc:811
+#, c-format
+msgid "%u samples"
+msgstr "%u Samples"
-#: engine_dialog.cc:339
-msgid "Input device:"
-msgstr "Eingangsgerät:"
+#: engine_dialog.cc:862
+#, c-format
+msgid "(%.1f msecs)"
+msgstr "(%.1f msecs)"
-#: engine_dialog.cc:343
-msgid "Output device:"
-msgstr "Ausgabegerät:"
+#: engine_dialog.cc:1281
+msgid "Cannot set driver to %1"
+msgstr "Kann Treiber nicht auf %1 setzen"
-#: engine_dialog.cc:348
-msgid "Hardware input latency:"
-msgstr "Hardware Eingangslatenz (Samples)"
+#: engine_dialog.cc:1285
+msgid "Cannot set device name to %1"
+msgstr "Kann Gerät nicht auf %1 setzen"
-#: engine_dialog.cc:351 engine_dialog.cc:357
-msgid "samples"
-msgstr "Samples"
+#: engine_dialog.cc:1289
+msgid "Cannot set sample rate to %1"
+msgstr "Kann Samplerate nicht auf %1 setzen"
-#: engine_dialog.cc:354
-msgid "Hardware output latency:"
-msgstr "Hardware Ausgangslatenz (Samples)"
+#: engine_dialog.cc:1293
+msgid "Cannot set buffer size to %1"
+msgstr "Kann Buffergröße nicht auf %1 setzen"
-#: engine_dialog.cc:368
-msgid "Device"
-msgstr "Gerät"
+#: engine_dialog.cc:1299
+msgid "Cannot set input channels to %1"
+msgstr "Kann Eingangskanäle nicht auf %1 setzen"
-#: engine_dialog.cc:370
-msgid "Advanced"
-msgstr "Erweitert"
+#: engine_dialog.cc:1303
+msgid "Cannot set output channels to %1"
+msgstr "Kann Ausgangskanäle nicht auf %1 setzen"
-#: engine_dialog.cc:653
-msgid "cannot open JACK rc file %1 to store parameters"
-msgstr "kann die JACK rc-Datei %1 nicht öffnen, um die Parameter zu sichern"
+#: engine_dialog.cc:1309
+msgid "Cannot set input latency to %1"
+msgstr "Kann Eingangslatenz nicht auf %1 setzen"
-#: engine_dialog.cc:787
-msgid ""
-"You do not have any audio devices capable of\n"
-"simultaneous playback and recording.\n"
-"\n"
-"Please use Applications -> Utilities -> Audio MIDI Setup\n"
-"to create an \"aggregrate\" device, or install a suitable\n"
-"audio interface.\n"
-"\n"
-"Please send email to Apple and ask them why new Macs\n"
-"have no duplex audio device.\n"
-"\n"
-"Alternatively, if you really want just playback\n"
-"or recording but not both, start JACK before running\n"
-"%1 and choose the relevant device then."
-msgstr ""
-"Sie haben keine Soundkarte, die gleichzeitiges\n"
-"Abspielen und Aufnehmen unterstützt.\n"
-"\n"
-"Benützen Sie Programme>Dienstprogramme>Audio-Midi-Setup\n"
-" um ein kombiniertes Gerät zu erzeugen, oder installieren Sie ein\n"
-"geeignetes Audiointerface.\n"
-"\n"
-"Bitte senden Sie eine E-Mail an Apple und fragen Sie, warum Sie\n"
-"keine Duplex Soundkarte in Ihrem Mac haben.\n"
-"\n"
-"Wenn Sie Audiomaterial wirklich nicht gleichzeitig aufnehmen und wiedergeben "
-"wollen,\n"
-"können Sie JACK vor dem Starten von %1 aufrufen und das entsprechende Gerät "
-"auswählen."
+#: engine_dialog.cc:1313
+msgid "Cannot set output latency to %1"
+msgstr "Kann Ausgangslatenz nicht auf %1 setzen"
-#: engine_dialog.cc:800
-msgid "No suitable audio devices"
-msgstr "Keine passenden Audiogeräte."
+#: engine_dialog.cc:1534
+msgid "No signal detected "
+msgstr "Kein Signal erkannt"
-#: engine_dialog.cc:1017
-msgid "JACK appears to be missing from the %1 bundle"
-msgstr "JACK scheint im %1-Paket zu fehlen."
+#: engine_dialog.cc:1547 port_insert_ui.cc:71 port_insert_ui.cc:99
+msgid "Disconnected from audio engine"
+msgstr "Von Audio-Engine getrennt"
-#: engine_dialog.cc:1087
-msgid "You need to choose an audio device first."
-msgstr "Sie müssen zuerst ein Audiogerät auswählen."
+#: engine_dialog.cc:1587 port_insert_ui.cc:135
+msgid "Detecting ..."
+msgstr "Messe..."
-#: engine_dialog.cc:1104
-msgid "Audio device \"%1\" not known on this computer."
-msgstr "Audiogerät %1 scheint auf diesem Computer nicht vorhanden zu sein."
+#: engine_dialog.cc:1589
+msgid "Cancel measurement"
+msgstr "Messung abbrechen"
-#: engine_dialog.cc:1256
-msgid "AudioSetup value for %1 is missing data"
-msgstr "Es fehlen Daten zum AudioSetup-Wert von %1"
+#: engine_dialog.cc:1657
+msgid "Disconnect from %1"
+msgstr "Trenne von %1"
-#: engine_dialog.cc:1335
-msgid "configuration files contain a JACK server path that doesn't exist (%1)"
-msgstr ""
-"die Konfiguration enthält einen JACK-Serverpfad, der nicht existiert (%1)"
+#: engine_dialog.cc:1669
+msgid "Connect to %1"
+msgstr "Verbinde zu %1"
#: export_channel_selector.cc:45 sfdb_ui.cc:145
msgid "Channels:"
@@ -6325,72 +6230,77 @@ msgstr "getSoundResourceFile: Wurzel = %1, != Antwort"
msgid "%1"
msgstr "%1"
-#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856
+#: gain_meter.cc:105 gain_meter.cc:360 gain_meter.cc:465 gain_meter.cc:859
msgid "-inf"
msgstr "-inf"
-#: gain_meter.cc:112 gain_meter.cc:913
+#: gain_meter.cc:111 gain_meter.cc:916
msgid "Fader automation mode"
msgstr "Fader Automationsmodus"
-#: gain_meter.cc:113 gain_meter.cc:914
+#: gain_meter.cc:112 gain_meter.cc:917
msgid "Fader automation type"
msgstr "Fader-Automationstyp"
-#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590
+#: gain_meter.cc:121 gain_meter.cc:798 panner_ui.cc:177 panner_ui.cc:589
msgid "Abs"
msgstr "Abs"
-#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557
+#: gain_meter.cc:765 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:556
#: route_time_axis.cc:2411
msgid "P"
msgstr "P"
-#: gain_meter.cc:765 panner_ui.cc:560
+#: gain_meter.cc:768 panner_ui.cc:559
msgid "T"
msgstr "T"
-#: gain_meter.cc:768 panner_ui.cc:563
+#: gain_meter.cc:771 panner_ui.cc:562
msgid "W"
msgstr "W"
-#: generic_pluginui.cc:83
+#: generic_pluginui.cc:81
msgid "<span size=\"large\">Presets</span>"
msgstr "<span size=\"large\">Voreinstellungen</span>"
-#: generic_pluginui.cc:232
+#: generic_pluginui.cc:230
msgid "Switches"
msgstr "Schalter"
-#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212
+#: generic_pluginui.cc:240 generic_pluginui.cc:374 processor_box.cc:2212
msgid "Controls"
msgstr "Steuerelemente"
-#: generic_pluginui.cc:270
+#: generic_pluginui.cc:268
msgid "Plugin Editor: could not build control element for port %1"
msgstr "Plugin Editor: konnte kein Steuerelement für Port %1 erzeugen"
-#: generic_pluginui.cc:408
+#: generic_pluginui.cc:406
msgid "Meters"
msgstr "Pegelanzeigen"
-#: generic_pluginui.cc:423
+#: generic_pluginui.cc:421
msgid "Automation control"
msgstr "Automation"
-#: generic_pluginui.cc:430
+#: generic_pluginui.cc:428
msgid "Mgnual"
msgstr "Mgnuell"
-#: global_port_matrix.cc:164
+#: global_port_matrix.cc:157
msgid "Audio Connection Manager"
msgstr "Audio Verbindungsmanager"
-#: global_port_matrix.cc:167
+#: global_port_matrix.cc:160
msgid "MIDI Connection Manager"
msgstr "Midi Verbindungsmanager"
-#: global_port_matrix.cc:213 io_selector.cc:216
+#: global_port_matrix.cc:200 io_selector.cc:210 mixer_strip.cc:719
+#: mixer_strip.cc:845
+msgid "Disconnect"
+msgstr "Trenne"
+
+#: global_port_matrix.cc:206 io_selector.cc:216
msgid "port"
msgstr "Port"
@@ -6588,19 +6498,19 @@ msgstr ""
msgid "Main_menu"
msgstr "Hauptmenü"
-#: keyeditor.cc:255
+#: keyeditor.cc:253
msgid "redirectmenu"
msgstr "Umleitungsmenü"
-#: keyeditor.cc:257
+#: keyeditor.cc:255
msgid "Editor_menus"
msgstr "Editor-Menü"
-#: keyeditor.cc:259
+#: keyeditor.cc:257
msgid "RegionList"
msgstr "Regionenliste"
-#: keyeditor.cc:261
+#: keyeditor.cc:259
msgid "ProcessorMenu"
msgstr "Prozessor-Menü"
@@ -6622,7 +6532,7 @@ msgid_plural "%1 samples"
msgstr[0] "%1 Sample"
msgstr[1] "%1 Samples"
-#: latency_gui.cc:72 panner_ui.cc:392
+#: latency_gui.cc:72 panner_ui.cc:391
msgid "Reset"
msgstr "Zurücksetzen"
@@ -6714,103 +6624,73 @@ msgstr "<b>Bereiche (Inclusive CD Track-Bereichen)</b>"
msgid "add range marker"
msgstr "Bereich hinzufügen"
-#: main.cc:83
-msgid "%1 could not connect to JACK."
-msgstr "%1 konnte nicht zu JACK verbinden."
+#: main.cc:81
+msgid "%1 could not connect to the audio backend."
+msgstr "%1 konnte nicht zum Audiobackend verbinden."
-#: main.cc:87
-msgid ""
-"There are several possible reasons:\n"
-"\n"
-"1) JACK is not running.\n"
-"2) JACK is running as another user, perhaps root.\n"
-"3) There is already another client called \"%1\".\n"
-"\n"
-"Please consider the possibilities, and perhaps (re)start JACK."
-msgstr ""
-"Dafür kann es verschiedene Gründe geben:\n"
-"\n"
-"1) JACK läuft nicht.\n"
-"2) JACK wurde unter einem anderen Benutzer gestartet, möglicherweise als "
-"root.\n"
-"3) Es gibt bereits einen anderen Client mit der Bezeichnung \"%1\".\n"
-"\n"
-"Betrachten Sie bitte diese Möglichkeiten und starten Sie ggf. JACK neu."
-
-#: main.cc:203 main.cc:324
+#: main.cc:194 main.cc:315
msgid "cannot create user %3 folder %1 (%2)"
msgstr "Kann benutzerspezifischen %3-Ordner %1 nicht erstellen: %2"
-#: main.cc:210 main.cc:331
+#: main.cc:201 main.cc:322
msgid "cannot open pango.rc file %1"
msgstr "kann die Datei pango.rc nicht öffnen %1"
-#: main.cc:235 main.cc:358
+#: main.cc:226 main.cc:349
msgid "Cannot find ArdourMono TrueType font"
msgstr "Kann den TrueType-Font ArdourMono nicht finden"
-#: main.cc:247 main.cc:364
+#: main.cc:238 main.cc:355
msgid "Cannot load ArdourMono TrueType font."
msgstr "Kann den TrueType-Font ArdourMono nicht laden."
-#: main.cc:312
+#: main.cc:303
msgid ""
"No fontconfig file found on your system. Things may looked very odd or ugly"
msgstr ""
"Keine fontconfig-Datei auf Ihrem System gefunden. Das kann zu seltsamem oder "
"hässlichem Aussehen führen"
-#: main.cc:368
+#: main.cc:359
msgid "Failed to set fontconfig configuration."
msgstr "Fontconfig-Konfiguration gescheitert."
-#: main.cc:379 main.cc:395
-msgid "JACK exited"
-msgstr "JACK wurde beendet"
+#: main.cc:370 main.cc:386
+msgid "The audio backend (%1) has failed, or terminated"
+msgstr "Das Audiobackend (%1) funktioniert nicht oder wurde beendet"
-#: main.cc:382
+#: main.cc:373
msgid ""
-"JACK exited unexpectedly, and without notifying %1.\n"
+"%2 exited unexpectedly, and without notifying %1.\n"
"\n"
-"This could be due to misconfiguration or to an error inside JACK.\n"
+"This could be due to misconfiguration or to an error inside %2.\n"
"\n"
"Click OK to exit %1."
msgstr ""
-"JACK wurde unerwartet und ohne Benachrichtigung beendet %1.\n"
+"%2 wurde unerwartet und ohne %1 zu benachrichtigen beendet .\n"
"\n"
"Dies liegt entweder an einer fehlerhaften Konfiguration oder an einem Fehler "
-"in JACK.\n"
+"in %2.\n"
"\n"
"Klicke OK, um %1 zu verlassen."
-#: main.cc:397
-msgid ""
-"JACK exited unexpectedly, and without notifying %1.\n"
-"\n"
-"This is probably due to an error inside JACK. You should restart JACK\n"
-"and reconnect %1 to it, or exit %1 now. You cannot save your\n"
-"session at this time, because we would lose your connection information.\n"
-msgstr ""
-"JACK wurde unerwartet und ohne Benachrichtigung beendet %1.\n"
-"\n"
-"Dies liegt wahrscheinlich an einem Fehler in JACK. Sie sollten\n"
-"JACK neu starten und %1 erneut mit ihm verbinden, oder %1 jetzt beenden.\n"
-"Momentan läßt sich das Projekt nicht speichern, da alle Informationen\n"
-"über Verbindungen verloren gehen würden.\n"
+#: main.cc:387
+msgid "%2 exited unexpectedly, and without notifying %1."
+msgstr "%2 wurde unerwartet und ohne %1 zu benachrichtigen beendet "
-#: main.cc:487
+#: main.cc:474
msgid " (built using "
msgstr " (kompiliert mit Version "
-#: main.cc:490
+#: main.cc:477
msgid " and GCC version "
msgstr " und GCC Version"
-#: main.cc:500
+#: main.cc:487
msgid "Copyright (C) 1999-2012 Paul Davis"
msgstr "Copyright (C) 1999-2012 Paul Davis"
-#: main.cc:501
+#: main.cc:488
msgid ""
"Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel "
"Baker, Robin Gareus"
@@ -6818,34 +6698,34 @@ msgstr ""
"Einige Teile Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel "
"Baker, Robin Gareus"
-#: main.cc:503
+#: main.cc:490
msgid "%1 comes with ABSOLUTELY NO WARRANTY"
msgstr "%1 wird Ihnen ohne jegliche Gewährleistung"
-#: main.cc:504
+#: main.cc:491
msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
msgstr ""
"für allgemeine oder spezielle Gebrauchstauglichkeit zur Verfügung gestellt."
-#: main.cc:505
+#: main.cc:492
msgid "This is free software, and you are welcome to redistribute it "
msgstr "Dies ist freie Software, die Sie gerne weitergeben dürfen"
-#: main.cc:506
+#: main.cc:493
msgid "under certain conditions; see the source for copying conditions."
msgstr ""
"solange Sie sich an die Bedingungen, die in der Datei COPYING aufgeführt "
"sind halten."
-#: main.cc:513
+#: main.cc:500
msgid "could not initialize %1."
msgstr "Konnte %1 nicht initialisieren."
-#: main.cc:522
+#: main.cc:509
msgid "Cannot xinstall SIGPIPE error handler"
msgstr "Kann die SIGPIPE Fehlerbehandlung nicht installieren"
-#: main.cc:528
+#: main.cc:515
msgid "could not create %1 GUI"
msgstr "konnte das %1 GUI nicht erstellen"
@@ -6862,6 +6742,11 @@ msgstr "MarkerText"
msgid "All"
msgstr "Alle"
+#: midi_channel_selector.cc:163 midi_channel_selector.cc:402
+#: midi_channel_selector.cc:438 rc_option_editor.cc:1248 sfdb_ui.cc:538
+msgid "None"
+msgstr "Kein"
+
#: midi_channel_selector.cc:167 midi_channel_selector.cc:407
#: midi_channel_selector.cc:443
msgid "Invert"
@@ -7250,27 +7135,27 @@ msgstr "alle"
msgid "some"
msgstr "einige"
-#: midi_tracer.cc:43
+#: midi_tracer.cc:46
msgid "Line history: "
msgstr "Aktionsliste:"
-#: midi_tracer.cc:51
+#: midi_tracer.cc:54
msgid "Auto-Scroll"
msgstr "Auto-Scroll"
-#: midi_tracer.cc:52
+#: midi_tracer.cc:55
msgid "Decimal"
msgstr "Dezimal"
-#: midi_tracer.cc:53 rc_option_editor.cc:659
+#: midi_tracer.cc:56 rc_option_editor.cc:657
msgid "Enabled"
msgstr "Aktiviert"
-#: midi_tracer.cc:54
+#: midi_tracer.cc:57
msgid "Delta times"
msgstr "Deltazeiten"
-#: midi_tracer.cc:66
+#: midi_tracer.cc:70
msgid "Port:"
msgstr "Port:"
@@ -7411,7 +7296,7 @@ msgid "pre"
msgstr "Pre"
#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300
-#: rc_option_editor.cc:1881
+#: rc_option_editor.cc:1877
msgid "Comments"
msgstr "Kommentare"
@@ -7459,11 +7344,11 @@ msgstr "iso"
msgid "Mix group"
msgstr "Bearbeitungsgruppe"
-#: mixer_strip.cc:351 rc_option_editor.cc:1878
+#: mixer_strip.cc:351 rc_option_editor.cc:1874
msgid "Phase Invert"
msgstr "Phaseninvertierung"
-#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218
+#: mixer_strip.cc:352 rc_option_editor.cc:1875 route_ui.cc:1218
msgid "Solo Safe"
msgstr "Solo sperren"
@@ -7471,7 +7356,7 @@ msgstr "Solo sperren"
msgid "Group"
msgstr "Gruppe"
-#: mixer_strip.cc:356 rc_option_editor.cc:1882
+#: mixer_strip.cc:356 rc_option_editor.cc:1878
msgid "Meter Point"
msgstr "Abgreifpunkt der Pegelanzeige"
@@ -7492,9 +7377,10 @@ msgid "Snd"
msgstr "Snd"
#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154
-msgid "Not connected to JACK - no I/O changes are possible"
+msgid "Not connected to audio engine - no I/O changes are possible"
msgstr ""
-"Nicht mit Jack verbunden - es sind keine Änderungen an Ein-/Ausgängen möglich"
+"Nicht mit Audioengine verbunden - es sind keine Änderungen an Ein-/Ausgängen "
+"möglich"
#: mixer_strip.cc:1096
msgid "<b>INPUT</b> to %1"
@@ -8014,11 +7900,11 @@ msgstr ""
#: opts.cc:63
msgid ""
-" -c, --name <name> Use a specific jack client name, default is "
+" -c, --name <name> Use a specific backend client name, default is "
"ardour\n"
msgstr ""
-" -c, --name name Benutze spezielle JACK-Clientkennung, "
-"Standard: ardour\n"
+" -c, --name name Benutze speziellen Backend-Clientnamen, "
+"Voreinstellung: ardour\n"
#: opts.cc:64
msgid ""
@@ -8092,7 +7978,7 @@ msgstr ""
msgid "Panner (2D)"
msgstr "Panner (2D)"
-#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451
+#: panner2d.cc:783 panner_ui.cc:383 plugin_ui.cc:449
msgid "Bypass"
msgstr "Bypass"
@@ -8100,15 +7986,15 @@ msgstr "Bypass"
msgid "Panner"
msgstr "Panner"
-#: panner_ui.cc:71
+#: panner_ui.cc:70
msgid "Pan automation mode"
msgstr "Pan-Automationsmodus"
-#: panner_ui.cc:72
+#: panner_ui.cc:71
msgid "Pan automation type"
msgstr "Pan-Automationstyp"
-#: panner_ui.cc:295
+#: panner_ui.cc:294
msgid ""
"No panner user interface is currently available for %1-in/2out tracks/busses"
msgstr "Für %1-in/2out Spuren/Busse ist momentan kein Panner-UI verfügbar"
@@ -8264,11 +8150,11 @@ msgstr "Nach Urheber"
msgid "By Category"
msgstr "Nach Kategorie"
-#: plugin_ui.cc:116
+#: plugin_ui.cc:114
msgid "Eh? LADSPA plugins don't have editors!"
msgstr "Merkwürdig... LADSPA-Plugins sollten kein GUI haben!"
-#: plugin_ui.cc:125 plugin_ui.cc:227
+#: plugin_ui.cc:123 plugin_ui.cc:225
msgid ""
"unknown type of editor-supplying plugin (note: no VST support in this "
"version of %1)"
@@ -8276,11 +8162,11 @@ msgstr ""
"Unbekannter Plugintyp mit eigenem Editor (Hinweis: diese %1-Version "
"unterstützt keine VST-Plugins)"
-#: plugin_ui.cc:128
+#: plugin_ui.cc:126
msgid "unknown type of editor-supplying plugin"
msgstr "Unbekannter Plugintyp"
-#: plugin_ui.cc:257
+#: plugin_ui.cc:255
msgid ""
"unknown type of editor-supplying plugin (note: no linuxVST support in this "
"version of %1)"
@@ -8288,23 +8174,23 @@ msgstr ""
"Unbekannter Plugintyp mit eigenem Editor (Hinweis: diese %1-Version "
"unterstützt keine linuxVST-Plugins)"
-#: plugin_ui.cc:329
+#: plugin_ui.cc:327
msgid "create_lv2_editor called on non-LV2 plugin"
msgstr "create_lv2_editor auf nicht-LV2-Plugin angewandt"
-#: plugin_ui.cc:417
+#: plugin_ui.cc:415
msgid "Add"
msgstr "Hinzufügen"
-#: plugin_ui.cc:421
+#: plugin_ui.cc:419
msgid "Description"
msgstr "Beschreibung:"
-#: plugin_ui.cc:422
+#: plugin_ui.cc:420
msgid "Plugin analysis"
msgstr "Pluginanalyse"
-#: plugin_ui.cc:429
+#: plugin_ui.cc:427
msgid ""
"Presets (if any) for this plugin\n"
"(Both factory and user-created)"
@@ -8312,23 +8198,23 @@ msgstr ""
"Presets (falls existent) für dieses Plugin\n"
"(Hersteller- und Benutzerpresets)"
-#: plugin_ui.cc:430
+#: plugin_ui.cc:428
msgid "Save a new preset"
msgstr "Neues Preset speichern"
-#: plugin_ui.cc:431
+#: plugin_ui.cc:429
msgid "Save the current preset"
msgstr "Momentanes Preset speichern"
-#: plugin_ui.cc:432
+#: plugin_ui.cc:430
msgid "Delete the current preset"
msgstr "Lösche das aktuelle Preset"
-#: plugin_ui.cc:433
+#: plugin_ui.cc:431
msgid "Disable signal processing by the plugin"
msgstr "Deaktiviere die Signalverarbeitung des Plugins"
-#: plugin_ui.cc:466 plugin_ui.cc:662
+#: plugin_ui.cc:464 plugin_ui.cc:660
msgid ""
"Click to allow the plugin to receive keyboard events that %1 would normally "
"use as a shortcut"
@@ -8336,29 +8222,29 @@ msgstr ""
"Klicke, damit das Plugin Tastaturbefehle erhält, die %1 sonst als "
"Tastenkürzel verwenden würde"
-#: plugin_ui.cc:467
+#: plugin_ui.cc:465
msgid "Click to enable/disable this plugin"
msgstr "Klicke, um dieses Plugin zu ein/auszuschalten"
-#: plugin_ui.cc:506
+#: plugin_ui.cc:504
msgid "latency (%1 sample)"
msgid_plural "latency (%1 samples)"
msgstr[0] "Latenz (%1 Sample)"
msgstr[1] "Latenz (%1 Samples)"
-#: plugin_ui.cc:508
+#: plugin_ui.cc:506
msgid "latency (%1 ms)"
msgstr "Latenz (%1 ms)"
-#: plugin_ui.cc:519
+#: plugin_ui.cc:517
msgid "Edit Latency"
msgstr "Latenz bearbeiten"
-#: plugin_ui.cc:558
+#: plugin_ui.cc:556
msgid "Plugin preset %1 not found"
msgstr "Plugin Preset %1 nicht gefunden"
-#: plugin_ui.cc:595
+#: plugin_ui.cc:593
msgid ""
"Plugin presets are not supported in this build of %1. Consider paying for a "
"full version"
@@ -8366,7 +8252,7 @@ msgstr ""
"Pluginpresets werden in diesem Version von %1 nicht unterstützt. Erwägen "
"Sie, für eine Vollversion zu zahlen"
-#: plugin_ui.cc:615 plugin_ui.cc:630
+#: plugin_ui.cc:613 plugin_ui.cc:628
msgid ""
"Plugin presets are not supported in this build of %1. Consider paying for a "
"newer version"
@@ -8374,35 +8260,35 @@ msgstr ""
"Pluginpresets werden in diesem Version von %1 nicht unterstützt. Erwägen "
"Sie, für eine neuere Version zu zahlen"
-#: plugin_ui.cc:669
+#: plugin_ui.cc:667
msgid "Click to allow normal use of %1 keyboard shortcuts"
msgstr "Klicke, um die normale Verwendung von %1 Tastenkürzeln zu aktivieren"
-#: port_group.cc:335
+#: port_group.cc:337
msgid "%1 Busses"
msgstr "%1 Busse"
-#: port_group.cc:336
+#: port_group.cc:338
msgid "%1 Tracks"
msgstr "%1 Spuren"
-#: port_group.cc:337
+#: port_group.cc:339
msgid "Hardware"
msgstr "Hardware"
-#: port_group.cc:338
+#: port_group.cc:340
msgid "%1 Misc"
msgstr "%1 Sonstige"
-#: port_group.cc:339
+#: port_group.cc:341
msgid "Other"
msgstr "Andere"
-#: port_group.cc:430 port_group.cc:431
+#: port_group.cc:432 port_group.cc:433
msgid "LTC Out"
msgstr "LTC Ausgang"
-#: port_group.cc:434 port_group.cc:435
+#: port_group.cc:436 port_group.cc:437
msgid "LTC In"
msgstr "LTC Eingang"
@@ -8438,15 +8324,15 @@ msgstr "MIDI clock out"
msgid "MMC out"
msgstr "MMC out"
-#: port_group.cc:540
+#: port_group.cc:532
msgid ":monitor"
msgstr ":monitor"
-#: port_group.cc:552
+#: port_group.cc:544
msgid "system:"
msgstr "system:"
-#: port_group.cc:553
+#: port_group.cc:545
msgid "alsa_pcm"
msgstr "alsa_pcm"
@@ -8462,18 +8348,10 @@ msgstr "Send/Ausgang"
msgid "Return/Input"
msgstr "Return/Input"
-#: port_insert_ui.cc:71 port_insert_ui.cc:99
-msgid "Disconnected from audio engine"
-msgstr "Von Audio-Engine getrennt"
-
#: port_insert_ui.cc:86
msgid "No signal detected"
msgstr "Kein Signal erkannt"
-#: port_insert_ui.cc:135
-msgid "Detecting ..."
-msgstr "Messe..."
-
#: port_insert_ui.cc:166
msgid "Port Insert "
msgstr "Port Insert "
@@ -8596,7 +8474,7 @@ msgstr "Alle Regler verbergen"
msgid "on"
msgstr "an"
-#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925
+#: processor_box.cc:465 rc_option_editor.cc:1907 rc_option_editor.cc:1921
msgid "off"
msgstr "Aus"
@@ -8830,101 +8708,101 @@ msgstr "Notenanfang einrasten an"
msgid "Snap note end"
msgstr "Notenende einrasten an"
-#: rc_option_editor.cc:69
+#: rc_option_editor.cc:67
msgid "Click audio file:"
msgstr "Audiodatei für Klick"
-#: rc_option_editor.cc:72 rc_option_editor.cc:79
+#: rc_option_editor.cc:70 rc_option_editor.cc:77
msgid "Browse..."
msgstr "Durchsuchen..."
-#: rc_option_editor.cc:76
+#: rc_option_editor.cc:74
msgid "Click emphasis audio file:"
msgstr "Audiodatei für Klick-Betonung"
-#: rc_option_editor.cc:108
+#: rc_option_editor.cc:106
msgid "Choose Click"
msgstr "Click auswählen"
-#: rc_option_editor.cc:128
+#: rc_option_editor.cc:126
msgid "Choose Click Emphasis"
msgstr "Click-Betonung auswählen"
-#: rc_option_editor.cc:160
+#: rc_option_editor.cc:158
msgid "Limit undo history to"
msgstr "Limitiere Aktionsliste auf"
-#: rc_option_editor.cc:161
+#: rc_option_editor.cc:159
msgid "Save undo history of"
msgstr "Speichere Aktionsliste von"
-#: rc_option_editor.cc:170 rc_option_editor.cc:177
+#: rc_option_editor.cc:168 rc_option_editor.cc:175
msgid "commands"
msgstr "Aktionen"
-#: rc_option_editor.cc:315
+#: rc_option_editor.cc:313
msgid "Edit using:"
msgstr "Bearbeiten mit:"
-#: rc_option_editor.cc:321 rc_option_editor.cc:347 rc_option_editor.cc:374
+#: rc_option_editor.cc:319 rc_option_editor.cc:345 rc_option_editor.cc:372
msgid "+ button"
msgstr "+ Maustaste"
-#: rc_option_editor.cc:341
+#: rc_option_editor.cc:339
msgid "Delete using:"
msgstr "Entfernen mit:"
-#: rc_option_editor.cc:368
+#: rc_option_editor.cc:366
msgid "Insert note using:"
msgstr "Note einfügen:"
-#: rc_option_editor.cc:395
+#: rc_option_editor.cc:393
msgid "Ignore snap using:"
msgstr "Einrasten ignorieren mittels:"
-#: rc_option_editor.cc:411
+#: rc_option_editor.cc:409
msgid "Keyboard layout:"
msgstr "Tastaturlayout:"
-#: rc_option_editor.cc:534
+#: rc_option_editor.cc:532
msgid "Font scaling:"
msgstr "Schriftskalierung"
-#: rc_option_editor.cc:586
+#: rc_option_editor.cc:584
msgid "Playback (seconds of buffering):"
msgstr "Wiedergabe (gepufferte Sekunden):"
-#: rc_option_editor.cc:599
+#: rc_option_editor.cc:597
msgid "Recording (seconds of buffering):"
msgstr "Aufnahme (gepufferte Sekunden):"
-#: rc_option_editor.cc:656
+#: rc_option_editor.cc:654
msgid "Control Surface Protocol"
msgstr "Eingabegeräteprotokoll"
-#: rc_option_editor.cc:660
+#: rc_option_editor.cc:658
msgid "Feedback"
msgstr "Feedback"
-#: rc_option_editor.cc:665
+#: rc_option_editor.cc:663
msgid "Double-click on a name to edit settings for an enabled protocol"
msgstr ""
"Doppelklick auf einen Namen editiert Einstellungen für ein aktiviertes "
"Protokoll"
-#: rc_option_editor.cc:817
+#: rc_option_editor.cc:815
msgid "Show Video Export Info before export"
msgstr "Zeige Video-Exportinformationen vor dem Exportieren"
-#: rc_option_editor.cc:818
+#: rc_option_editor.cc:816
msgid "Show Video Server Startup Dialog"
msgstr "Zeige den Videoserver-Startdialog"
-#: rc_option_editor.cc:819
+#: rc_option_editor.cc:817
msgid "Advanced Setup (remote video server)"
msgstr "Ausführliche Einrichtung (entfernter Videoserver)"
-#: rc_option_editor.cc:827
+#: rc_option_editor.cc:825
msgid ""
"<b>When enabled</b> you can speficify a custom video-server URL and docroot. "
"- Do not enable this option unless you know what you are doing."
@@ -8933,11 +8811,11 @@ msgstr ""
"für den Videoserver eingeben. - Aktivieren Sie diese Option nur, wenn Sie "
"wissen, was Sie tun."
-#: rc_option_editor.cc:829
+#: rc_option_editor.cc:827
msgid "Video Server URL:"
msgstr "Videoserver URL:"
-#: rc_option_editor.cc:834
+#: rc_option_editor.cc:832
msgid ""
"Base URL of the video-server including http prefix. This is usually 'http://"
"hostname.example.org:1554/' and defaults to 'http://localhost:1554/' when "
@@ -8947,11 +8825,11 @@ msgstr ""
"hostname.example.org:1554/' und ist auf 'http://localhost:1554/' "
"voreingestellt, wenn der Videoserver lokal läuft"
-#: rc_option_editor.cc:836
+#: rc_option_editor.cc:834
msgid "Video Folder:"
msgstr "Videoordner:"
-#: rc_option_editor.cc:841
+#: rc_option_editor.cc:839
msgid ""
"Local path to the video-server document-root. Only files below this "
"directory will be accessible by the video-server. If the server run on a "
@@ -8966,7 +8844,7 @@ msgstr ""
"werden, falls es nicht zugänglich ist. Wird für den lokalen Videomonitor und "
"die Dateisuche beim Öffnen/Hinzufügen einer Videodatei benutzt."
-#: rc_option_editor.cc:848
+#: rc_option_editor.cc:846
msgid ""
"<b>When enabled</b> an information window with details is displayed before "
"the video-export dialog."
@@ -8974,94 +8852,94 @@ msgstr ""
"<b>Wenn aktiviert</b> , wird vor dem Videoexport-Dialog ein "
"Informationsfenster mit Details angezeigt."
-#: rc_option_editor.cc:853
+#: rc_option_editor.cc:851
msgid ""
"<b>When enabled</b> the video server is never launched automatically without "
"confirmation"
msgstr ""
"<b>Wenn aktiviert</b>, wird der Videoserver nie ohne Bestätigung gestartet"
-#: rc_option_editor.cc:993
+#: rc_option_editor.cc:991
msgid "%1 Preferences"
msgstr "%1 Einstellungen"
-#: rc_option_editor.cc:1004
+#: rc_option_editor.cc:1002
msgid "DSP CPU Utilization"
msgstr "DSP CPU Nutzung"
-#: rc_option_editor.cc:1008
+#: rc_option_editor.cc:1006
msgid "Signal processing uses"
msgstr "Die Signalverarbeitung verwendet"
-#: rc_option_editor.cc:1013
+#: rc_option_editor.cc:1011
msgid "all but one processor"
msgstr "Alle außer einem Prozessor"
-#: rc_option_editor.cc:1014
+#: rc_option_editor.cc:1012
msgid "all available processors"
msgstr "Alle verfügbaren Prozessoren"
-#: rc_option_editor.cc:1017
+#: rc_option_editor.cc:1015
msgid "%1 processors"
msgstr "%1 Prozessoren"
-#: rc_option_editor.cc:1020
+#: rc_option_editor.cc:1018
msgid "This setting will only take effect when %1 is restarted."
msgstr "Diese Einstellung wird erst nach einem Neustart von %1 wirksam."
-#: rc_option_editor.cc:1025
+#: rc_option_editor.cc:1023
msgid "Options|Undo"
msgstr "Undo"
-#: rc_option_editor.cc:1032
+#: rc_option_editor.cc:1030
msgid "Verify removal of last capture"
msgstr "Verwerfen der letzten Aufnahme bestätigen"
-#: rc_option_editor.cc:1040
+#: rc_option_editor.cc:1038
msgid "Make periodic backups of the session file"
msgstr "Erstelle regelmäßig Backups der Projektdatei"
-#: rc_option_editor.cc:1045
+#: rc_option_editor.cc:1043
msgid "Session Management"
msgstr "Projektmanagement:"
-#: rc_option_editor.cc:1050
+#: rc_option_editor.cc:1048
msgid "Always copy imported files"
msgstr "Importierte Dateien immer kopieren"
-#: rc_option_editor.cc:1057
+#: rc_option_editor.cc:1055
msgid "Default folder for new sessions:"
msgstr "Standardordner für neue Projekte"
-#: rc_option_editor.cc:1065
+#: rc_option_editor.cc:1063
msgid "Maximum number of recent sessions"
msgstr "Maximale Anzahl kürzlich geöffneter Projekte"
-#: rc_option_editor.cc:1078
+#: rc_option_editor.cc:1076
msgid "Click gain level"
msgstr "Lautstärke für Klick"
-#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676
+#: rc_option_editor.cc:1081 route_time_axis.cc:215 route_time_axis.cc:676
msgid "Automation"
msgstr "Automationen"
-#: rc_option_editor.cc:1088
+#: rc_option_editor.cc:1086
msgid "Thinning factor (larger value => less data)"
msgstr "Ausdünnungsfaktor (größerer Wert => weniger Daten)"
-#: rc_option_editor.cc:1097
+#: rc_option_editor.cc:1095
msgid "Automation sampling interval (milliseconds)"
msgstr "Meßintervall für Automation (Millisekunden)"
-#: rc_option_editor.cc:1109
+#: rc_option_editor.cc:1107
msgid "Keep record-enable engaged on stop"
msgstr "Aufnahme bleibt nach Stopp aktiviert"
-#: rc_option_editor.cc:1118
+#: rc_option_editor.cc:1116
msgid "Stop recording when an xrun occurs"
msgstr "Aufnahme bei xrun stoppen"
-#: rc_option_editor.cc:1123
+#: rc_option_editor.cc:1121
msgid ""
"<b>When enabled</b> %1 will stop recording if an over- or underrun is "
"detected by the audio engine"
@@ -9069,15 +8947,15 @@ msgstr ""
"<b>Falls an</b>, wird %1 Aufnahmen bei Auftreten von Over- oder Underruns "
"abbrechen"
-#: rc_option_editor.cc:1129
+#: rc_option_editor.cc:1127
msgid "Create markers where xruns occur"
msgstr "Bei xrun Marker erzeugen"
-#: rc_option_editor.cc:1138
+#: rc_option_editor.cc:1136
msgid "Stop at the end of the session"
msgstr "Am Ende des Projektes anhalten"
-#: rc_option_editor.cc:1143
+#: rc_option_editor.cc:1141
msgid ""
"<b>When enabled</b> if %1 is <b>not recording</b>, it will stop the "
"transport when it reaches the current session end marker\n"
@@ -9090,11 +8968,11 @@ msgstr ""
"\n"
"<b>Falls aus</b> , wird Ardour am Ende des Projektes immer weiterlaufen"
-#: rc_option_editor.cc:1151
-msgid "Do seamless looping (not possible when slaved to MTC, JACK etc)"
-msgstr "Nahtlose Schleifen (nicht möglich wenn MTC, JACK etc. Master sind)"
+#: rc_option_editor.cc:1149
+msgid "Do seamless looping (not possible when slaved to MTC, LTC etc)"
+msgstr "Nahtlose Schleifen (nicht möglich, wenn an MTC, LTC o.ä. gekoppelt)"
-#: rc_option_editor.cc:1156
+#: rc_option_editor.cc:1154
msgid ""
"<b>When enabled</b> this will loop by reading ahead and wrapping around at "
"the loop point, preventing any need to do a transport locate at the end of "
@@ -9111,11 +8989,11 @@ msgstr ""
"Schleife springen, was oft einen hörbaren Klick oder kurze Verzögerung "
"verursacht"
-#: rc_option_editor.cc:1164
+#: rc_option_editor.cc:1162
msgid "Disable per-track record disarm while rolling"
msgstr "Während der Aufnahme Aufnahmestatus einzelner Spuren sperren"
-#: rc_option_editor.cc:1168
+#: rc_option_editor.cc:1166
msgid ""
"<b>When enabled</b> this will prevent you from accidentally stopping "
"specific tracks recording during a take"
@@ -9123,11 +9001,11 @@ msgstr ""
"<b>Wenn eingeschaltet</b> , hindert Sie dies daran, während eines "
"Aufnahmevorgangs unabsichtlich bei einzelnen Spuren die Aufnahme zu beenden"
-#: rc_option_editor.cc:1173
+#: rc_option_editor.cc:1171
msgid "12dB gain reduction during fast-forward and fast-rewind"
msgstr "Beim Spulen Pegel um 12dB absenken"
-#: rc_option_editor.cc:1177
+#: rc_option_editor.cc:1175
msgid ""
"This will reduce the unpleasant increase in perceived volume that occurs "
"when fast-forwarding or rewinding through some kinds of audio"
@@ -9135,19 +9013,19 @@ msgstr ""
"Dies wird die unangenehme Steigerung der wahrgenommenen Lautstärke "
"verringern, die bei manchem Material bei Vor/Rücklauf auftritt"
-#: rc_option_editor.cc:1181
+#: rc_option_editor.cc:1179
msgid "Sync/Slave"
msgstr "Sync/Slave"
-#: rc_option_editor.cc:1185
+#: rc_option_editor.cc:1183
msgid "External timecode source"
msgstr "Externe Timecode-Quelle"
-#: rc_option_editor.cc:1195
+#: rc_option_editor.cc:1193
msgid "Match session video frame rate to external timecode"
msgstr "Videoframerate des Projekts an externen Timecode anpassen"
-#: rc_option_editor.cc:1201
+#: rc_option_editor.cc:1199
msgid ""
"This option controls the value of the video frame rate <i>while chasing</i> "
"an external timecode source.\n"
@@ -9171,11 +9049,11 @@ msgstr ""
"wird zwischen den Standards der externen Quelle und des Projektes "
"konvertieren."
-#: rc_option_editor.cc:1211
+#: rc_option_editor.cc:1209
msgid "External timecode is sync locked"
msgstr "Externe Timecode-Quelle ist starr synchronisiert"
-#: rc_option_editor.cc:1217
+#: rc_option_editor.cc:1215
msgid ""
"<b>When enabled</b> indicates that the selected external timecode source "
"shares sync (Black &amp; Burst, Wordclock, etc) with the audio interface."
@@ -9183,11 +9061,11 @@ msgstr ""
"<b>Falls an</b>, zeigt dies an, daß die ausgewählte externe Timecode-Quelle "
"synchron zum Audio-Interface läuft (Black &amp; Burst, Wordclock, etc)."
-#: rc_option_editor.cc:1224
+#: rc_option_editor.cc:1222
msgid "Lock to 29.9700 fps instead of 30000/1001"
msgstr "Fest auf 29.9700 fps statt 30000/1001"
-#: rc_option_editor.cc:1230
+#: rc_option_editor.cc:1228
msgid ""
"<b>When enabled</b> the external timecode source is assumed to use 29.97 fps "
"instead of 30000/1001.\n"
@@ -9210,27 +9088,27 @@ msgstr ""
"widersprechend - da bei der Variante mit exakt 29.97 fps kein Timecode-Drift "
"auftritt.\n"
-#: rc_option_editor.cc:1240
+#: rc_option_editor.cc:1238
msgid "LTC Reader"
msgstr "LTC-Leser"
-#: rc_option_editor.cc:1244
+#: rc_option_editor.cc:1242
msgid "LTC incoming port"
msgstr "LTC Eingangsport"
-#: rc_option_editor.cc:1257
+#: rc_option_editor.cc:1255
msgid "LTC Generator"
msgstr "LTC-Generator"
-#: rc_option_editor.cc:1262
+#: rc_option_editor.cc:1260
msgid "Enable LTC generator"
msgstr "LTC-Generator aktivieren"
-#: rc_option_editor.cc:1269
+#: rc_option_editor.cc:1267
msgid "send LTC while stopped"
msgstr "LTC senden, wenn Transport steht"
-#: rc_option_editor.cc:1275
+#: rc_option_editor.cc:1273
msgid ""
"<b>When enabled</b> %1 will continue to send LTC information even when the "
"transport (playhead) is not moving"
@@ -9238,11 +9116,11 @@ msgstr ""
"<b>Falls an</b>, wird %1 weiterhin LTC-Information senden, sogar wenn der "
"Transport (Positionszeiger) stillsteht"
-#: rc_option_editor.cc:1281
+#: rc_option_editor.cc:1279
msgid "LTC generator level"
msgstr "LTC-Generator-Lautstärke"
-#: rc_option_editor.cc:1285
+#: rc_option_editor.cc:1283
msgid ""
"Specify the Peak Volume of the generated LTC signal in dbFS. A good value "
"is 0dBu ^= -18dbFS in an EBU calibrated system"
@@ -9250,108 +9128,108 @@ msgstr ""
"Geben Sie den Spitzenwert des erzeugten LTC-Signals in dbFS an. Ein guter "
"Wert für ein EBU-kalibriertes System ist 0dBu ^= -18dbFS"
-#: rc_option_editor.cc:1297
+#: rc_option_editor.cc:1295
msgid "Link selection of regions and tracks"
msgstr "Auswahl von Spuren und Regionen verbinden"
-#: rc_option_editor.cc:1305
+#: rc_option_editor.cc:1303
msgid "Move relevant automation when audio regions are moved"
msgstr "Verschiebe relevante Automationen mit Region"
-#: rc_option_editor.cc:1313
+#: rc_option_editor.cc:1311
msgid "Show meters on tracks in the editor"
msgstr "Aktiviere Pegelanzeigen im Editor"
-#: rc_option_editor.cc:1321
+#: rc_option_editor.cc:1319
msgid "Display master-meter in the toolbar"
msgstr "Master-Pegelanzeige in der Werkzeugleiste anzeigen"
-#: rc_option_editor.cc:1328
+#: rc_option_editor.cc:1326
msgid "Regions in active edit groups are edited together"
msgstr "Regionen der aktiven Bearbeitungsgruppen werden gemeinsam bearbeitet"
-#: rc_option_editor.cc:1329
+#: rc_option_editor.cc:1327
msgid "whenever they overlap in time"
msgstr "immer, wenn sie sich auf der Zeitachse überlappen"
-#: rc_option_editor.cc:1330
+#: rc_option_editor.cc:1328
msgid "only if they have identical length, position and origin"
msgstr "nur bei identischer Länge, Position und Herkunft"
-#: rc_option_editor.cc:1340
+#: rc_option_editor.cc:1338
msgid "Make rubberband selection rectangle snap to the grid"
msgstr "Gummiband-Auswahl an Raster ausrichten"
-#: rc_option_editor.cc:1348
+#: rc_option_editor.cc:1346
msgid "Show waveforms in regions"
msgstr "Zeige Wellenformen in Regionen"
-#: rc_option_editor.cc:1356
+#: rc_option_editor.cc:1354
msgid "Show gain envelopes in audio regions"
msgstr "Zeige Lautstärkekurven in Regionen an"
-#: rc_option_editor.cc:1357
+#: rc_option_editor.cc:1355
msgid "in all modes"
msgstr "in allen Modi"
-#: rc_option_editor.cc:1358
+#: rc_option_editor.cc:1356
msgid "only in region gain mode"
msgstr "nur im Region-Gain Modus"
-#: rc_option_editor.cc:1365
+#: rc_option_editor.cc:1363
msgid "Waveform scale"
msgstr "Wellenformskalierung"
-#: rc_option_editor.cc:1370
+#: rc_option_editor.cc:1368
msgid "linear"
msgstr "Linear"
-#: rc_option_editor.cc:1371
+#: rc_option_editor.cc:1369
msgid "logarithmic"
msgstr "Logarithmisch"
-#: rc_option_editor.cc:1377
+#: rc_option_editor.cc:1375
msgid "Waveform shape"
msgstr "Wellenform Anzeigeart"
-#: rc_option_editor.cc:1382
+#: rc_option_editor.cc:1380
msgid "traditional"
msgstr "Traditionell"
-#: rc_option_editor.cc:1383
+#: rc_option_editor.cc:1381
msgid "rectified"
msgstr "Rectified"
-#: rc_option_editor.cc:1390
+#: rc_option_editor.cc:1388
msgid "Show waveforms for audio while it is being recorded"
msgstr "Zeige bei Aufnahmen die Wellenformen des aufgenommenen Audiomaterials"
-#: rc_option_editor.cc:1398
+#: rc_option_editor.cc:1396
msgid "Show zoom toolbar"
msgstr "Zeige Zoom Toolbar"
-#: rc_option_editor.cc:1406
+#: rc_option_editor.cc:1404
msgid "Color regions using their track's color"
msgstr "Färbe Regionen in der Spurfarbe ein"
-#: rc_option_editor.cc:1414
+#: rc_option_editor.cc:1412
msgid "Update editor window during drags of the summary"
msgstr ""
"Aktualisiere das Editorfenster, während die Projektübersicht verändert wird"
-#: rc_option_editor.cc:1422
+#: rc_option_editor.cc:1420
msgid "Synchronise editor and mixer track order"
msgstr "Einheitliche Reihenfolge der Spuren im Editor und Mixer"
-#: rc_option_editor.cc:1430
+#: rc_option_editor.cc:1428
msgid "Synchronise editor and mixer selection"
msgstr "Synchronisiere Auswahl der Spuren im Editor und Mixer"
-#: rc_option_editor.cc:1437
+#: rc_option_editor.cc:1435
msgid "Name new markers"
msgstr "Neue Marker benennen"
-#: rc_option_editor.cc:1443
+#: rc_option_editor.cc:1441
msgid ""
"If enabled, popup a dialog when a new marker is created to allow its name to "
"be set as it is created.\n"
@@ -9363,241 +9241,245 @@ msgstr ""
"\n"
"Marker können jederzeit per Rechtsklick umbenannt werden"
-#: rc_option_editor.cc:1449
+#: rc_option_editor.cc:1447
msgid "Auto-scroll editor window when dragging near its edges"
msgstr "Bei Mausziehen nahe den Rändern das Editorfenster automatisch scrollen"
-#: rc_option_editor.cc:1456
+#: rc_option_editor.cc:1454
msgid "Buffering"
msgstr "Pufferung"
-#: rc_option_editor.cc:1464
+#: rc_option_editor.cc:1462
msgid "Record monitoring handled by"
msgstr "Aufnahmemonitoring wird verwaltet von"
-#: rc_option_editor.cc:1475
+#: rc_option_editor.cc:1468
+msgid "via Audio Driver"
+msgstr "via Audiotreiber"
+
+#: rc_option_editor.cc:1471
msgid "ardour"
msgstr "Ardour"
-#: rc_option_editor.cc:1476
+#: rc_option_editor.cc:1472
msgid "audio hardware"
msgstr "Audiohardware"
-#: rc_option_editor.cc:1483
+#: rc_option_editor.cc:1479
msgid "Tape machine mode"
msgstr "Bandmaschinen-Modus"
-#: rc_option_editor.cc:1488
+#: rc_option_editor.cc:1484
msgid "Connection of tracks and busses"
msgstr "Verbindung von Spuren und Bussen"
-#: rc_option_editor.cc:1493
+#: rc_option_editor.cc:1489
msgid "Auto-connect master/monitor busses"
msgstr "Master/Monitor-Busse automatisch verbinden"
-#: rc_option_editor.cc:1500
+#: rc_option_editor.cc:1496
msgid "Connect track inputs"
msgstr "Verbinde Spureingänge"
-#: rc_option_editor.cc:1505
+#: rc_option_editor.cc:1501
msgid "automatically to physical inputs"
msgstr "automatisch mit Audioeingängen"
-#: rc_option_editor.cc:1506 rc_option_editor.cc:1519
+#: rc_option_editor.cc:1502 rc_option_editor.cc:1515
msgid "manually"
msgstr "manuell"
-#: rc_option_editor.cc:1512
+#: rc_option_editor.cc:1508
msgid "Connect track and bus outputs"
msgstr "Verbinde Spur- und Busausgänge"
-#: rc_option_editor.cc:1517
+#: rc_option_editor.cc:1513
msgid "automatically to physical outputs"
msgstr "automatisch mit Audioausgängen"
-#: rc_option_editor.cc:1518
+#: rc_option_editor.cc:1514
msgid "automatically to master bus"
msgstr "automatisch mit dem Master-Bus"
-#: rc_option_editor.cc:1523
+#: rc_option_editor.cc:1519
msgid "Denormals"
msgstr "Denormals"
-#: rc_option_editor.cc:1528
+#: rc_option_editor.cc:1524
msgid "Use DC bias to protect against denormals"
msgstr "Nutze DC bias als Schutz vor Denormals"
-#: rc_option_editor.cc:1535
+#: rc_option_editor.cc:1531
msgid "Processor handling"
msgstr "Umgang des Prozessors mit Denormals"
-#: rc_option_editor.cc:1540
+#: rc_option_editor.cc:1536
msgid "no processor handling"
msgstr "nicht behandeln"
-#: rc_option_editor.cc:1545
+#: rc_option_editor.cc:1541
msgid "use FlushToZero"
msgstr "Benutze FlushToZero"
-#: rc_option_editor.cc:1549
+#: rc_option_editor.cc:1545
msgid "use DenormalsAreZero"
msgstr "Benutze DenormalsAreZero"
-#: rc_option_editor.cc:1553
+#: rc_option_editor.cc:1549
msgid "use FlushToZero and DenormalsAreZero"
msgstr "Benutze FlushToZero & DenormalsAreZero"
-#: rc_option_editor.cc:1563
+#: rc_option_editor.cc:1559
msgid "Silence plugins when the transport is stopped"
msgstr "Deaktiviere Plugins, wenn der Transport gestoppt ist."
-#: rc_option_editor.cc:1571
+#: rc_option_editor.cc:1567
msgid "Make new plugins active"
msgstr "Neue Plugins sind aktiv"
-#: rc_option_editor.cc:1579
+#: rc_option_editor.cc:1575
msgid "Enable automatic analysis of audio"
msgstr "Audiodaten automatisch analysieren"
-#: rc_option_editor.cc:1587
+#: rc_option_editor.cc:1583
msgid "Replicate missing region channels"
msgstr "Fehlende Kanäle von Regionen ersetzen"
-#: rc_option_editor.cc:1594 rc_option_editor.cc:1609 rc_option_editor.cc:1621
-#: rc_option_editor.cc:1633 rc_option_editor.cc:1645 rc_option_editor.cc:1649
-#: rc_option_editor.cc:1657 rc_option_editor.cc:1665 rc_option_editor.cc:1673
-#: rc_option_editor.cc:1675 rc_option_editor.cc:1683 rc_option_editor.cc:1691
-#: rc_option_editor.cc:1699
+#: rc_option_editor.cc:1590 rc_option_editor.cc:1605 rc_option_editor.cc:1617
+#: rc_option_editor.cc:1629 rc_option_editor.cc:1641 rc_option_editor.cc:1645
+#: rc_option_editor.cc:1653 rc_option_editor.cc:1661 rc_option_editor.cc:1669
+#: rc_option_editor.cc:1671 rc_option_editor.cc:1679 rc_option_editor.cc:1687
+#: rc_option_editor.cc:1695
msgid "Solo / mute"
msgstr "Solo / Mute"
-#: rc_option_editor.cc:1597
+#: rc_option_editor.cc:1593
msgid "Solo-in-place mute cut (dB)"
msgstr "Solo-in-Place Mute Dämpfung (dB)"
-#: rc_option_editor.cc:1604
+#: rc_option_editor.cc:1600
msgid "Solo controls are Listen controls"
msgstr "Solo-Schalter arbeiten als AFL/PFL"
-#: rc_option_editor.cc:1613
+#: rc_option_editor.cc:1609
msgid "Listen Position"
msgstr "Abhörpunkt"
-#: rc_option_editor.cc:1618
+#: rc_option_editor.cc:1614
msgid "after-fader (AFL)"
msgstr "After-Fader (AFL)"
-#: rc_option_editor.cc:1619
+#: rc_option_editor.cc:1615
msgid "pre-fader (PFL)"
msgstr "Pre-Fader (PFL)"
-#: rc_option_editor.cc:1625
+#: rc_option_editor.cc:1621
msgid "PFL signals come from"
msgstr "Abgreifpunkt der PFL Signale"
-#: rc_option_editor.cc:1630
+#: rc_option_editor.cc:1626
msgid "before pre-fader processors"
msgstr "Vor den Pre-Fader Prozessoren"
-#: rc_option_editor.cc:1631
+#: rc_option_editor.cc:1627
msgid "pre-fader but after pre-fader processors"
msgstr "Pre-Fader, aber nach den Prozessoren"
-#: rc_option_editor.cc:1637
+#: rc_option_editor.cc:1633
msgid "AFL signals come from"
msgstr "Abgreifpunkt der AFL Signale"
-#: rc_option_editor.cc:1642
+#: rc_option_editor.cc:1638
msgid "immediately post-fader"
msgstr "Direkt nach dem Fader"
-#: rc_option_editor.cc:1643
+#: rc_option_editor.cc:1639
msgid "after post-fader processors (before pan)"
msgstr "Nach den Post-Fader Prozessoren (vor Pan)"
-#: rc_option_editor.cc:1652
+#: rc_option_editor.cc:1648
msgid "Exclusive solo"
msgstr "Exclusives Solo"
-#: rc_option_editor.cc:1660
+#: rc_option_editor.cc:1656
msgid "Show solo muting"
msgstr "Solo auf anderen Kanälen als Mute anzeigen"
-#: rc_option_editor.cc:1668
+#: rc_option_editor.cc:1664
msgid "Soloing overrides muting"
msgstr "Solo ist trotz Mute hörbar"
-#: rc_option_editor.cc:1673
+#: rc_option_editor.cc:1669
msgid "Default track / bus muting options"
msgstr "Standardeinstellungen für Mute von Spuren / Bussen"
-#: rc_option_editor.cc:1678
+#: rc_option_editor.cc:1674
msgid "Mute affects pre-fader sends"
msgstr "Mute schaltet Pre-Fader Sends stumm"
-#: rc_option_editor.cc:1686
+#: rc_option_editor.cc:1682
msgid "Mute affects post-fader sends"
msgstr "Mute schaltet Post-Fader Sends stumm"
-#: rc_option_editor.cc:1694
+#: rc_option_editor.cc:1690
msgid "Mute affects control outputs"
msgstr "Mute schaltet Abhörausgänge stumm"
-#: rc_option_editor.cc:1702
+#: rc_option_editor.cc:1698
msgid "Mute affects main outputs"
msgstr "Mute schaltet Hauptausgänge stumm"
-#: rc_option_editor.cc:1718
+#: rc_option_editor.cc:1714
msgid "Send MIDI Time Code"
msgstr "Sende MIDI Time Code"
-#: rc_option_editor.cc:1726
+#: rc_option_editor.cc:1722
msgid "Percentage either side of normal transport speed to transmit MTC"
msgstr ""
"Prozentzahl beiderseits der normalen Transportgeschwindigkeit, bis zu der "
"MTC übertragen wird"
-#: rc_option_editor.cc:1735
+#: rc_option_editor.cc:1731
msgid "Obey MIDI Machine Control commands"
msgstr "MIDI Machine Control Commands empfangen"
-#: rc_option_editor.cc:1743
+#: rc_option_editor.cc:1739
msgid "Send MIDI Machine Control commands"
msgstr "MIDI Machine Control Commands senden"
-#: rc_option_editor.cc:1751
+#: rc_option_editor.cc:1747
msgid "Send MIDI control feedback"
msgstr "MIDI Control Feedback senden"
-#: rc_option_editor.cc:1759
+#: rc_option_editor.cc:1755
msgid "Inbound MMC device ID"
msgstr "ID des eingehenden MMC-Geräts"
-#: rc_option_editor.cc:1768
+#: rc_option_editor.cc:1764
msgid "Outbound MMC device ID"
msgstr "ID des ausgehenden MMC-Geräts"
-#: rc_option_editor.cc:1777
+#: rc_option_editor.cc:1773
msgid "Initial program change"
msgstr "Erstmaliger Programmwechsel"
-#: rc_option_editor.cc:1786
+#: rc_option_editor.cc:1782
msgid "Display first MIDI bank/program as 0"
msgstr "Erste(s) MIDI Bank/Programm als 0 anzeigen"
-#: rc_option_editor.cc:1794
+#: rc_option_editor.cc:1790
msgid "Never display periodic MIDI messages (MTC, MIDI Clock)"
msgstr "Periodische MIDI Nachrichten nie anzeigen (MTC, MIDI Clock)"
-#: rc_option_editor.cc:1802
+#: rc_option_editor.cc:1798
msgid "Sound MIDI notes as they are selected"
msgstr "MIDI Noten ertönen bei Auswahl"
-#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822
+#: rc_option_editor.cc:1806 rc_option_editor.cc:1816 rc_option_editor.cc:1818
msgid "User interaction"
msgstr "Benutzerinteraktion"
-#: rc_option_editor.cc:1813
+#: rc_option_editor.cc:1809
msgid ""
"Use translations of %1 messages\n"
" <i>(requires a restart of %1 to take effect)</i>\n"
@@ -9607,131 +9489,131 @@ msgstr ""
" <i>(erfordert Neustart von %1)</i>\n"
" <i>(falls für Ihre gewünschte Sprache verfügbar)</i>"
-#: rc_option_editor.cc:1820
+#: rc_option_editor.cc:1816
msgid "Keyboard"
msgstr "Tastatur"
-#: rc_option_editor.cc:1830
+#: rc_option_editor.cc:1826
msgid "Control surface remote ID"
msgstr "Remote ID des Eingabegeräts"
-#: rc_option_editor.cc:1835
+#: rc_option_editor.cc:1831
msgid "assigned by user"
msgstr "vom Benutzer festgelegt"
-#: rc_option_editor.cc:1836
+#: rc_option_editor.cc:1832
msgid "follows order of mixer"
msgstr "folgt Reihenfolge im Mixer"
-#: rc_option_editor.cc:1837
+#: rc_option_editor.cc:1833
msgid "follows order of editor"
msgstr "folgt Reihenfolge im Editor"
-#: rc_option_editor.cc:1846 rc_option_editor.cc:1854 rc_option_editor.cc:1864
-#: rc_option_editor.cc:1885 rc_option_editor.cc:1894 rc_option_editor.cc:1902
-#: rc_option_editor.cc:1916 rc_option_editor.cc:1935 rc_option_editor.cc:1951
-#: rc_option_editor.cc:1967 rc_option_editor.cc:1981 rc_option_editor.cc:1995
-#: rc_option_editor.cc:1997
+#: rc_option_editor.cc:1842 rc_option_editor.cc:1850 rc_option_editor.cc:1860
+#: rc_option_editor.cc:1881 rc_option_editor.cc:1890 rc_option_editor.cc:1898
+#: rc_option_editor.cc:1912 rc_option_editor.cc:1931 rc_option_editor.cc:1947
+#: rc_option_editor.cc:1963 rc_option_editor.cc:1977 rc_option_editor.cc:1991
+#: rc_option_editor.cc:1993
msgid "Preferences|GUI"
msgstr "GUI"
-#: rc_option_editor.cc:1849
+#: rc_option_editor.cc:1845
msgid "Graphically indicate mouse pointer hovering over various widgets"
msgstr "Mouseover-Effekt über verschiedenen Anzeigen"
-#: rc_option_editor.cc:1857
+#: rc_option_editor.cc:1853
msgid "Show tooltips if mouse hovers over a control"
msgstr "Zeige Tooltips, wenn die Maus über einem Element schwebt"
-#: rc_option_editor.cc:1867
+#: rc_option_editor.cc:1863
msgid "GUI"
msgstr "GUI"
-#: rc_option_editor.cc:1870
+#: rc_option_editor.cc:1866
msgid "update transport clock display every 40ms instead of every 100ms"
msgstr "Auffrischen der Transport-Zeitanzeige alle 40ms statt 100ms"
-#: rc_option_editor.cc:1887
+#: rc_option_editor.cc:1883
msgid "Mixer Strip"
msgstr "Anzeige im Channel strip"
-#: rc_option_editor.cc:1897
+#: rc_option_editor.cc:1893
msgid "Use narrow strips in the mixer by default"
msgstr "Standardmäßig schmale Mixer-Kanalzüge verwenden"
-#: rc_option_editor.cc:1906
+#: rc_option_editor.cc:1902
msgid "Peak hold time"
msgstr "Haltezeit für Spitzenwert"
-#: rc_option_editor.cc:1912
+#: rc_option_editor.cc:1908
msgid "short"
msgstr "Kurz"
-#: rc_option_editor.cc:1913
+#: rc_option_editor.cc:1909
msgid "medium"
msgstr "Mittel"
-#: rc_option_editor.cc:1914
+#: rc_option_editor.cc:1910
msgid "long"
msgstr "Lange"
-#: rc_option_editor.cc:1920
+#: rc_option_editor.cc:1916
msgid "DPM fall-off"
msgstr "Abfall der digitalen Pegelanzeige"
-#: rc_option_editor.cc:1926
+#: rc_option_editor.cc:1922
msgid "slowest [6.6dB/sec]"
msgstr "am langsamsten [6.6dB/sec]"
-#: rc_option_editor.cc:1927
+#: rc_option_editor.cc:1923
msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)"
msgstr "langsam [8.6dB/sec] (BBC PPM, EBU PPM)"
-#: rc_option_editor.cc:1928
+#: rc_option_editor.cc:1924
msgid "slowish [12.0dB/sec] (DIN)"
msgstr "etwas langsam [12.0dB/sec] (DIN)"
-#: rc_option_editor.cc:1929
+#: rc_option_editor.cc:1925
msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)"
msgstr "mäßig [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)"
-#: rc_option_editor.cc:1930
+#: rc_option_editor.cc:1926
msgid "medium [20dB/sec]"
msgstr "mittel [20dB/sec]"
-#: rc_option_editor.cc:1931
+#: rc_option_editor.cc:1927
msgid "fast [32dB/sec]"
msgstr "schnell [32dB/sec]"
-#: rc_option_editor.cc:1932
+#: rc_option_editor.cc:1928
msgid "faster [46dB/sec]"
msgstr "schneller [46dB/sec]"
-#: rc_option_editor.cc:1933
+#: rc_option_editor.cc:1929
msgid "fastest [70dB/sec]"
msgstr "am schnellsten [70dB/sec]"
-#: rc_option_editor.cc:1939
+#: rc_option_editor.cc:1935
msgid "Meter line-up level; 0dBu"
msgstr "Ausrichtung der Pegelanzeige; 0dBu"
-#: rc_option_editor.cc:1944 rc_option_editor.cc:1960
+#: rc_option_editor.cc:1940 rc_option_editor.cc:1956
msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)"
msgstr "-24dBFS (SMPTE US: 4dBu = -20dBFS)"
-#: rc_option_editor.cc:1945 rc_option_editor.cc:1961
+#: rc_option_editor.cc:1941 rc_option_editor.cc:1957
msgid "-20dBFS (SMPTE RP.0155)"
msgstr "-20dBFS (SMPTE RP.0155)"
-#: rc_option_editor.cc:1946 rc_option_editor.cc:1962
+#: rc_option_editor.cc:1942 rc_option_editor.cc:1958
msgid "-18dBFS (EBU, BBC)"
msgstr "-18dBFS (EBU, BBC)"
-#: rc_option_editor.cc:1947 rc_option_editor.cc:1963
+#: rc_option_editor.cc:1943 rc_option_editor.cc:1959
msgid "-15dBFS (DIN)"
msgstr "-15dBFS (DIN)"
-#: rc_option_editor.cc:1949
+#: rc_option_editor.cc:1945
msgid ""
"Configure meter-marks and color-knee point for dBFS scale DPM, set reference "
"level for IEC1/Nordic, IEC2 PPM and VU meter."
@@ -9739,39 +9621,39 @@ msgstr ""
"Konfiguriere Skalierung und Farbschwellwert für DPM mit dBFS-Skala, "
"setzeReferenzpegel für IEC1/Nordisch, IEC2 PPM und VU Pegelanzeigen."
-#: rc_option_editor.cc:1955
+#: rc_option_editor.cc:1951
msgid "IEC1/DIN Meter line-up level; 0dBu"
msgstr "Ausrichtung der IEC1/DIN Pegelanzeige; 0dBu"
-#: rc_option_editor.cc:1965
+#: rc_option_editor.cc:1961
msgid "Reference level for IEC1/DIN meter."
msgstr "Referenzpegel für IEC1/DIN Pegelanzeige."
-#: rc_option_editor.cc:1971
+#: rc_option_editor.cc:1967
msgid "VU Meter standard"
msgstr "Standard für VU-Pegelanzeige"
-#: rc_option_editor.cc:1976
+#: rc_option_editor.cc:1972
msgid "0VU = -2dBu (France)"
msgstr "0VU = -2dBu (Frankreich)"
-#: rc_option_editor.cc:1977
+#: rc_option_editor.cc:1973
msgid "0VU = 0dBu (North America, Australia)"
msgstr "0VU = 0dBu (Nordamerika, Australien)"
-#: rc_option_editor.cc:1978
+#: rc_option_editor.cc:1974
msgid "0VU = +4dBu (standard)"
msgstr "0VU = +4dBu (Standard)"
-#: rc_option_editor.cc:1979
+#: rc_option_editor.cc:1975
msgid "0VU = +8dBu"
msgstr "0VU = +8dBu"
-#: rc_option_editor.cc:1985
+#: rc_option_editor.cc:1981
msgid "Peak threshold [dBFS]"
msgstr "Schwelle für Spitzenwert [dBFS]"
-#: rc_option_editor.cc:1993
+#: rc_option_editor.cc:1989
msgid ""
"Specify the audio signal level in dbFS at and above which the meter-peak "
"indicator will flash red."
@@ -9779,7 +9661,7 @@ msgstr ""
"Geben Sie den Signalpegel in dbFS an, bei dessen Erreichen oder "
"Ãœberschreitung die Spitzenwertanzeige in der Pegelanzeige rot blinkt"
-#: rc_option_editor.cc:2000
+#: rc_option_editor.cc:1996
msgid "LED meter style"
msgstr "Pegelanzeigen im LED-Stil"
@@ -10496,6 +10378,118 @@ msgstr "Projektordner"
msgid "Send "
msgstr "Send "
+#: session_dialog.cc:66
+msgid "Session Setup"
+msgstr "Projekteinrichtung"
+
+#: session_dialog.cc:71
+msgid "Advanced options ..."
+msgstr "Erweiterte Einstellungen..."
+
+#: session_dialog.cc:247
+msgid "New Session"
+msgstr "Neues Projekt"
+
+#: session_dialog.cc:284
+msgid "Check the website for more..."
+msgstr "Informieren Sie sich auf der Webseite weiter..."
+
+#: session_dialog.cc:287
+msgid "Click to open the program website in your web browser"
+msgstr "Klicken Sie, um die Webseite in Ihrem Web-Browse zu öffnen"
+
+#: session_dialog.cc:307
+msgid "Sample Rate"
+msgstr "Samplerate"
+
+#: session_dialog.cc:308
+msgid "Disk Format"
+msgstr "Dateiformat"
+
+#: session_dialog.cc:326
+msgid "Select session file"
+msgstr "Projektdatei auswählen"
+
+#: session_dialog.cc:341
+msgid "Other Sessions"
+msgstr "Andere Projekte"
+
+#: session_dialog.cc:367
+msgid "Open"
+msgstr "Öffnen"
+
+#: session_dialog.cc:434
+msgid "Session name:"
+msgstr "Projektname:"
+
+#: session_dialog.cc:456
+msgid "Create session folder in:"
+msgstr "Ort des Projektverzeichnisses:"
+
+#: session_dialog.cc:479
+msgid "Select folder for session"
+msgstr "Ordner für Projekt wählen"
+
+#: session_dialog.cc:508
+msgid "Use this template"
+msgstr "Diese Vorlage verwenden"
+
+#: session_dialog.cc:511
+msgid "no template"
+msgstr "keine Vorlage"
+
+#: session_dialog.cc:643 session_dialog.cc:675
+msgid "32 bit float"
+msgstr "32 Bit float"
+
+#: session_dialog.cc:646 session_dialog.cc:678
+msgid "24 bit"
+msgstr "24 Bit"
+
+#: session_dialog.cc:649 session_dialog.cc:681
+msgid "16 bit"
+msgstr "16 Bit"
+
+#: session_dialog.cc:720 session_dialog.cc:721 session_dialog.cc:722
+msgid "channels"
+msgstr "Kanäle"
+
+#: session_dialog.cc:736
+msgid "<b>Busses</b>"
+msgstr "<b>Busse</b>"
+
+#: session_dialog.cc:737
+msgid "<b>Inputs</b>"
+msgstr "<b>Eingänge</b>"
+
+#: session_dialog.cc:738
+msgid "<b>Outputs</b>"
+msgstr "<b>Ausgänge</b>"
+
+#: session_dialog.cc:746
+msgid "Create master bus"
+msgstr "Master-Bus erstellen"
+
+#: session_dialog.cc:756
+msgid "Automatically connect to physical inputs"
+msgstr "Automatisch mit Audioeingängen verbinden"
+
+#: session_dialog.cc:763 session_dialog.cc:822
+msgid "Use only"
+msgstr "Benutze nur"
+
+#: session_dialog.cc:816
+msgid "Automatically connect outputs"
+msgstr "Ausgänge automatisch verbinden"
+
+#: session_dialog.cc:838
+msgid "... to master bus"
+msgstr "... mit dem Master-Bus"
+
+#: session_dialog.cc:848
+msgid "... to physical outputs"
+msgstr "... mit den Audioausgängen"
+
#: session_import_dialog.cc:64
msgid "Import from Session"
msgstr "Aus Projekt importieren"
@@ -11387,14 +11381,6 @@ msgid "Azimuth:"
msgstr "Azimut:"
#: startup.cc:72
-msgid "Create a new session"
-msgstr "Neues Projekt erzeugen"
-
-#: startup.cc:73
-msgid "Open an existing session"
-msgstr "Vorhandenes Projekt öffnen"
-
-#: startup.cc:74
msgid ""
"Use an external mixer or the hardware mixer of your audio interface.\n"
"%1 will play NO role in monitoring"
@@ -11402,15 +11388,11 @@ msgstr ""
"Verwende einen externen Mixer oder den Hardwaremixer der Audiohardware.\n"
"%1 wird das Monitoring NICHT übernehmen."
-#: startup.cc:76
+#: startup.cc:74
msgid "Ask %1 to play back material as it is being recorded"
msgstr "%1 soll laufende Aufnahmen wiedergeben"
-#: startup.cc:79
-msgid "I'd like more options for this session"
-msgstr "Erweiterte Optionen für dieses Projekt"
-
-#: startup.cc:194
+#: startup.cc:143
msgid ""
"<b>Welcome to this BETA release of Ardour %1</b>\n"
"\n"
@@ -11462,15 +11444,11 @@ msgstr ""
"\n"
" http://ardour.org/support\n"
-#: startup.cc:218
+#: startup.cc:167
msgid "This is a BETA RELEASE"
msgstr "Dies ist ein BETA RELEASE"
-#: startup.cc:324
-msgid "Audio / MIDI Setup"
-msgstr "Audio / MIDI Einstellungen"
-
-#: startup.cc:336
+#: startup.cc:176
msgid ""
"<span size=\"larger\">%1 is a digital audio workstation. You can use it to "
"record, edit and mix multi-track audio. You can produce your own CDs, mix "
@@ -11487,15 +11465,15 @@ msgstr ""
"Es gibt ein paar Dinge, die vor dem ersten Programmstart konfiguriert werden "
"müssen.</span>"
-#: startup.cc:362
+#: startup.cc:202
msgid "Welcome to %1"
msgstr "Willkommen zu %1"
-#: startup.cc:385
+#: startup.cc:225
msgid "Default folder for %1 sessions"
msgstr "Standardordner für %1 Projekte"
-#: startup.cc:391
+#: startup.cc:231
msgid ""
"Each project that you work on with %1 has its own folder.\n"
"These can require a lot of disk space if you are recording audio.\n"
@@ -11512,11 +11490,11 @@ msgstr ""
"<i>(Neue Projekte können überall abgespeichert werden, dies ist nur die "
"Vorgabe)</i>"
-#: startup.cc:415
+#: startup.cc:253
msgid "Default folder for new sessions"
msgstr "Standardordner für neue Projekte"
-#: startup.cc:436
+#: startup.cc:274
msgid ""
"While recording instruments or vocals, you probably want to listen to the\n"
"signal as well as record it. This is called \"monitoring\". There are\n"
@@ -11541,15 +11519,15 @@ msgstr ""
"\n"
"<i>If you do not understand what this is about, just accept the default.</i>"
-#: startup.cc:457
+#: startup.cc:295
msgid "Monitoring Choices"
msgstr "Auswahl des Monitoring"
-#: startup.cc:480
+#: startup.cc:318
msgid "Use a Master bus directly"
msgstr "Nutze den Master-Bus direkt"
-#: startup.cc:482
+#: startup.cc:320
msgid ""
"Connect the Master bus directly to your hardware outputs. This is preferable "
"for simple usage."
@@ -11557,11 +11535,11 @@ msgstr ""
"Verbinde den Master-Bus direkt mit den Audioausgängen. Wird für "
"einfacheAnwendungen empfohlen."
-#: startup.cc:491
+#: startup.cc:329
msgid "Use an additional Monitor bus"
msgstr "Nutze einen zusätzlichen Monitor-Bus"
-#: startup.cc:494
+#: startup.cc:332
msgid ""
"Use a Monitor bus between Master bus and hardware outputs for \n"
"greater control in monitoring without affecting the mix."
@@ -11569,7 +11547,7 @@ msgstr ""
"Nutze einen Monitor-Bus zwischen Master-Bus und Audioausgängen, um mehr\n"
"Möglichkeiten für das Monitoring zu bekommen, ohne den Mix zu beeinflussen."
-#: startup.cc:516
+#: startup.cc:354
msgid ""
"<i>You can change this preference at any time via the Preferences dialog.\n"
"You can also add or remove the monitor section to/from any session.</i>\n"
@@ -11583,110 +11561,10 @@ msgstr ""
"\n"
"</i>Im Zweifelsfall akzeptieren Sie die Voreinstellung.</i>"
-#: startup.cc:527
+#: startup.cc:365
msgid "Monitor Section"
msgstr "Monitorsektion"
-#: startup.cc:573
-msgid "Check the website for more..."
-msgstr "Informieren Sie sich auf der Webseite weiter..."
-
-#: startup.cc:576
-msgid "Click to open the program website in your web browser"
-msgstr "Klicken Sie, um die Webseite in Ihrem Web-Browse zu öffnen"
-
-#: startup.cc:729
-msgid "Open"
-msgstr "Öffnen"
-
-#: startup.cc:775
-msgid "Session name:"
-msgstr "Projektname:"
-
-#: startup.cc:798
-msgid "Create session folder in:"
-msgstr "Ort des Projektverzeichnisses:"
-
-#: startup.cc:821
-msgid "Select folder for session"
-msgstr "Ordner für Projekt wählen"
-
-#: startup.cc:853
-msgid "Use this template"
-msgstr "Diese Vorlage verwenden"
-
-#: startup.cc:856
-msgid "no template"
-msgstr "keine Vorlage"
-
-#: startup.cc:884
-msgid "Use an existing session as a template:"
-msgstr "Ein vorhandenes Projekt als Vorlage verwenden:"
-
-#: startup.cc:896
-msgid "Select template"
-msgstr "Vorlage auswählen"
-
-#: startup.cc:922
-msgid "New Session"
-msgstr "Neues Projekt"
-
-#: startup.cc:1077
-msgid "Select session file"
-msgstr "Projektdatei auswählen"
-
-#: startup.cc:1093
-msgid "Browse:"
-msgstr "Durchsuchen:"
-
-#: startup.cc:1102
-msgid "Select a session"
-msgstr "Projekt auswählen"
-
-#: startup.cc:1129 startup.cc:1130 startup.cc:1131
-msgid "channels"
-msgstr "Kanäle"
-
-#: startup.cc:1145
-msgid "<b>Busses</b>"
-msgstr "<b>Busse</b>"
-
-#: startup.cc:1146
-msgid "<b>Inputs</b>"
-msgstr "<b>Eingänge</b>"
-
-#: startup.cc:1147
-msgid "<b>Outputs</b>"
-msgstr "<b>Ausgänge</b>"
-
-#: startup.cc:1155
-msgid "Create master bus"
-msgstr "Master-Bus erstellen"
-
-#: startup.cc:1165
-msgid "Automatically connect to physical inputs"
-msgstr "Automatisch mit Audioeingängen verbinden"
-
-#: startup.cc:1172 startup.cc:1231
-msgid "Use only"
-msgstr "Benutze nur"
-
-#: startup.cc:1225
-msgid "Automatically connect outputs"
-msgstr "Ausgänge automatisch verbinden"
-
-#: startup.cc:1247
-msgid "... to master bus"
-msgstr "... mit dem Master-Bus"
-
-#: startup.cc:1257
-msgid "... to physical outputs"
-msgstr "... mit den Audioausgängen"
-
-#: startup.cc:1307
-msgid "Advanced Session Options"
-msgstr "Erweiterte Einstellungen"
-
#: step_entry.cc:59
msgid "Step Entry: %1"
msgstr "Eingabemodus (Step Entry): %1"
@@ -12364,23 +12242,23 @@ msgstr ""
msgid "Config file %1 not saved"
msgstr "Konfigurationsdatei %1 nicht gespeichert"
-#: utils.cc:110 utils.cc:153
+#: utils.cc:111 utils.cc:154
msgid "bad XPM header %1"
msgstr "Fehlerhafter XPM Header %1"
-#: utils.cc:292 utils.cc:324
+#: utils.cc:293 utils.cc:325
msgid "missing RGBA style for \"%1\""
msgstr "Fehlender RGBA Style für \"%1\""
-#: utils.cc:591
+#: utils.cc:598
msgid "cannot find XPM file for %1"
msgstr "Konnte XPM-Datei für %1 nicht finden"
-#: utils.cc:617
+#: utils.cc:624
msgid "cannot find icon image for %1 using %2"
msgstr "Konnte Icon-Bild für %1 unter %2 nicht finden"
-#: utils.cc:632
+#: utils.cc:639
msgid "Caught exception while loading icon named %1"
msgstr ""
"Während des Ladens des Icons mit dem Namen %1 trat ein Ausnahmefehler auf"
@@ -12809,51 +12687,55 @@ msgstr "von 00:00:00:00 bis Videoende"
msgid "from the video's start to the video's end"
msgstr "von Videostart bis Videoende"
-#: export_video_dialog.cc:184
+#: export_video_dialog.cc:154
+msgid "Selected range"
+msgstr "Ausgewählter Bereich"
+
+#: export_video_dialog.cc:190
msgid "<b>Settings:</b>"
msgstr "<b>Einstellungen:</b>"
-#: export_video_dialog.cc:192
+#: export_video_dialog.cc:198
msgid "Range:"
msgstr "Bereich:"
-#: export_video_dialog.cc:195
+#: export_video_dialog.cc:201
msgid "Preset:"
msgstr "Preset:"
-#: export_video_dialog.cc:198
+#: export_video_dialog.cc:204
msgid "Video Codec:"
msgstr "Videocodec:"
-#: export_video_dialog.cc:201
+#: export_video_dialog.cc:207
msgid "Video KBit/s:"
msgstr "Video KBit/s:"
-#: export_video_dialog.cc:204
+#: export_video_dialog.cc:210
msgid "Audio Codec:"
msgstr "Audiocodec:"
-#: export_video_dialog.cc:207
+#: export_video_dialog.cc:213
msgid "Audio KBit/s:"
msgstr "Audio KBit/s:"
-#: export_video_dialog.cc:210
+#: export_video_dialog.cc:216
msgid "Audio Samplerate:"
msgstr "Audiosamplerate:"
-#: export_video_dialog.cc:387
+#: export_video_dialog.cc:392
msgid "Normalizing audio"
msgstr "Audio normalisieren"
-#: export_video_dialog.cc:391
+#: export_video_dialog.cc:396
msgid "Exporting audio"
msgstr "Exportiere Audio"
-#: export_video_dialog.cc:437
+#: export_video_dialog.cc:442
msgid "Exporting Audio..."
msgstr "Exportiere Audio..."
-#: export_video_dialog.cc:494
+#: export_video_dialog.cc:499
msgid ""
"Export Video: Cannot query duration of video-file, using duration from "
"timeline instead."
@@ -12861,33 +12743,33 @@ msgstr ""
"Exportiere Video: Kann die Dauer der Videodatei nicht eruieren, verwende "
"statt dessen die Dauer aus der Zeitleiste."
-#: export_video_dialog.cc:523
+#: export_video_dialog.cc:533
msgid "Export Video: No Master Out Ports to Connect for Audio Export"
msgstr ""
"Exportiere Video: Keine Master-Ausgangsports zum Verbinden für den "
"Audioexport"
-#: export_video_dialog.cc:562
+#: export_video_dialog.cc:572
msgid "Encoding Video..."
msgstr "Enkodiere Video..."
-#: export_video_dialog.cc:581
+#: export_video_dialog.cc:591
msgid "Export Video: Video input file cannot be read."
msgstr "Exportiere Video: Die Videoquelldatei kann nicht gelesen werden."
-#: export_video_dialog.cc:679
+#: export_video_dialog.cc:684
msgid "Encoding Video.. Pass 1/2"
msgstr "Kodiere Video.. Durchgang 1/2"
-#: export_video_dialog.cc:691
+#: export_video_dialog.cc:696
msgid "Encoding Video.. Pass 2/2"
msgstr "Kodiere Video.. Durchgang 2/2"
-#: export_video_dialog.cc:779
+#: export_video_dialog.cc:803
msgid "Transcoding failed."
msgstr "Transkodieren fehlgeschlagen."
-#: export_video_dialog.cc:948 export_video_dialog.cc:968
+#: export_video_dialog.cc:972 export_video_dialog.cc:992
msgid "Save Exported Video File"
msgstr "Sichere exportierte Videodatei"
@@ -12920,6 +12802,286 @@ msgstr ""
"\n"
"Handbuch im Browser öffnen? "
+#~ msgid "Click the Refresh button to try again."
+#~ msgstr "Klicken Sie auf Aktualisieren, um es erneut zu versuchen."
+
+#~ msgid "JACK"
+#~ msgstr "JACK"
+
+#~ msgid "Reconnect"
+#~ msgstr "Verbinde neu"
+
+#~ msgid "Window|Audio/MIDI Setup"
+#~ msgstr "Audio/MIDI Einstellungen"
+
+#~ msgid "JACK Sampling Rate and Latency"
+#~ msgstr "JACK Samplerate und Latenz"
+
+#~ msgid "Launch Control App"
+#~ msgstr "Starte Steuerungsprogramm"
+
+#~ msgid ""
+#~ "1. <span weight=\"bold\">Turn down the volume on your hardware to a very "
+#~ "low level.</span>\n"
+#~ "\n"
+#~ "2. Connect the two channels that you select below using either a cable or "
+#~ "(less ideally) a speaker and microphone.\n"
+#~ "\n"
+#~ "3. Once the channels are connected, click the \"Measure latency\" "
+#~ "button.\n"
+#~ "\n"
+#~ "4. When satisfied with the results, click the \"Use results\" button."
+#~ msgstr ""
+#~ "1. <span weight=\"bold\">Stellen Sie die Lautstärke ihrer Hardware auf "
+#~ "einen sehr leisen Pegel.</span>\n"
+#~ "\n"
+#~ "2. Verbinden Sie die zwei Kanäle, die Sie unten auswählen, entweder per "
+#~ "Kabel oder (weniger ideal) per Lautsprecher und Mikrophon.\n"
+#~ "\n"
+#~ "3. Klicken Sie den Knopf \"Latenz messen\".\n"
+#~ "\n"
+#~ "4. Wenn Sie mit den Ergebnissen zufrieden sind, klicken Sie den Knopf "
+#~ "\"Benutze Egebnisse\"."
+
+#~ msgid ""
+#~ "There are several possible reasons:\n"
+#~ "\n"
+#~ "1) JACK is not running.\n"
+#~ "2) JACK is running as another user, perhaps root.\n"
+#~ "3) There is already another client called \"%1\".\n"
+#~ "\n"
+#~ "Please consider the possibilities, and perhaps (re)start JACK."
+#~ msgstr ""
+#~ "Dafür kann es verschiedene Gründe geben:\n"
+#~ "\n"
+#~ "1) JACK läuft nicht.\n"
+#~ "2) JACK wurde unter einem anderen Benutzer gestartet, möglicherweise als "
+#~ "root.\n"
+#~ "3) Es gibt bereits einen anderen Client mit der Bezeichnung \"%1\".\n"
+#~ "\n"
+#~ "Betrachten Sie bitte diese Möglichkeiten und starten Sie ggf. JACK neu."
+
+#~ msgid "Create a new session"
+#~ msgstr "Neues Projekt erzeugen"
+
+#~ msgid "Open an existing session"
+#~ msgstr "Vorhandenes Projekt öffnen"
+
+#~ msgid "I'd like more options for this session"
+#~ msgstr "Erweiterte Optionen für dieses Projekt"
+
+#~ msgid "Use an existing session as a template:"
+#~ msgstr "Ein vorhandenes Projekt als Vorlage verwenden:"
+
+#~ msgid "Select template"
+#~ msgstr "Vorlage auswählen"
+
+#~ msgid "Browse:"
+#~ msgstr "Durchsuchen:"
+
+#~ msgid "Select a session"
+#~ msgstr "Projekt auswählen"
+
+#~ msgid "Playback/recording on 1 device"
+#~ msgstr "Wiedergabe/Aufnahme mit einem Gerät"
+
+#~ msgid "Playback/recording on 2 devices"
+#~ msgstr "Wiedergabe/Aufnahme mit zwei Geräten"
+
+#~ msgid "Playback only"
+#~ msgstr "Nur Wiedergabe"
+
+#~ msgid "Recording only"
+#~ msgstr "Nur Aufnahme"
+
+#~ msgid "Realtime"
+#~ msgstr "Realtime"
+
+#~ msgid "Starting audio engine"
+#~ msgstr "Starte Audio-Engine"
+
+#~ msgid "disconnected"
+#~ msgstr "getrennt"
+
+#~ msgid "Unable to start the session running"
+#~ msgstr "Konnte das aktuelle Projekt nicht starten"
+
+#~ msgid "Do not lock memory"
+#~ msgstr "Speicherzugriff nicht sperren"
+
+#~ msgid "Unlock memory"
+#~ msgstr "Speicherzugriff öffnen"
+
+#~ msgid "No zombies"
+#~ msgstr "Keine Zombies (Soft Mode)"
+
+#~ msgid "Provide monitor ports"
+#~ msgstr "Monitor-Ports erstellen"
+
+#~ msgid "H/W monitoring"
+#~ msgstr "Hardware Monitoring"
+
+#~ msgid "H/W metering"
+#~ msgstr "Hardware-Pegelanzeige"
+
+#~ msgid "Verbose output"
+#~ msgstr "Ausführliche Statusmeldungen"
+
+#~ msgid "8000Hz"
+#~ msgstr "8000 Hz"
+
+#~ msgid "22050Hz"
+#~ msgstr "22050 Hz"
+
+#~ msgid "44100Hz"
+#~ msgstr "44100 Hz"
+
+#~ msgid "48000Hz"
+#~ msgstr "48000 Hz"
+
+#~ msgid "88200Hz"
+#~ msgstr "88200 Hz"
+
+#~ msgid "96000Hz"
+#~ msgstr "96000 Hz"
+
+#~ msgid "192000Hz"
+#~ msgstr "192000 Hz"
+
+#~ msgid "Triangular"
+#~ msgstr "dreieckig"
+
+#~ msgid "Rectangular"
+#~ msgstr "rechteckig"
+
+#~ msgid "Shaped"
+#~ msgstr "shaped"
+
+#~ msgid "coremidi"
+#~ msgstr "coremidi"
+
+#~ msgid "seq"
+#~ msgstr "seq"
+
+#~ msgid "raw"
+#~ msgstr "raw"
+
+#~ msgid "Audio Interface:"
+#~ msgstr "Audio-Schnittstelle:"
+
+#~ msgid "Number of buffers:"
+#~ msgstr "Pufferanzahl:"
+
+#~ msgid "Approximate latency:"
+#~ msgstr "Latenz (ca.)"
+
+#~ msgid "Audio mode:"
+#~ msgstr "Audio-Modus:"
+
+#~ msgid "Ignore"
+#~ msgstr "ignorieren"
+
+#~ msgid "Client timeout"
+#~ msgstr "Client Timeout"
+
+#~ msgid "Number of ports:"
+#~ msgstr "Portanzahl"
+
+#~ msgid "MIDI driver:"
+#~ msgstr "MIDI-Treiber:"
+
+#~ msgid "Dither:"
+#~ msgstr "Dithering:"
+
+#~ msgid ""
+#~ "No JACK server found anywhere on this system. Please install JACK and "
+#~ "restart"
+#~ msgstr ""
+#~ "Es wurde kein JACK Server auf diesem System gefunden. Bitte installieren "
+#~ "Sie JACK vor einem Neuversuch."
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Input device:"
+#~ msgstr "Eingangsgerät:"
+
+#~ msgid "Output device:"
+#~ msgstr "Ausgabegerät:"
+
+#~ msgid "Advanced"
+#~ msgstr "Erweitert"
+
+#~ msgid "cannot open JACK rc file %1 to store parameters"
+#~ msgstr "kann die JACK rc-Datei %1 nicht öffnen, um die Parameter zu sichern"
+
+#~ msgid ""
+#~ "You do not have any audio devices capable of\n"
+#~ "simultaneous playback and recording.\n"
+#~ "\n"
+#~ "Please use Applications -> Utilities -> Audio MIDI Setup\n"
+#~ "to create an \"aggregrate\" device, or install a suitable\n"
+#~ "audio interface.\n"
+#~ "\n"
+#~ "Please send email to Apple and ask them why new Macs\n"
+#~ "have no duplex audio device.\n"
+#~ "\n"
+#~ "Alternatively, if you really want just playback\n"
+#~ "or recording but not both, start JACK before running\n"
+#~ "%1 and choose the relevant device then."
+#~ msgstr ""
+#~ "Sie haben keine Soundkarte, die gleichzeitiges\n"
+#~ "Abspielen und Aufnehmen unterstützt.\n"
+#~ "\n"
+#~ "Benützen Sie Programme>Dienstprogramme>Audio-Midi-Setup\n"
+#~ " um ein kombiniertes Gerät zu erzeugen, oder installieren Sie ein\n"
+#~ "geeignetes Audiointerface.\n"
+#~ "\n"
+#~ "Bitte senden Sie eine E-Mail an Apple und fragen Sie, warum Sie\n"
+#~ "keine Duplex Soundkarte in Ihrem Mac haben.\n"
+#~ "\n"
+#~ "Wenn Sie Audiomaterial wirklich nicht gleichzeitig aufnehmen und "
+#~ "wiedergeben wollen,\n"
+#~ "können Sie JACK vor dem Starten von %1 aufrufen und das entsprechende "
+#~ "Gerät auswählen."
+
+#~ msgid "No suitable audio devices"
+#~ msgstr "Keine passenden Audiogeräte."
+
+#~ msgid "JACK appears to be missing from the %1 bundle"
+#~ msgstr "JACK scheint im %1-Paket zu fehlen."
+
+#~ msgid "You need to choose an audio device first."
+#~ msgstr "Sie müssen zuerst ein Audiogerät auswählen."
+
+#~ msgid "Audio device \"%1\" not known on this computer."
+#~ msgstr "Audiogerät %1 scheint auf diesem Computer nicht vorhanden zu sein."
+
+#~ msgid "AudioSetup value for %1 is missing data"
+#~ msgstr "Es fehlen Daten zum AudioSetup-Wert von %1"
+
+#~ msgid ""
+#~ "configuration files contain a JACK server path that doesn't exist (%1)"
+#~ msgstr ""
+#~ "die Konfiguration enthält einen JACK-Serverpfad, der nicht existiert (%1)"
+
+#~ msgid "JACK exited"
+#~ msgstr "JACK wurde beendet"
+
+#~ msgid ""
+#~ "JACK exited unexpectedly, and without notifying %1.\n"
+#~ "\n"
+#~ "This is probably due to an error inside JACK. You should restart JACK\n"
+#~ "and reconnect %1 to it, or exit %1 now. You cannot save your\n"
+#~ "session at this time, because we would lose your connection information.\n"
+#~ msgstr ""
+#~ "JACK wurde unerwartet und ohne Benachrichtigung beendet %1.\n"
+#~ "\n"
+#~ "Dies liegt wahrscheinlich an einem Fehler in JACK. Sie sollten\n"
+#~ "JACK neu starten und %1 erneut mit ihm verbinden, oder %1 jetzt beenden.\n"
+#~ "Momentan läßt sich das Projekt nicht speichern, da alle Informationen\n"
+#~ "über Verbindungen verloren gehen würden.\n"
+
#~ msgid "Failed to set session-framerate: "
#~ msgstr "Konnte Projekt-Framerate nicht einstellen: "
@@ -12974,9 +13136,6 @@ msgstr ""
#~ msgid "What would you like to do ?"
#~ msgstr "Was möchten Sie tun?"
-#~ msgid "Connect"
-#~ msgstr "Verbinden"
-
#~ msgid "Mixer on Top"
#~ msgstr "Mixer über Editor"
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 07781fe7ee..1ed7c39312 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -2151,7 +2151,7 @@ ProcessorBox::get_editor_window (boost::shared_ptr<Processor> processor, bool us
} else if ((port_insert = boost::dynamic_pointer_cast<PortInsert> (processor)) != 0) {
if (!_session->engine().connected()) {
- MessageDialog msg ( _("Not connected to JACK - no I/O changes are possible"));
+ MessageDialog msg ( _("Not connected to audio engine - no I/O changes are possible"));
msg.run ();
return 0;
}
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index ed9ffda4ef..f9336cee31 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -1146,7 +1146,7 @@ RCOptionEditor::RCOptionEditor ()
tsf = new BoolOption (
"seamless-loop",
- _("Do seamless looping (not possible when slaved to MTC, JACK etc)"),
+ _("Do seamless looping (not possible when slaved to MTC, LTC etc)"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_seamless_loop),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_seamless_loop)
);
@@ -1464,12 +1464,10 @@ RCOptionEditor::RCOptionEditor ()
sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
);
-#ifndef __APPLE__
- /* no JACK monitoring on CoreAudio */
if (AudioEngine::instance()->port_engine().can_monitor_input()) {
mm->add (HardwareMonitoring, _("via Audio Driver"));
}
-#endif
+
mm->add (SoftwareMonitoring, _("ardour"));
mm->add (ExternalMonitoring, _("audio hardware"));
diff --git a/gtk2_ardour/session_dialog.cc b/gtk2_ardour/session_dialog.cc
new file mode 100644
index 0000000000..996dab1cc4
--- /dev/null
+++ b/gtk2_ardour/session_dialog.cc
@@ -0,0 +1,1075 @@
+/*
+ Copyright (C) 2013 Paul Davis
+
+ This program 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.
+
+ This program 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 more 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
+#include <fstream>
+#include <algorithm>
+
+#include <gtkmm/filechooser.h>
+
+#include "pbd/failed_constructor.h"
+#include "pbd/file_utils.h"
+#include "pbd/replace_all.h"
+#include "pbd/whitespace.h"
+#include "pbd/stacktrace.h"
+#include "pbd/openuri.h"
+
+#include "ardour/audioengine.h"
+#include "ardour/filesystem_paths.h"
+#include "ardour/recent_sessions.h"
+#include "ardour/session.h"
+#include "ardour/session_state_utils.h"
+#include "ardour/template_utils.h"
+#include "ardour/filename_extensions.h"
+
+#include "ardour_ui.h"
+#include "session_dialog.h"
+#include "opts.h"
+#include "engine_dialog.h"
+#include "i18n.h"
+#include "utils.h"
+
+using namespace std;
+using namespace Gtk;
+using namespace Gdk;
+using namespace Glib;
+using namespace PBD;
+using namespace ARDOUR;
+
+static string poor_mans_glob (string path)
+{
+ string copy = path;
+ replace_all (copy, "~", Glib::get_home_dir());
+ return copy;
+}
+
+SessionDialog::SessionDialog (bool require_new, const std::string& session_name, const std::string& session_path, const std::string& template_name, bool cancel_not_quit)
+ : ArdourDialog (_("Session Setup"), true, true)
+ , new_only (require_new)
+ , _provided_session_name (session_name)
+ , _provided_session_path (session_path)
+ , new_folder_chooser (FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ , more_new_session_options_button (_("Advanced options ..."))
+ , _output_limit_count_adj (1, 0, 100, 1, 10, 0)
+ , _input_limit_count_adj (1, 0, 100, 1, 10, 0)
+ , _master_bus_channel_count_adj (2, 0, 100, 1, 10, 0)
+ , _existing_session_chooser_used (false)
+{
+ set_keep_above (true);
+ set_position (WIN_POS_CENTER);
+ get_vbox()->set_spacing (6);
+
+ cancel_button = add_button ((cancel_not_quit ? Stock::CANCEL : Stock::QUIT), RESPONSE_CANCEL);
+ back_button = add_button (Stock::GO_BACK, RESPONSE_NO);
+ open_button = add_button (Stock::OPEN, RESPONSE_ACCEPT);
+
+ back_button->signal_button_press_event().connect (sigc::mem_fun (*this, &SessionDialog::back_button_pressed), false);
+
+ open_button->set_sensitive (false);
+ back_button->set_sensitive (false);
+
+ /* this is where announcements will be displayed, but it may be empty
+ * and invisible most of the time.
+ */
+
+ info_frame.set_shadow_type(SHADOW_ETCHED_OUT);
+ info_frame.set_no_show_all (true);
+ info_frame.set_border_width (12);
+ get_vbox()->pack_start (info_frame, false, false);
+
+ setup_new_session_page ();
+
+ if (!new_only) {
+ setup_initial_choice_box ();
+ get_vbox()->pack_start (ic_vbox, true, true);
+ } else {
+ get_vbox()->pack_start (session_new_vbox, true, true);
+ }
+
+ if (!template_name.empty()) {
+ use_template_button.set_active (false);
+ load_template_override = template_name;
+ }
+
+ get_vbox()->show_all ();
+
+ /* fill data models and how/hide accordingly */
+
+ populate_session_templates ();
+
+ if (!template_model->children().empty()) {
+ use_template_button.show();
+ template_chooser.show ();
+ } else {
+ use_template_button.hide();
+ template_chooser.hide ();
+ }
+
+ if (recent_session_model) {
+ int cnt = redisplay_recent_sessions ();
+ if (cnt > 0) {
+ recent_scroller.show();
+ recent_label.show ();
+
+ if (cnt > 4) {
+ recent_scroller.set_size_request (-1, 300);
+ }
+ } else {
+ recent_scroller.hide();
+ recent_label.hide ();
+ }
+ }
+
+ /* possibly get out of here immediately if everything is ready to go.
+ We still need to set up the whole dialog because of the way
+ ARDOUR_UI::get_session_parameters() might skip it on a first
+ pass then require it for a second pass (e.g. when there
+ is an error with session loading and we have to ask the user
+ what to do next).
+ */
+
+ if (!session_name.empty() && !require_new) {
+ response (RESPONSE_OK);
+ return;
+ }
+}
+
+SessionDialog::~SessionDialog()
+{
+}
+
+void
+SessionDialog::clear_given ()
+{
+ _provided_session_path = "";
+ _provided_session_name = "";
+}
+
+bool
+SessionDialog::use_session_template ()
+{
+ if (!load_template_override.empty()) {
+ return true;
+ }
+
+ if (use_template_button.get_active()) {
+ return true;
+ }
+
+ return false;
+}
+
+std::string
+SessionDialog::session_template_name ()
+{
+ if (!load_template_override.empty()) {
+ string the_path (ARDOUR::user_template_directory());
+ return Glib::build_filename (the_path, load_template_override + ARDOUR::template_suffix);
+ }
+
+ if (use_template_button.get_active()) {
+ TreeModel::iterator iter = template_chooser.get_active ();
+ TreeModel::Row row = (*iter);
+ string s = row[session_template_columns.path];
+ return s;
+ }
+
+ return string();
+}
+
+std::string
+SessionDialog::session_name (bool& should_be_new)
+{
+ if (!_provided_session_name.empty() && !new_only) {
+ should_be_new = false;
+ return _provided_session_name;
+ }
+
+ /* Try recent session selection */
+
+ TreeIter iter = recent_session_display.get_selection()->get_selected();
+
+ if (iter) {
+ should_be_new = false;
+ return (*iter)[recent_session_columns.visible_name];
+ }
+
+ if (_existing_session_chooser_used) {
+ /* existing session chosen from file chooser */
+ should_be_new = false;
+ return existing_session_chooser.get_filename ();
+ } else {
+ should_be_new = true;
+ string val = new_name_entry.get_text ();
+ strip_whitespace_edges (val);
+ return val;
+ }
+}
+
+std::string
+SessionDialog::session_folder ()
+{
+ if (!_provided_session_path.empty() && !new_only) {
+ return _provided_session_path;
+ }
+
+ /* Try recent session selection */
+
+ TreeIter iter = recent_session_display.get_selection()->get_selected();
+
+ if (iter) {
+ string s = (*iter)[recent_session_columns.fullpath];
+ if (Glib::file_test (s, Glib::FILE_TEST_IS_REGULAR)) {
+ return Glib::path_get_dirname (s);
+ }
+ return s;
+ }
+
+ if (_existing_session_chooser_used) {
+ /* existing session chosen from file chooser */
+ return Glib::path_get_dirname (existing_session_chooser.get_current_folder ());
+ } else {
+ std::string legal_session_folder_name = legalize_for_path (new_name_entry.get_text());
+ return Glib::build_filename (new_folder_chooser.get_current_folder(), legal_session_folder_name);
+ }
+}
+
+void
+SessionDialog::setup_initial_choice_box ()
+{
+ ic_vbox.set_spacing (6);
+
+ HBox* centering_hbox = manage (new HBox);
+ VBox* centering_vbox = manage (new VBox);
+
+ centering_vbox->set_spacing (6);
+
+ Label* new_label = manage (new Label);
+ new_label->set_markup (string_compose ("<span weight=\"bold\" size=\"large\">%1</span>", _("New Session")));
+ new_label->set_justify (JUSTIFY_CENTER);
+
+ ic_new_session_button.add (*new_label);
+ ic_new_session_button.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::new_session_button_clicked));
+
+ Gtk::HBox* hbox = manage (new HBox);
+ Gtk::VBox* vbox = manage (new VBox);
+ hbox->set_spacing (12);
+ vbox->set_spacing (12);
+
+ string image_path;
+
+ if (find_file_in_search_path (ardour_data_search_path(), "small-splash.png", image_path)) {
+ Gtk::Image* image;
+ if ((image = manage (new Gtk::Image (image_path))) != 0) {
+ hbox->pack_start (*image, false, false);
+ }
+ }
+
+ vbox->pack_start (ic_new_session_button, true, true, 20);
+ hbox->pack_start (*vbox, true, true, 20);
+
+ centering_vbox->pack_start (*hbox, false, false);
+
+ /* Possible update message */
+
+ if (ARDOUR_UI::instance()->announce_string() != "" ) {
+
+ Box *info_box = manage (new VBox);
+ info_box->set_border_width (12);
+ info_box->set_spacing (6);
+
+ info_box->pack_start (info_scroller_label, false, false);
+
+ info_scroller_count = 0;
+ info_scroller_connection = Glib::signal_timeout().connect (mem_fun(*this, &SessionDialog::info_scroller_update), 50);
+
+ Gtk::Button *updates_button = manage (new Gtk::Button (_("Check the website for more...")));
+
+ updates_button->signal_clicked().connect (mem_fun(*this, &SessionDialog::updates_button_clicked) );
+ ARDOUR_UI::instance()->tooltips().set_tip (*updates_button, _("Click to open the program website in your web browser"));
+
+ info_box->pack_start (*updates_button, false, false);
+
+ info_frame.add (*info_box);
+ info_box->show_all ();
+ info_frame.show ();
+ }
+
+ /* recent session scroller */
+
+ recent_label.set_no_show_all (true);
+ recent_scroller.set_no_show_all (true);
+
+ recent_label.set_markup (string_compose ("<span weight=\"bold\" size=\"large\">%1</span>", _("Recent Sessions")));
+
+ recent_session_model = TreeStore::create (recent_session_columns);
+
+ recent_session_display.set_model (recent_session_model);
+ recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
+ recent_session_display.append_column (_("Sample Rate"), recent_session_columns.sample_rate);
+ recent_session_display.append_column (_("Disk Format"), recent_session_columns.disk_format);
+ recent_session_display.set_headers_visible (false);
+ recent_session_display.get_selection()->set_mode (SELECTION_SINGLE);
+
+ recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &SessionDialog::recent_session_row_selected));
+
+ recent_scroller.add (recent_session_display);
+ recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+ recent_scroller.set_shadow_type (Gtk::SHADOW_IN);
+
+ recent_session_display.show();
+ recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &SessionDialog::recent_row_activated));
+
+ centering_vbox->pack_start (recent_label, false, false, 12);
+ centering_vbox->pack_start (recent_scroller, false, true);
+
+ /* Browse button */
+
+ existing_session_chooser.set_title (_("Select session file"));
+ existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &SessionDialog::existing_session_selected));
+ existing_session_chooser.set_current_folder(poor_mans_glob (Config->get_default_session_parent_dir()));
+
+ FileFilter session_filter;
+ session_filter.add_pattern ("*.ardour");
+ session_filter.set_name (string_compose (_("%1 sessions"), PROGRAM_NAME));
+ existing_session_chooser.add_filter (session_filter);
+ existing_session_chooser.set_filter (session_filter);
+
+#ifdef GTKOSX
+ existing_session_chooser.add_shortcut_folder ("/Volumes");
+#endif
+
+ Label* browse_label = manage (new Label);
+ browse_label->set_markup (string_compose ("<span weight=\"bold\" size=\"large\">%1</span>", _("Other Sessions")));
+
+ centering_vbox->pack_start (*browse_label, false, false, 12);
+ centering_vbox->pack_start (existing_session_chooser, false, false);
+
+ /* pack it all up */
+
+ centering_hbox->pack_start (*centering_vbox, true, true);
+ ic_vbox.pack_start (*centering_hbox, true, true);
+ ic_vbox.show_all ();
+}
+
+void
+SessionDialog::session_selected ()
+{
+ /* HACK HACK HACK ... change the "Apply" button label
+ to say "Open"
+ */
+
+ Gtk::Widget* tl = ic_vbox.get_toplevel();
+ Gtk::Window* win;
+ if ((win = dynamic_cast<Gtk::Window*>(tl)) != 0) {
+ /* ::get_default_widget() is not wrapped in gtkmm */
+ Gtk::Widget* def = wrap (gtk_window_get_default_widget (win->gobj()));
+ Gtk::Button* button;
+ if ((button = dynamic_cast<Gtk::Button*>(def)) != 0) {
+ button->set_label (_("Open"));
+ }
+ }
+}
+
+void
+SessionDialog::new_session_button_clicked ()
+{
+ _existing_session_chooser_used = false;
+ recent_session_display.get_selection()->unselect_all ();
+
+ get_vbox()->remove (ic_vbox);
+ get_vbox()->pack_start (session_new_vbox, true, true);
+ back_button->set_sensitive (true);
+ new_name_entry.grab_focus ();
+}
+
+bool
+SessionDialog::back_button_pressed (GdkEventButton*)
+{
+ get_vbox()->remove (session_new_vbox);
+ back_button->set_sensitive (false);
+ get_vbox()->pack_start (ic_vbox);
+
+ return true;
+}
+
+void
+SessionDialog::populate_session_templates ()
+{
+ vector<TemplateInfo> templates;
+
+ find_session_templates (templates);
+
+ template_model->clear ();
+
+ for (vector<TemplateInfo>::iterator x = templates.begin(); x != templates.end(); ++x) {
+ TreeModel::Row row;
+
+ row = *(template_model->append ());
+
+ row[session_template_columns.name] = (*x).name;
+ row[session_template_columns.path] = (*x).path;
+ }
+
+ if (!templates.empty()) {
+ /* select first row */
+ template_chooser.set_active (0);
+ }
+}
+
+void
+SessionDialog::setup_new_session_page ()
+{
+ session_new_vbox.set_border_width (12);
+ session_new_vbox.set_spacing (18);
+
+ VBox *vbox1 = manage (new VBox);
+ HBox* hbox1 = manage (new HBox);
+ Label* label1 = manage (new Label);
+
+ vbox1->set_spacing (6);
+
+ hbox1->set_spacing (6);
+ hbox1->pack_start (*label1, false, false);
+ hbox1->pack_start (new_name_entry, true, true);
+
+ label1->set_text (_("Session name:"));
+
+ if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
+ new_name_entry.set_text (Glib::path_get_basename (ARDOUR_COMMAND_LINE::session_name));
+ /* name provided - they can move right along */
+ open_button->set_sensitive (true);
+ }
+
+ new_name_entry.signal_changed().connect (sigc::mem_fun (*this, &SessionDialog::new_name_changed));
+ new_name_entry.signal_activate().connect (sigc::mem_fun (*this, &SessionDialog::new_name_activated));
+
+ vbox1->pack_start (*hbox1, true, true);
+
+ /* --- */
+
+ HBox* hbox2 = manage (new HBox);
+ Label* label2 = manage (new Label);
+
+ hbox2->set_spacing (6);
+ hbox2->pack_start (*label2, false, false);
+ hbox2->pack_start (new_folder_chooser, true, true);
+
+ label2->set_text (_("Create session folder in:"));
+
+ if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
+ new_folder_chooser.set_current_folder (poor_mans_glob (Glib::path_get_dirname (ARDOUR_COMMAND_LINE::session_name)));
+ } else if (ARDOUR_UI::instance()->session_loaded) {
+ // point the new session file chooser at the parent directory of the current session
+ string session_parent_dir = Glib::path_get_dirname(ARDOUR_UI::instance()->the_session()->path());
+ string::size_type last_dir_sep = session_parent_dir.rfind(G_DIR_SEPARATOR);
+ session_parent_dir = session_parent_dir.substr(0, last_dir_sep);
+ new_folder_chooser.set_current_folder (session_parent_dir);
+ string default_session_folder = poor_mans_glob (Config->get_default_session_parent_dir());
+
+ try {
+ /* add_shortcut_folder throws an exception if the folder being added already has a shortcut */
+ new_folder_chooser.add_shortcut_folder (default_session_folder);
+ }
+ catch (Glib::Error & e) {
+ std::cerr << "new_folder_chooser.add_shortcut_folder (" << default_session_folder << ") threw Glib::Error " << e.what() << std::endl;
+ }
+ } else {
+ new_folder_chooser.set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir()));
+ }
+ new_folder_chooser.show ();
+ new_folder_chooser.set_title (_("Select folder for session"));
+
+#ifdef __APPLE__
+ new_folder_chooser.add_shortcut_folder ("/Volumes");
+#endif
+
+ vbox1->pack_start (*hbox2, false, false);
+
+ session_new_vbox.pack_start (*vbox1, false, false);
+
+ /* --- */
+
+ VBox *vbox2 = manage (new VBox);
+ HBox* hbox3 = manage (new HBox);
+ template_model = ListStore::create (session_template_columns);
+
+ vbox2->set_spacing (6);
+
+ VBox *vbox3 = manage (new VBox);
+
+ vbox3->set_spacing (6);
+
+ /* we may want to hide this and show it at various
+ times depending on the existence of templates.
+ */
+ template_chooser.set_no_show_all (true);
+ use_template_button.set_no_show_all (true);
+
+ HBox* hbox4a = manage (new HBox);
+ use_template_button.set_label (_("Use this template"));
+
+ TreeModel::Row row = *template_model->prepend ();
+ row[session_template_columns.name] = (_("no template"));
+ row[session_template_columns.path] = string();
+
+ hbox4a->set_spacing (6);
+ hbox4a->pack_start (use_template_button, false, false);
+ hbox4a->pack_start (template_chooser, true, true);
+
+ template_chooser.set_model (template_model);
+
+ Gtk::CellRendererText* text_renderer = Gtk::manage (new Gtk::CellRendererText);
+ text_renderer->property_editable() = false;
+
+ template_chooser.pack_start (*text_renderer);
+ template_chooser.add_attribute (text_renderer->property_text(), session_template_columns.name);
+ template_chooser.set_active (0);
+
+ vbox3->pack_start (*hbox4a, false, false);
+
+ /* --- */
+
+ HBox* hbox5 = manage (new HBox);
+
+ hbox5->set_spacing (6);
+ hbox5->pack_start (more_new_session_options_button, false, false);
+
+ setup_more_options_box ();
+ more_new_session_options_button.add (more_options_vbox);
+
+ vbox3->pack_start (*hbox5, false, false);
+ hbox3->pack_start (*vbox3, true, true, 8);
+ vbox2->pack_start (*hbox3, false, false);
+
+ /* --- */
+
+ session_new_vbox.pack_start (*vbox2, false, false);
+ session_new_vbox.show_all ();
+}
+
+void
+SessionDialog::new_name_changed ()
+{
+ if (!new_name_entry.get_text().empty()) {
+ session_selected ();
+ open_button->set_sensitive (true);
+ } else {
+ open_button->set_sensitive (false);
+ }
+}
+
+void
+SessionDialog::new_name_activated ()
+{
+ response (RESPONSE_ACCEPT);
+}
+
+int
+SessionDialog::redisplay_recent_sessions ()
+{
+ std::vector<std::string> session_directories;
+ RecentSessionsSorter cmp;
+
+ recent_session_display.set_model (Glib::RefPtr<TreeModel>(0));
+ recent_session_model->clear ();
+
+ ARDOUR::RecentSessions rs;
+ ARDOUR::read_recent_sessions (rs);
+
+ if (rs.empty()) {
+ recent_session_display.set_model (recent_session_model);
+ return 0;
+ }
+ //
+ // sort them alphabetically
+ sort (rs.begin(), rs.end(), cmp);
+
+ for (ARDOUR::RecentSessions::iterator i = rs.begin(); i != rs.end(); ++i) {
+ session_directories.push_back ((*i).second);
+ }
+
+ int session_snapshot_count = 0;
+
+ for (vector<std::string>::const_iterator i = session_directories.begin(); i != session_directories.end(); ++i)
+ {
+ std::vector<std::string> state_file_paths;
+
+ // now get available states for this session
+
+ get_state_files_in_directory (*i, state_file_paths);
+
+ vector<string*>* states;
+ vector<const gchar*> item;
+ string dirname = *i;
+
+ /* remove any trailing / */
+
+ if (dirname[dirname.length()-1] == '/') {
+ dirname = dirname.substr (0, dirname.length()-1);
+ }
+
+ /* check whether session still exists */
+ if (!Glib::file_test(dirname.c_str(), Glib::FILE_TEST_EXISTS)) {
+ /* session doesn't exist */
+ continue;
+ }
+
+ /* now get available states for this session */
+
+ if ((states = Session::possible_states (dirname)) == 0) {
+ /* no state file? */
+ continue;
+ }
+
+ std::vector<string> state_file_names(get_file_names_no_extension (state_file_paths));
+
+ if (state_file_names.empty()) {
+ continue;
+ }
+
+ Gtk::TreeModel::Row row = *(recent_session_model->append());
+
+ float sr;
+ SampleFormat sf;
+ std::string s = Glib::build_filename (dirname, state_file_names.front() + statefile_suffix);
+
+ row[recent_session_columns.visible_name] = Glib::path_get_basename (dirname);
+ row[recent_session_columns.fullpath] = dirname; /* just the dir, but this works too */
+ row[recent_session_columns.tip] = Glib::Markup::escape_text (dirname);
+
+ if (Session::get_info_from_path (s, sr, sf) == 0) {
+ row[recent_session_columns.sample_rate] = rate_as_string (sr);
+ switch (sf) {
+ case FormatFloat:
+ row[recent_session_columns.disk_format] = _("32 bit float");
+ break;
+ case FormatInt24:
+ row[recent_session_columns.disk_format] = _("24 bit");
+ break;
+ case FormatInt16:
+ row[recent_session_columns.disk_format] = _("16 bit");
+ break;
+ }
+ } else {
+ row[recent_session_columns.sample_rate] = "??";
+ row[recent_session_columns.disk_format] = "--";
+ }
+
+ ++session_snapshot_count;
+
+ if (state_file_names.size() > 1) {
+
+ // add the children
+
+ for (std::vector<std::string>::iterator i2 = state_file_names.begin(); i2 != state_file_names.end(); ++i2) {
+
+ Gtk::TreeModel::Row child_row = *(recent_session_model->append (row.children()));
+
+ child_row[recent_session_columns.visible_name] = *i2;
+ child_row[recent_session_columns.fullpath] = Glib::build_filename (dirname, *i2 + statefile_suffix);
+ child_row[recent_session_columns.tip] = Glib::Markup::escape_text (dirname);
+
+ if (Session::get_info_from_path (s, sr, sf) == 0) {
+ child_row[recent_session_columns.sample_rate] = rate_as_string (sr);
+ switch (sf) {
+ case FormatFloat:
+ child_row[recent_session_columns.disk_format] = _("32 bit float");
+ break;
+ case FormatInt24:
+ child_row[recent_session_columns.disk_format] = _("24 bit");
+ break;
+ case FormatInt16:
+ child_row[recent_session_columns.disk_format] = _("16 bit");
+ break;
+ }
+ } else {
+ child_row[recent_session_columns.sample_rate] = "??";
+ child_row[recent_session_columns.disk_format] = "--";
+ }
+
+
+ ++session_snapshot_count;
+ }
+ }
+ }
+
+ recent_session_display.set_tooltip_column(1); // recent_session_columns.tip
+ recent_session_display.set_model (recent_session_model);
+ return session_snapshot_count;
+}
+
+void
+SessionDialog::recent_session_row_selected ()
+{
+ if (recent_session_display.get_selection()->count_selected_rows() > 0) {
+ open_button->set_sensitive (true);
+ session_selected ();
+ } else {
+ open_button->set_sensitive (false);
+ }
+}
+
+void
+SessionDialog::setup_more_options_box ()
+{
+ more_options_vbox.set_border_width (24);
+
+ _output_limit_count.set_adjustment (_output_limit_count_adj);
+ _input_limit_count.set_adjustment (_input_limit_count_adj);
+ _master_bus_channel_count.set_adjustment (_master_bus_channel_count_adj);
+
+ chan_count_label_1.set_text (_("channels"));
+ chan_count_label_3.set_text (_("channels"));
+ chan_count_label_4.set_text (_("channels"));
+
+ chan_count_label_1.set_alignment(0,0.5);
+ chan_count_label_1.set_padding(0,0);
+ chan_count_label_1.set_line_wrap(false);
+
+ chan_count_label_3.set_alignment(0,0.5);
+ chan_count_label_3.set_padding(0,0);
+ chan_count_label_3.set_line_wrap(false);
+
+ chan_count_label_4.set_alignment(0,0.5);
+ chan_count_label_4.set_padding(0,0);
+ chan_count_label_4.set_line_wrap(false);
+
+ bus_label.set_markup (_("<b>Busses</b>"));
+ input_label.set_markup (_("<b>Inputs</b>"));
+ output_label.set_markup (_("<b>Outputs</b>"));
+
+ _master_bus_channel_count.set_flags(Gtk::CAN_FOCUS);
+ _master_bus_channel_count.set_update_policy(Gtk::UPDATE_ALWAYS);
+ _master_bus_channel_count.set_numeric(true);
+ _master_bus_channel_count.set_digits(0);
+ _master_bus_channel_count.set_wrap(false);
+
+ _create_master_bus.set_label (_("Create master bus"));
+ _create_master_bus.set_flags(Gtk::CAN_FOCUS);
+ _create_master_bus.set_relief(Gtk::RELIEF_NORMAL);
+ _create_master_bus.set_mode(true);
+ _create_master_bus.set_active(true);
+ _create_master_bus.set_border_width(0);
+
+ advanced_table.set_row_spacings(0);
+ advanced_table.set_col_spacings(0);
+
+ _connect_inputs.set_label (_("Automatically connect to physical inputs"));
+ _connect_inputs.set_flags(Gtk::CAN_FOCUS);
+ _connect_inputs.set_relief(Gtk::RELIEF_NORMAL);
+ _connect_inputs.set_mode(true);
+ _connect_inputs.set_active(Config->get_input_auto_connect() != ManualConnect);
+ _connect_inputs.set_border_width(0);
+
+ _limit_input_ports.set_label (_("Use only"));
+ _limit_input_ports.set_flags(Gtk::CAN_FOCUS);
+ _limit_input_ports.set_relief(Gtk::RELIEF_NORMAL);
+ _limit_input_ports.set_mode(true);
+ _limit_input_ports.set_sensitive(true);
+ _limit_input_ports.set_border_width(0);
+
+ _input_limit_count.set_flags(Gtk::CAN_FOCUS);
+ _input_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
+ _input_limit_count.set_numeric(true);
+ _input_limit_count.set_digits(0);
+ _input_limit_count.set_wrap(false);
+ _input_limit_count.set_sensitive(false);
+
+ bus_hbox.pack_start (bus_table, Gtk::PACK_SHRINK, 18);
+
+ bus_label.set_alignment(0, 0.5);
+ bus_label.set_padding(0,0);
+ bus_label.set_line_wrap(false);
+ bus_label.set_selectable(false);
+ bus_label.set_use_markup(true);
+ bus_frame.set_shadow_type(Gtk::SHADOW_NONE);
+ bus_frame.set_label_align(0,0.5);
+ bus_frame.add(bus_hbox);
+ bus_frame.set_label_widget(bus_label);
+
+ bus_table.set_row_spacings (0);
+ bus_table.set_col_spacings (0);
+ bus_table.attach (_create_master_bus, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ bus_table.attach (_master_bus_channel_count, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ bus_table.attach (chan_count_label_1, 2, 3, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 0);
+
+ input_port_limit_hbox.pack_start(_limit_input_ports, Gtk::PACK_SHRINK, 6);
+ input_port_limit_hbox.pack_start(_input_limit_count, Gtk::PACK_SHRINK, 0);
+ input_port_limit_hbox.pack_start(chan_count_label_3, Gtk::PACK_SHRINK, 6);
+ input_port_vbox.pack_start(_connect_inputs, Gtk::PACK_SHRINK, 0);
+ input_port_vbox.pack_start(input_port_limit_hbox, Gtk::PACK_EXPAND_PADDING, 0);
+ input_table.set_row_spacings(0);
+ input_table.set_col_spacings(0);
+ input_table.attach(input_port_vbox, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 6);
+
+ input_hbox.pack_start (input_table, Gtk::PACK_SHRINK, 18);
+
+ input_label.set_alignment(0, 0.5);
+ input_label.set_padding(0,0);
+ input_label.set_line_wrap(false);
+ input_label.set_selectable(false);
+ input_label.set_use_markup(true);
+ input_frame.set_shadow_type(Gtk::SHADOW_NONE);
+ input_frame.set_label_align(0,0.5);
+ input_frame.add(input_hbox);
+ input_frame.set_label_widget(input_label);
+
+ _connect_outputs.set_label (_("Automatically connect outputs"));
+ _connect_outputs.set_flags(Gtk::CAN_FOCUS);
+ _connect_outputs.set_relief(Gtk::RELIEF_NORMAL);
+ _connect_outputs.set_mode(true);
+ _connect_outputs.set_active(Config->get_output_auto_connect() != ManualConnect);
+ _connect_outputs.set_border_width(0);
+ _limit_output_ports.set_label (_("Use only"));
+ _limit_output_ports.set_flags(Gtk::CAN_FOCUS);
+ _limit_output_ports.set_relief(Gtk::RELIEF_NORMAL);
+ _limit_output_ports.set_mode(true);
+ _limit_output_ports.set_sensitive(true);
+ _limit_output_ports.set_border_width(0);
+ _output_limit_count.set_flags(Gtk::CAN_FOCUS);
+ _output_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
+ _output_limit_count.set_numeric(false);
+ _output_limit_count.set_digits(0);
+ _output_limit_count.set_wrap(false);
+ _output_limit_count.set_sensitive(false);
+ output_port_limit_hbox.pack_start(_limit_output_ports, Gtk::PACK_SHRINK, 6);
+ output_port_limit_hbox.pack_start(_output_limit_count, Gtk::PACK_SHRINK, 0);
+ output_port_limit_hbox.pack_start(chan_count_label_4, Gtk::PACK_SHRINK, 6);
+
+ _connect_outputs_to_master.set_label (_("... to master bus"));
+ _connect_outputs_to_master.set_flags(Gtk::CAN_FOCUS);
+ _connect_outputs_to_master.set_relief(Gtk::RELIEF_NORMAL);
+ _connect_outputs_to_master.set_mode(true);
+ _connect_outputs_to_master.set_active(Config->get_output_auto_connect() == AutoConnectMaster);
+ _connect_outputs_to_master.set_border_width(0);
+
+ _connect_outputs_to_master.set_group (connect_outputs_group);
+ _connect_outputs_to_physical.set_group (connect_outputs_group);
+
+ _connect_outputs_to_physical.set_label (_("... to physical outputs"));
+ _connect_outputs_to_physical.set_flags(Gtk::CAN_FOCUS);
+ _connect_outputs_to_physical.set_relief(Gtk::RELIEF_NORMAL);
+ _connect_outputs_to_physical.set_mode(true);
+ _connect_outputs_to_physical.set_active(Config->get_output_auto_connect() == AutoConnectPhysical);
+ _connect_outputs_to_physical.set_border_width(0);
+
+ output_conn_vbox.pack_start(_connect_outputs, Gtk::PACK_SHRINK, 0);
+ output_conn_vbox.pack_start(_connect_outputs_to_master, Gtk::PACK_SHRINK, 0);
+ output_conn_vbox.pack_start(_connect_outputs_to_physical, Gtk::PACK_SHRINK, 0);
+ output_vbox.set_border_width(6);
+
+ output_port_vbox.pack_start(output_port_limit_hbox, Gtk::PACK_SHRINK, 0);
+
+ output_vbox.pack_start(output_conn_vbox);
+ output_vbox.pack_start(output_port_vbox);
+
+ output_label.set_alignment(0, 0.5);
+ output_label.set_padding(0,0);
+ output_label.set_line_wrap(false);
+ output_label.set_selectable(false);
+ output_label.set_use_markup(true);
+ output_frame.set_shadow_type(Gtk::SHADOW_NONE);
+ output_frame.set_label_align(0,0.5);
+
+ output_hbox.pack_start (output_vbox, Gtk::PACK_SHRINK, 18);
+
+ output_frame.add(output_hbox);
+ output_frame.set_label_widget(output_label);
+
+ more_options_vbox.pack_start(advanced_table, Gtk::PACK_SHRINK, 0);
+ more_options_vbox.pack_start(bus_frame, Gtk::PACK_SHRINK, 6);
+ more_options_vbox.pack_start(input_frame, Gtk::PACK_SHRINK, 6);
+ more_options_vbox.pack_start(output_frame, Gtk::PACK_SHRINK, 0);
+
+ /* signals */
+
+ _connect_inputs.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::connect_inputs_clicked));
+ _connect_outputs.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::connect_outputs_clicked));
+ _limit_input_ports.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::limit_inputs_clicked));
+ _limit_output_ports.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::limit_outputs_clicked));
+ _create_master_bus.signal_clicked().connect (sigc::mem_fun (*this, &SessionDialog::master_bus_button_clicked));
+
+ /* note that more_options_vbox is "visible" by default even
+ * though it may not be displayed to the user, this is so the dialog
+ * doesn't resize.
+ */
+ more_options_vbox.show_all ();
+}
+
+bool
+SessionDialog::create_master_bus() const
+{
+ return _create_master_bus.get_active();
+}
+
+int
+SessionDialog::master_channel_count() const
+{
+ return _master_bus_channel_count.get_value_as_int();
+}
+
+bool
+SessionDialog::connect_inputs() const
+{
+ return _connect_inputs.get_active();
+}
+
+bool
+SessionDialog::limit_inputs_used_for_connection() const
+{
+ return _limit_input_ports.get_active();
+}
+
+int
+SessionDialog::input_limit_count() const
+{
+ return _input_limit_count.get_value_as_int();
+}
+
+bool
+SessionDialog::connect_outputs() const
+{
+ return _connect_outputs.get_active();
+}
+
+bool
+SessionDialog::limit_outputs_used_for_connection() const
+{
+ return _limit_output_ports.get_active();
+}
+
+int
+SessionDialog::output_limit_count() const
+{
+ return _output_limit_count.get_value_as_int();
+}
+
+bool
+SessionDialog::connect_outs_to_master() const
+{
+ return _connect_outputs_to_master.get_active();
+}
+
+bool
+SessionDialog::connect_outs_to_physical() const
+{
+ return _connect_outputs_to_physical.get_active();
+}
+
+void
+SessionDialog::connect_inputs_clicked ()
+{
+ _limit_input_ports.set_sensitive(_connect_inputs.get_active());
+
+ if (_connect_inputs.get_active() && _limit_input_ports.get_active()) {
+ _input_limit_count.set_sensitive(true);
+ } else {
+ _input_limit_count.set_sensitive(false);
+ }
+}
+
+void
+SessionDialog::connect_outputs_clicked ()
+{
+ bool const co = _connect_outputs.get_active ();
+ _limit_output_ports.set_sensitive(co);
+ _connect_outputs_to_master.set_sensitive(co);
+ _connect_outputs_to_physical.set_sensitive(co);
+
+ if (co && _limit_output_ports.get_active()) {
+ _output_limit_count.set_sensitive(true);
+ } else {
+ _output_limit_count.set_sensitive(false);
+ }
+}
+
+void
+SessionDialog::limit_inputs_clicked ()
+{
+ _input_limit_count.set_sensitive(_limit_input_ports.get_active());
+}
+
+void
+SessionDialog::limit_outputs_clicked ()
+{
+ _output_limit_count.set_sensitive(_limit_output_ports.get_active());
+}
+
+void
+SessionDialog::master_bus_button_clicked ()
+{
+ bool const yn = _create_master_bus.get_active();
+
+ _master_bus_channel_count.set_sensitive(yn);
+ _connect_outputs_to_master.set_sensitive(yn);
+}
+
+void
+SessionDialog::recent_row_activated (const Gtk::TreePath&, Gtk::TreeViewColumn*)
+{
+ response (RESPONSE_ACCEPT);
+}
+
+void
+SessionDialog::existing_session_selected ()
+{
+ _existing_session_chooser_used = true;
+ /* mark this sensitive in case we come back here after a failed open
+ * attempt and the user has hacked up the fix. sigh.
+ */
+ open_button->set_sensitive (true);
+ response (RESPONSE_ACCEPT);
+}
+
+void
+SessionDialog::updates_button_clicked ()
+{
+ //now open a browser window so user can see more
+ PBD::open_uri (Config->get_updates_url());
+}
+
+bool
+SessionDialog::info_scroller_update()
+{
+ info_scroller_count++;
+
+ char buf[512];
+ snprintf (buf, std::min(info_scroller_count,sizeof(buf)-1), "%s", ARDOUR_UI::instance()->announce_string().c_str() );
+ buf[info_scroller_count] = 0;
+ info_scroller_label.set_text (buf);
+ info_scroller_label.show();
+
+ if (info_scroller_count > ARDOUR_UI::instance()->announce_string().length()) {
+ info_scroller_connection.disconnect();
+ }
+
+ return true;
+}
+
+bool
+SessionDialog::on_delete_event (GdkEventAny* ev)
+{
+ response (RESPONSE_CANCEL);
+ return ArdourDialog::on_delete_event (ev);
+}
+
diff --git a/gtk2_ardour/session_dialog.h b/gtk2_ardour/session_dialog.h
new file mode 100644
index 0000000000..2178cfbe73
--- /dev/null
+++ b/gtk2_ardour/session_dialog.h
@@ -0,0 +1,240 @@
+/*
+ Copyright (C) 2010 Paul Davis
+
+ This program 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.
+
+ This program 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 more 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef __gtk2_ardour_session_dialog_h__
+#define __gtk2_ardour_session_dialog_h__
+
+#include <string>
+
+#include <gdkmm/pixbuf.h>
+#include <gtkmm/label.h>
+#include <gtkmm/drawingarea.h>
+#include <gtkmm/expander.h>
+#include <gtkmm/box.h>
+#include <gtkmm/radiobutton.h>
+#include <gtkmm/filechooserbutton.h>
+#include <gtkmm/scrolledwindow.h>
+#include <gtkmm/treeview.h>
+#include <gtkmm/treestore.h>
+#include <gtkmm/checkbutton.h>
+#include <gtkmm/table.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/spinbutton.h>
+#include <gtkmm/liststore.h>
+#include <gtkmm/combobox.h>
+
+#include "ardour/utils.h"
+
+#include "ardour_dialog.h"
+
+class EngineControl;
+
+class SessionDialog : public ArdourDialog {
+ public:
+ SessionDialog (bool require_new, const std::string& session_name, const std::string& session_path,
+ const std::string& template_name, bool cancel_not_quit);
+ ~SessionDialog ();
+
+ void clear_given ();
+
+ std::string session_name (bool& should_be_new);
+ std::string session_folder ();
+
+ bool use_session_template();
+ std::string session_template_name();
+
+ // advanced session options
+
+ bool create_master_bus() const;
+ int master_channel_count() const;
+
+ bool connect_inputs() const;
+ bool limit_inputs_used_for_connection() const;
+ int input_limit_count() const;
+
+ bool connect_outputs() const;
+ bool limit_outputs_used_for_connection() const;
+ int output_limit_count() const;
+
+ bool connect_outs_to_master() const;
+ bool connect_outs_to_physical() const;
+
+ private:
+ bool new_only;
+ std::string _provided_session_name;
+ std::string _provided_session_path;
+
+ bool on_delete_event (GdkEventAny*);
+
+ Gtk::Button* cancel_button;
+ Gtk::Button* open_button;
+ Gtk::Button* back_button;
+ Gtk::Button* quit_button;
+
+ bool back_button_pressed (GdkEventButton*);
+
+ Gtk::Frame info_frame;
+
+ /* initial choice page */
+
+ void setup_initial_choice_box ();
+ Gtk::VBox ic_vbox;
+ Gtk::Button ic_new_session_button;
+ void new_session_button_clicked ();
+
+ /* recent sessions */
+
+ void setup_existing_session_page ();
+
+ struct RecentSessionsSorter {
+ bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
+ return cmp_nocase(a.first, b.first) == -1;
+ }
+ };
+
+ struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord {
+ RecentSessionModelColumns() {
+ add (visible_name);
+ add (tip);
+ add (fullpath);
+ add (sample_rate);
+ add (disk_format);
+ }
+ Gtk::TreeModelColumn<std::string> visible_name;
+ Gtk::TreeModelColumn<std::string> tip;
+ Gtk::TreeModelColumn<std::string> fullpath;
+ Gtk::TreeModelColumn<std::string> sample_rate;
+ Gtk::TreeModelColumn<std::string> disk_format;
+ };
+
+ RecentSessionModelColumns recent_session_columns;
+ Gtk::TreeView recent_session_display;
+ Glib::RefPtr<Gtk::TreeStore> recent_session_model;
+ Gtk::ScrolledWindow recent_scroller;
+ Gtk::Label recent_label;
+ Gtk::FileChooserButton existing_session_chooser;
+ int redisplay_recent_sessions ();
+ void recent_session_row_selected ();
+ void recent_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col);
+
+ void existing_session_selected ();
+ void session_selected ();
+
+ /* new sessions */
+
+ void setup_new_session_page ();
+ Gtk::Entry new_name_entry;
+ Gtk::FileChooserButton new_folder_chooser;
+
+ struct SessionTemplateColumns : public Gtk::TreeModel::ColumnRecord {
+ SessionTemplateColumns () {
+ add (name);
+ add (path);
+ }
+
+ Gtk::TreeModelColumn<std::string> name;
+ Gtk::TreeModelColumn<std::string> path;
+ };
+
+ SessionTemplateColumns session_template_columns;
+ Glib::RefPtr<Gtk::ListStore> template_model;
+ Gtk::ComboBox template_chooser;
+
+ Gtk::VBox session_new_vbox;
+ Gtk::VBox session_existing_vbox;
+ Gtk::Expander more_new_session_options_button;
+ Gtk::CheckButton use_template_button;
+ std::string load_template_override;
+
+ void more_new_session_options_button_clicked();
+ void new_name_changed ();
+ void new_name_activated ();
+ void populate_session_templates ();
+
+ /* more options for new sessions */
+
+ Gtk::VBox more_options_vbox;
+
+ Gtk::Label chan_count_label_1;
+ Gtk::Label chan_count_label_3;
+ Gtk::Label chan_count_label_4;
+ Gtk::Table advanced_table;
+ Gtk::HBox input_port_limit_hbox;
+ Gtk::VBox input_port_vbox;
+ Gtk::Table input_table;
+ Gtk::HBox input_hbox;
+
+ Gtk::Label bus_label;
+ Gtk::Frame bus_frame;
+ Gtk::Table bus_table;
+ Gtk::HBox bus_hbox;
+
+ Gtk::Label input_label;
+ Gtk::Frame input_frame;
+ Gtk::HBox output_port_limit_hbox;
+ Gtk::VBox output_port_vbox;
+ Gtk::VBox output_conn_vbox;
+ Gtk::VBox output_vbox;
+ Gtk::HBox output_hbox;
+
+ Gtk::Label output_label;
+ Gtk::Frame output_frame;
+ Gtk::VBox advanced_vbox;
+ Gtk::Label advanced_label;
+
+ Gtk::CheckButton _create_master_bus;
+ Gtk::SpinButton _master_bus_channel_count;
+
+ Gtk::CheckButton _connect_inputs;
+ Gtk::CheckButton _limit_input_ports;
+ Gtk::SpinButton _input_limit_count;
+
+ Gtk::CheckButton _connect_outputs;
+ Gtk::CheckButton _limit_output_ports;
+ Gtk::SpinButton _output_limit_count;
+
+ Gtk::RadioButtonGroup connect_outputs_group;
+ Gtk::RadioButton _connect_outputs_to_master;
+ Gtk::RadioButton _connect_outputs_to_physical;
+
+ Gtk::Adjustment _output_limit_count_adj;
+ Gtk::Adjustment _input_limit_count_adj;
+ Gtk::Adjustment _master_bus_channel_count_adj;
+
+ void connect_inputs_clicked ();
+ void connect_outputs_clicked ();
+ void limit_inputs_clicked ();
+ void limit_outputs_clicked ();
+ void master_bus_button_clicked ();
+ void setup_more_options_box ();
+
+ /* always there */
+
+ Glib::RefPtr<Pango::Layout> layout;
+
+ bool _existing_session_chooser_used; ///< set to true when the existing session chooser has been used
+
+ Gtk::Label info_scroller_label;
+ std::string::size_type info_scroller_count;
+ bool info_scroller_update();
+ sigc::connection info_scroller_connection;
+ void updates_button_clicked ();
+};
+
+#endif /* __gtk2_ardour_session_dialog_h__ */
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index 1815db1056..60f575fb16 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -334,7 +334,7 @@ SessionOptionEditor::parameter_changed (std::string const & p)
{
OptionEditor::parameter_changed (p);
if (p == "external-sync") {
- if (Config->get_sync_source() == JACK) {
+ if (Config->get_sync_source() == Engine) {
_vpu->set_sensitive(!_session_config->get_external_sync());
} else {
_vpu->set_sensitive(true);
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 2640af8379..98df970e39 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -26,8 +26,8 @@
#include <sstream>
#include <unistd.h>
+#include <limits.h>
#include <sys/stat.h>
-#include <sys/param.h>
#include <gtkmm/box.h>
#include <gtkmm/stock.h>
@@ -1473,7 +1473,7 @@ SoundFileOmega::check_link_status (const Session* s, const vector<string>& paths
for (vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i) {
- char tmpc[MAXPATHLEN+1];
+ char tmpc[PATH_MAX+1];
snprintf (tmpc, sizeof(tmpc), "%s/%s", tmpdir.c_str(), Glib::path_get_basename (*i).c_str());
diff --git a/gtk2_ardour/small-splash.png b/gtk2_ardour/small-splash.png
new file mode 100644
index 0000000000..045062036c
--- /dev/null
+++ b/gtk2_ardour/small-splash.png
Binary files differ
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index 266a7e2a27..7bb9b2e295 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -65,104 +65,55 @@ static string poor_mans_glob (string path)
return copy;
}
-ArdourStartup::ArdourStartup (bool require_new, const std::string& session_name, const std::string& session_path, const std::string& template_name)
+ArdourStartup::ArdourStartup ()
: _response (RESPONSE_OK)
, config_modified (false)
- , new_only (require_new)
, default_dir_chooser (0)
- , ic_new_session_button (_("Create a new session"))
- , ic_existing_session_button (_("Open an existing session"))
, monitor_via_hardware_button (string_compose (_("Use an external mixer or the hardware mixer of your audio interface.\n"
"%1 will play NO role in monitoring"), PROGRAM_NAME))
, monitor_via_ardour_button (string_compose (_("Ask %1 to play back material as it is being recorded"), PROGRAM_NAME))
- , new_folder_chooser (FILE_CHOOSER_ACTION_SELECT_FOLDER)
- , more_new_session_options_button (_("I'd like more options for this session"))
- , _output_limit_count_adj (1, 0, 100, 1, 10, 0)
- , _input_limit_count_adj (1, 0, 100, 1, 10, 0)
- , _master_bus_channel_count_adj (2, 0, 100, 1, 10, 0)
, audio_page_index (-1)
, new_user_page_index (-1)
, default_folder_page_index (-1)
, monitoring_page_index (-1)
- , session_page_index (-1)
- , initial_choice_index (-1)
, final_page_index (-1)
- , session_options_page_index (-1)
- , _existing_session_chooser_used (false)
{
- new_user = !Glib::file_test (been_here_before_path(), Glib::FILE_TEST_EXISTS);
- need_session_info = (session_name.empty() || require_new);
-
- _provided_session_name = session_name;
- _provided_session_path = session_path;
+ set_keep_above (true);
+ set_position (WIN_POS_CENTER);
+ set_border_width (12);
+
+ if ((icon_pixbuf = ::get_icon ("ardour_icon_48px")) == 0) {
+ throw failed_constructor();
+ }
+
+ list<Glib::RefPtr<Gdk::Pixbuf> > window_icons;
+ Glib::RefPtr<Gdk::Pixbuf> icon;
+
+ if ((icon = ::get_icon ("ardour_icon_16px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_22px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_32px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if ((icon = ::get_icon ("ardour_icon_48px")) != 0) {
+ window_icons.push_back (icon);
+ }
+ if (!window_icons.empty ()) {
+ set_default_icon_list (window_icons);
+ }
- if (need_session_info || new_user) {
-
- use_template_button.set_group (session_template_group);
- use_session_as_template_button.set_group (session_template_group);
-
- set_keep_above (true);
- set_position (WIN_POS_CENTER);
- set_border_width (12);
-
- if ((icon_pixbuf = ::get_icon ("ardour_icon_48px")) == 0) {
- throw failed_constructor();
- }
-
- list<Glib::RefPtr<Gdk::Pixbuf> > window_icons;
- Glib::RefPtr<Gdk::Pixbuf> icon;
-
- if ((icon = ::get_icon ("ardour_icon_16px")) != 0) {
- window_icons.push_back (icon);
- }
- if ((icon = ::get_icon ("ardour_icon_22px")) != 0) {
- window_icons.push_back (icon);
- }
- if ((icon = ::get_icon ("ardour_icon_32px")) != 0) {
- window_icons.push_back (icon);
- }
- if ((icon = ::get_icon ("ardour_icon_48px")) != 0) {
- window_icons.push_back (icon);
- }
- if (!window_icons.empty ()) {
- set_default_icon_list (window_icons);
- }
-
#ifdef __APPLE__
- setup_prerelease_page ();
+ setup_prerelease_page ();
#endif
- if (new_user) {
-
- setup_new_user_page ();
- setup_first_time_config_page ();
- setup_monitoring_choice_page ();
- setup_monitor_section_choice_page ();
-
- ic_new_session_button.set_active (true); // always create new session on first run
-
- } else {
-
- setup_initial_choice_page ();
- }
-
- setup_session_page ();
- setup_more_options_page ();
-
- if (new_user) {
- setup_final_page ();
- }
-
- if (new_only) {
- ic_vbox.hide ();
- } else {
- ic_vbox.show ();
- }
-
- if (!template_name.empty()) {
- use_template_button.set_active (false);
- load_template_override = template_name;
- }
- }
+
+ setup_new_user_page ();
+ setup_first_time_config_page ();
+ setup_monitoring_choice_page ();
+ setup_monitor_section_choice_page ();
+ setup_final_page ();
the_startup = this;
}
@@ -172,9 +123,16 @@ ArdourStartup::~ArdourStartup ()
}
bool
-ArdourStartup::ready_without_display () const
+ArdourStartup::required ()
+{
+ return !Glib::file_test (been_here_before_path(), Glib::FILE_TEST_EXISTS);
+}
+
+std::string
+ArdourStartup::been_here_before_path ()
{
- return !new_user && !need_session_info;
+ // XXXX use more specific version so we can catch upgrades
+ return Glib::build_filename (user_config_directory (), ".a3");
}
void
@@ -210,97 +168,6 @@ Full information on all the above can be found on the support page at\n\
set_page_complete (*vbox, true);
}
-bool
-ArdourStartup::use_session_template ()
-{
- if (!load_template_override.empty()) {
- return true;
- }
-
- if (use_template_button.get_active()) {
- return template_chooser.get_active_row_number() > 0;
- } else {
- return !session_template_chooser.get_filename().empty();
- }
-}
-
-std::string
-ArdourStartup::session_template_name ()
-{
- if (!load_template_override.empty()) {
- string the_path (ARDOUR::user_template_directory());
- return Glib::build_filename (the_path, load_template_override + ARDOUR::template_suffix);
- }
-
- if (ic_existing_session_button.get_active()) {
- return string();
- }
-
- if (use_template_button.get_active()) {
- TreeModel::iterator iter = template_chooser.get_active ();
- TreeModel::Row row = (*iter);
- string s = row[session_template_columns.path];
- return s;
- } else {
- return session_template_chooser.get_filename();
-
- }
-}
-
-std::string
-ArdourStartup::session_name (bool& should_be_new)
-{
- if (ready_without_display()) {
- return _provided_session_name;
- }
-
- if (ic_new_session_button.get_active()) {
- should_be_new = true;
- string val = new_name_entry.get_text ();
- strip_whitespace_edges (val);
- return val;
- } else if (_existing_session_chooser_used) {
- /* existing session chosen from file chooser */
- should_be_new = false;
- return existing_session_chooser.get_filename ();
- } else {
- /* existing session chosen from recent list */
- should_be_new = false;
-
- TreeIter iter = recent_session_display.get_selection()->get_selected();
-
- if (iter) {
- return (*iter)[recent_session_columns.visible_name];
- }
-
- return "";
- }
-}
-
-std::string
-ArdourStartup::session_folder ()
-{
- if (ready_without_display()) {
- return _provided_session_path;
- }
-
- if (ic_new_session_button.get_active()) {
- std::string legal_session_folder_name = legalize_for_path (new_name_entry.get_text());
- return Glib::build_filename (new_folder_chooser.get_current_folder(), legal_session_folder_name);
- } else if (_existing_session_chooser_used) {
- /* existing session chosen from file chooser */
- return existing_session_chooser.get_current_folder ();
- } else {
- /* existing session chosen from recent list */
- TreeIter iter = recent_session_display.get_selection()->get_selected();
-
- if (iter) {
- return (*iter)[recent_session_columns.fullpath];
- }
- return "";
- }
-}
-
void
ArdourStartup::setup_new_user_page ()
{
@@ -506,107 +373,11 @@ greater control in monitoring without affecting the mix."));
}
void
-ArdourStartup::setup_initial_choice_page ()
-{
- ic_vbox.set_spacing (6);
- ic_vbox.set_border_width (24);
-
- RadioButton::Group g (ic_new_session_button.get_group());
- ic_existing_session_button.set_group (g);
-
- HBox* centering_hbox = manage (new HBox);
- VBox* centering_vbox = manage (new VBox);
-
- centering_vbox->set_spacing (6);
-
- centering_vbox->pack_start (ic_new_session_button, false, true);
- centering_vbox->pack_start (ic_existing_session_button, false, true);
-
- if (ARDOUR_UI::instance()->announce_string() != "" ) {
-
- Gtk::Frame *info_frame = manage(new Gtk::Frame);
- info_frame->set_shadow_type(SHADOW_ETCHED_OUT);
- centering_vbox->pack_start (*info_frame, false, false, 20);
-
- Box *info_box = manage (new VBox);
- info_box->set_border_width (12);
- info_box->set_spacing (6);
- info_box->set_name("mixbus_info_box");
-
- info_box->pack_start (info_scroller_label, false, false);
-
- info_frame->add (*info_box);
- info_frame->show_all();
-
- info_scroller_count = 0;
- info_scroller_connection = Glib::signal_timeout().connect (mem_fun(*this, &ArdourStartup::info_scroller_update), 50);
-
- Gtk::Button *updates_button = manage (new Gtk::Button (_("Check the website for more...")));
-
- updates_button->signal_clicked().connect (mem_fun(*this, &ArdourStartup::updates_button_clicked) );
- ARDOUR_UI::instance()->tooltips().set_tip (*updates_button, _("Click to open the program website in your web browser"));
-
- info_box->pack_start (*updates_button, false, false);
- }
-
- ic_new_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_clicked), false);
- ic_new_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false);
-
- ic_existing_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_clicked), false);
- ic_existing_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false);
-
- centering_hbox->pack_start (*centering_vbox, true, true);
-
- ic_vbox.pack_start (*centering_hbox, true, true);
-
- ic_vbox.show_all ();
-
- initial_choice_index = append_page (ic_vbox);
- set_page_title (ic_vbox, string_compose("%1 %2", PROGRAM_NAME, VERSIONSTRING));
- set_page_header_image (ic_vbox, icon_pixbuf);
-
- /* user could just click on "Forward" if default
- * choice is correct.
- */
-
- set_page_complete (ic_vbox, true);
-}
-
-bool
-ArdourStartup::initial_button_clicked (GdkEventButton* ev)
-{
- if (ev->type == GDK_2BUTTON_PRESS && session_page_index != -1) {
- set_current_page(session_page_index);
- }
-
- return false;
-}
-
-void
-ArdourStartup::initial_button_activated ()
-{
- if (session_page_index != -1) {
- set_current_page(session_page_index);
- }
-}
-
-void
-ArdourStartup::setup_session_page ()
-{
- session_vbox.set_border_width (24);
-
- session_vbox.pack_start (session_hbox, true, true);
- session_vbox.show_all ();
-
- session_page_index = append_page (session_vbox);
- /* initial setting */
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
-}
-
-void
ArdourStartup::setup_final_page ()
{
- final_page.set_text (string_compose (_("%1 is ready for use"), PROGRAM_NAME));
+ string msg = string_compose (_("%1 is ready for use"), PROGRAM_NAME);
+
+ final_page.set_markup (string_compose ("<span weight=\"bold\" size=\"large\">%1</span>", msg));
final_page.show ();
final_page_index = append_page (final_page);
set_page_complete (final_page, true);
@@ -662,782 +433,12 @@ ArdourStartup::on_apply ()
gtk_main_quit ();
}
-void
-ArdourStartup::on_prepare (Gtk::Widget* page)
-{
- if (page == &session_vbox) {
-
- if (ic_new_session_button.get_active()) {
- /* new session requested */
- setup_new_session_page ();
- } else {
- /* existing session requested */
- setup_existing_session_page ();
-
- }
-
- /* HACK HACK HACK ... change the "Apply" button label
- to say "Open"
- */
-
- Gtk::Widget* tl = session_vbox.get_toplevel();
- Gtk::Window* win;
- if ((win = dynamic_cast<Gtk::Window*>(tl)) != 0) {
- /* ::get_default_widget() is not wrapped in gtkmm */
- Gtk::Widget* def = wrap (gtk_window_get_default_widget (win->gobj()));
- Gtk::Button* button;
- if ((button = dynamic_cast<Gtk::Button*>(def)) != 0) {
- if (more_new_session_options_button.get_active()) {
- button->set_label (_("Forward"));
- }else{
- button->set_label (_("Open"));
- }
- }
- }
- }
-}
-
-void
-ArdourStartup::populate_session_templates ()
-{
- vector<TemplateInfo> templates;
-
- find_session_templates (templates);
-
- template_model->clear ();
-
- for (vector<TemplateInfo>::iterator x = templates.begin(); x != templates.end(); ++x) {
- TreeModel::Row row;
-
- row = *(template_model->append ());
-
- row[session_template_columns.name] = (*x).name;
- row[session_template_columns.path] = (*x).path;
- }
-}
-
-void
-ArdourStartup::setup_new_session_page ()
-{
- if (!session_hbox.get_children().empty()) {
- session_hbox.remove (**session_hbox.get_children().begin());
- }
-
- session_new_vbox.set_spacing (18);
-
- if (session_new_vbox.get_children().empty()) {
- VBox *vbox1 = manage (new VBox);
- HBox* hbox1 = manage (new HBox);
- Label* label1 = manage (new Label);
-
- vbox1->set_spacing (6);
-
- hbox1->set_spacing (6);
- hbox1->pack_start (*label1, false, false);
- hbox1->pack_start (new_name_entry, true, true);
-
- label1->set_text (_("Session name:"));
-
-
- if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
- new_name_entry.set_text (Glib::path_get_basename (ARDOUR_COMMAND_LINE::session_name));
- /* name provided - they can move right along */
- set_page_complete (session_vbox, true);
- }
-
- new_name_entry.signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::new_name_changed));
- new_name_entry.signal_activate().connect (sigc::mem_fun (*this, &ArdourStartup::move_along_now));
-
- vbox1->pack_start (*hbox1, true, true);
-
- /* --- */
-
- HBox* hbox2 = manage (new HBox);
- Label* label2 = manage (new Label);
-
- hbox2->set_spacing (6);
- hbox2->pack_start (*label2, false, false);
- hbox2->pack_start (new_folder_chooser, true, true);
-
- label2->set_text (_("Create session folder in:"));
-
- if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
- new_folder_chooser.set_current_folder (poor_mans_glob (Glib::path_get_dirname (ARDOUR_COMMAND_LINE::session_name)));
- } else if (ARDOUR_UI::instance()->session_loaded) {
- // point the new session file chooser at the parent directory of the current session
- string session_parent_dir = Glib::path_get_dirname(ARDOUR_UI::instance()->the_session()->path());
- string::size_type last_dir_sep = session_parent_dir.rfind(G_DIR_SEPARATOR);
- session_parent_dir = session_parent_dir.substr(0, last_dir_sep);
- new_folder_chooser.set_current_folder (session_parent_dir);
- string default_session_folder = poor_mans_glob (Config->get_default_session_parent_dir());
-
- try {
- /* add_shortcut_folder throws an exception if the folder being added already has a shortcut */
- new_folder_chooser.add_shortcut_folder (default_session_folder);
- }
- catch (Glib::Error & e) {
- std::cerr << "new_folder_chooser.add_shortcut_folder (" << default_session_folder << ") threw Glib::Error " << e.what() << std::endl;
- }
- } else {
- new_folder_chooser.set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir()));
- }
- new_folder_chooser.show ();
- new_folder_chooser.set_title (_("Select folder for session"));
-
-#ifdef __APPLE__
- new_folder_chooser.add_shortcut_folder ("/Volumes");
-#endif
-
- vbox1->pack_start (*hbox2, false, false);
-
- session_new_vbox.pack_start (*vbox1, false, false);
-
- /* --- */
-
- VBox *vbox2 = manage (new VBox);
- HBox* hbox3 = manage (new HBox);
- Label* label3 = manage (new Label);
- template_model = ListStore::create (session_template_columns);
- populate_session_templates ();
-
- vbox2->set_spacing (6);
-
- label3->set_markup (_("<b>Options</b>"));
- label3->set_alignment (0.0, 0.0);
-
- vbox2->pack_start (*label3, false, true);
-
- VBox *vbox3 = manage (new VBox);
-
- vbox3->set_spacing (6);
-
- if (!template_model->children().empty()) {
-
- HBox* hbox4a = manage (new HBox);
- use_template_button.set_label (_("Use this template"));
-
- TreeModel::Row row = *template_model->prepend ();
- row[session_template_columns.name] = (_("no template"));
- row[session_template_columns.path] = string();
-
- hbox4a->set_spacing (6);
- hbox4a->pack_start (use_template_button, false, false);
- hbox4a->pack_start (template_chooser, true, true);
-
- template_chooser.set_model (template_model);
-
- Gtk::CellRendererText* text_renderer = Gtk::manage (new Gtk::CellRendererText);
- text_renderer->property_editable() = false;
-
- template_chooser.pack_start (*text_renderer);
- template_chooser.add_attribute (text_renderer->property_text(), session_template_columns.name);
- template_chooser.set_active (0);
-
- use_template_button.show();
- template_chooser.show ();
-
- vbox3->pack_start (*hbox4a, false, false);
- }
-
- /* --- */
-
- if (!new_user) {
- session_template_chooser.set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir()));
-
- HBox* hbox4b = manage (new HBox);
- use_session_as_template_button.set_label (_("Use an existing session as a template:"));
-
- hbox4b->set_spacing (6);
- hbox4b->pack_start (use_session_as_template_button, false, false);
- hbox4b->pack_start (session_template_chooser, true, true);
-
- use_session_as_template_button.show ();
- session_template_chooser.show ();
-
- Gtk::FileFilter* session_filter = manage (new (Gtk::FileFilter));
- session_filter->add_pattern (X_("*.ardour"));
- session_template_chooser.set_filter (*session_filter);
- session_template_chooser.set_title (_("Select template"));
-
- vbox3->pack_start (*hbox4b, false, false);
- }
-
- /* --- */
-
- HBox* hbox5 = manage (new HBox);
-
- hbox5->set_spacing (6);
- hbox5->pack_start (more_new_session_options_button, false, false);
-
- more_new_session_options_button.show ();
- more_new_session_options_button.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::more_new_session_options_button_clicked));
-
- vbox3->pack_start (*hbox5, false, false);
- hbox3->pack_start (*vbox3, true, true, 8);
- vbox2->pack_start (*hbox3, false, false);
-
- /* --- */
-
- session_new_vbox.pack_start (*vbox2, false, false);
- }
-
- session_new_vbox.show_all ();
- session_hbox.pack_start (session_new_vbox, true, true);
- set_page_title (session_vbox, _("New Session"));
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
-
- if (more_new_session_options_button.get_active()) {
- set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT);
- }
- session_hbox.show_all();
-}
-
-void
-ArdourStartup::new_name_changed ()
-{
- if (!new_name_entry.get_text().empty()) {
- set_page_complete (session_vbox, true);
- } else {
- set_page_complete (session_vbox, false);
- }
-}
-
-int
-ArdourStartup::redisplay_recent_sessions ()
-{
- std::vector<std::string> session_directories;
- RecentSessionsSorter cmp;
-
- recent_session_display.set_model (Glib::RefPtr<TreeModel>(0));
- recent_session_model->clear ();
-
- ARDOUR::RecentSessions rs;
- ARDOUR::read_recent_sessions (rs);
-
- if (rs.empty()) {
- recent_session_display.set_model (recent_session_model);
- return 0;
- }
- //
- // sort them alphabetically
- sort (rs.begin(), rs.end(), cmp);
-
- for (ARDOUR::RecentSessions::iterator i = rs.begin(); i != rs.end(); ++i) {
- session_directories.push_back ((*i).second);
- }
-
- int session_snapshot_count = 0;
-
- for (vector<std::string>::const_iterator i = session_directories.begin(); i != session_directories.end(); ++i)
- {
- std::vector<std::string> state_file_paths;
-
- // now get available states for this session
-
- get_state_files_in_directory (*i, state_file_paths);
-
- vector<string*>* states;
- vector<const gchar*> item;
- string fullpath = *i;
-
- /* remove any trailing / */
-
- if (fullpath[fullpath.length()-1] == '/') {
- fullpath = fullpath.substr (0, fullpath.length()-1);
- }
-
- /* check whether session still exists */
- if (!Glib::file_test(fullpath.c_str(), Glib::FILE_TEST_EXISTS)) {
- /* session doesn't exist */
- continue;
- }
-
- /* now get available states for this session */
-
- if ((states = Session::possible_states (fullpath)) == 0) {
- /* no state file? */
- continue;
- }
-
- std::vector<string> state_file_names(get_file_names_no_extension (state_file_paths));
-
- Gtk::TreeModel::Row row = *(recent_session_model->append());
-
- row[recent_session_columns.visible_name] = Glib::path_get_basename (fullpath);
- row[recent_session_columns.fullpath] = fullpath;
- row[recent_session_columns.tip] = Glib::Markup::escape_text (fullpath);
-
- ++session_snapshot_count;
-
- if (state_file_names.size() > 1) {
-
- // add the children
-
- for (std::vector<std::string>::iterator i2 = state_file_names.begin();
- i2 != state_file_names.end(); ++i2) {
-
- Gtk::TreeModel::Row child_row = *(recent_session_model->append (row.children()));
-
- child_row[recent_session_columns.visible_name] = *i2;
- child_row[recent_session_columns.fullpath] = fullpath;
- child_row[recent_session_columns.tip] = Glib::Markup::escape_text (fullpath);
- ++session_snapshot_count;
- }
- }
- }
-
- recent_session_display.set_tooltip_column(1); // recent_session_columns.tip
- recent_session_display.set_model (recent_session_model);
- return session_snapshot_count;
- // return rs.size();
-}
-
-void
-ArdourStartup::recent_session_row_selected ()
-{
- if (recent_session_display.get_selection()->count_selected_rows() > 0) {
- set_page_complete (session_vbox, true);
- } else {
- set_page_complete (session_vbox, false);
- }
-}
-
-void
-ArdourStartup::setup_existing_session_page ()
-{
- recent_session_model = TreeStore::create (recent_session_columns);
- redisplay_recent_sessions ();
-
- if (!session_hbox.get_children().empty()) {
- session_hbox.remove (**session_hbox.get_children().begin());
- }
-
- if (session_existing_vbox.get_children().empty()) {
-
- recent_session_display.set_model (recent_session_model);
- recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
- recent_session_display.set_headers_visible (false);
- recent_session_display.get_selection()->set_mode (SELECTION_BROWSE);
-
- recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::recent_session_row_selected));
-
- recent_scroller.add (recent_session_display);
- recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
- recent_scroller.set_shadow_type (Gtk::SHADOW_IN);
-
- recent_session_display.show();
-
- recent_scroller.show();
- int cnt = redisplay_recent_sessions ();
- recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &ArdourStartup::recent_row_activated));
-
- if (cnt > 4) {
- recent_scroller.set_size_request (-1, 300);
- }
-
- session_existing_vbox.set_spacing (8);
- session_existing_vbox.pack_start (recent_scroller, true, true);
-
- existing_session_chooser.set_title (_("Select session file"));
- existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected));
- existing_session_chooser.set_current_folder(poor_mans_glob (Config->get_default_session_parent_dir()));
-
- FileFilter session_filter;
- session_filter.add_pattern ("*.ardour");
- session_filter.set_name (string_compose (_("%1 sessions"), PROGRAM_NAME));
- existing_session_chooser.add_filter (session_filter);
- existing_session_chooser.set_filter (session_filter);
-
-#ifdef GTKOSX
- existing_session_chooser.add_shortcut_folder ("/Volumes");
-#endif
-
- HBox* hbox = manage (new HBox);
- hbox->set_spacing (4);
- hbox->pack_start (*manage (new Label (_("Browse:"))), PACK_SHRINK);
- hbox->pack_start (existing_session_chooser);
- session_existing_vbox.pack_start (*hbox, false, false);
- hbox->show_all ();
- }
-
- session_existing_vbox.show_all ();
- session_hbox.pack_start (session_existing_vbox, true, true);
-
- set_page_title (session_vbox, _("Select a session"));
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
- session_hbox.show_all();
-}
-
-void
-ArdourStartup::more_new_session_options_button_clicked ()
-{
- if (more_new_session_options_button.get_active()) {
- more_options_vbox.show_all ();
- set_page_type (more_options_vbox, ASSISTANT_PAGE_CONFIRM);
- set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT);
- } else {
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
- more_options_vbox.hide ();
- }
-}
-
-void
-ArdourStartup::setup_more_options_page ()
-{
- more_options_vbox.set_border_width (24);
-
- _output_limit_count.set_adjustment (_output_limit_count_adj);
- _input_limit_count.set_adjustment (_input_limit_count_adj);
- _master_bus_channel_count.set_adjustment (_master_bus_channel_count_adj);
-
- chan_count_label_1.set_text (_("channels"));
- chan_count_label_3.set_text (_("channels"));
- chan_count_label_4.set_text (_("channels"));
-
- chan_count_label_1.set_alignment(0,0.5);
- chan_count_label_1.set_padding(0,0);
- chan_count_label_1.set_line_wrap(false);
-
- chan_count_label_3.set_alignment(0,0.5);
- chan_count_label_3.set_padding(0,0);
- chan_count_label_3.set_line_wrap(false);
-
- chan_count_label_4.set_alignment(0,0.5);
- chan_count_label_4.set_padding(0,0);
- chan_count_label_4.set_line_wrap(false);
-
- bus_label.set_markup (_("<b>Busses</b>"));
- input_label.set_markup (_("<b>Inputs</b>"));
- output_label.set_markup (_("<b>Outputs</b>"));
-
- _master_bus_channel_count.set_flags(Gtk::CAN_FOCUS);
- _master_bus_channel_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _master_bus_channel_count.set_numeric(true);
- _master_bus_channel_count.set_digits(0);
- _master_bus_channel_count.set_wrap(false);
-
- _create_master_bus.set_label (_("Create master bus"));
- _create_master_bus.set_flags(Gtk::CAN_FOCUS);
- _create_master_bus.set_relief(Gtk::RELIEF_NORMAL);
- _create_master_bus.set_mode(true);
- _create_master_bus.set_active(true);
- _create_master_bus.set_border_width(0);
-
- advanced_table.set_row_spacings(0);
- advanced_table.set_col_spacings(0);
-
- _connect_inputs.set_label (_("Automatically connect to physical inputs"));
- _connect_inputs.set_flags(Gtk::CAN_FOCUS);
- _connect_inputs.set_relief(Gtk::RELIEF_NORMAL);
- _connect_inputs.set_mode(true);
- _connect_inputs.set_active(Config->get_input_auto_connect() != ManualConnect);
- _connect_inputs.set_border_width(0);
-
- _limit_input_ports.set_label (_("Use only"));
- _limit_input_ports.set_flags(Gtk::CAN_FOCUS);
- _limit_input_ports.set_relief(Gtk::RELIEF_NORMAL);
- _limit_input_ports.set_mode(true);
- _limit_input_ports.set_sensitive(true);
- _limit_input_ports.set_border_width(0);
-
- _input_limit_count.set_flags(Gtk::CAN_FOCUS);
- _input_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _input_limit_count.set_numeric(true);
- _input_limit_count.set_digits(0);
- _input_limit_count.set_wrap(false);
- _input_limit_count.set_sensitive(false);
-
- bus_hbox.pack_start (bus_table, Gtk::PACK_SHRINK, 18);
-
- bus_label.set_alignment(0, 0.5);
- bus_label.set_padding(0,0);
- bus_label.set_line_wrap(false);
- bus_label.set_selectable(false);
- bus_label.set_use_markup(true);
- bus_frame.set_shadow_type(Gtk::SHADOW_NONE);
- bus_frame.set_label_align(0,0.5);
- bus_frame.add(bus_hbox);
- bus_frame.set_label_widget(bus_label);
-
- bus_table.set_row_spacings (0);
- bus_table.set_col_spacings (0);
- bus_table.attach (_create_master_bus, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- bus_table.attach (_master_bus_channel_count, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- bus_table.attach (chan_count_label_1, 2, 3, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 0);
-
- input_port_limit_hbox.pack_start(_limit_input_ports, Gtk::PACK_SHRINK, 6);
- input_port_limit_hbox.pack_start(_input_limit_count, Gtk::PACK_SHRINK, 0);
- input_port_limit_hbox.pack_start(chan_count_label_3, Gtk::PACK_SHRINK, 6);
- input_port_vbox.pack_start(_connect_inputs, Gtk::PACK_SHRINK, 0);
- input_port_vbox.pack_start(input_port_limit_hbox, Gtk::PACK_EXPAND_PADDING, 0);
- input_table.set_row_spacings(0);
- input_table.set_col_spacings(0);
- input_table.attach(input_port_vbox, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 6);
-
- input_hbox.pack_start (input_table, Gtk::PACK_SHRINK, 18);
-
- input_label.set_alignment(0, 0.5);
- input_label.set_padding(0,0);
- input_label.set_line_wrap(false);
- input_label.set_selectable(false);
- input_label.set_use_markup(true);
- input_frame.set_shadow_type(Gtk::SHADOW_NONE);
- input_frame.set_label_align(0,0.5);
- input_frame.add(input_hbox);
- input_frame.set_label_widget(input_label);
-
- _connect_outputs.set_label (_("Automatically connect outputs"));
- _connect_outputs.set_flags(Gtk::CAN_FOCUS);
- _connect_outputs.set_relief(Gtk::RELIEF_NORMAL);
- _connect_outputs.set_mode(true);
- _connect_outputs.set_active(Config->get_output_auto_connect() != ManualConnect);
- _connect_outputs.set_border_width(0);
- _limit_output_ports.set_label (_("Use only"));
- _limit_output_ports.set_flags(Gtk::CAN_FOCUS);
- _limit_output_ports.set_relief(Gtk::RELIEF_NORMAL);
- _limit_output_ports.set_mode(true);
- _limit_output_ports.set_sensitive(true);
- _limit_output_ports.set_border_width(0);
- _output_limit_count.set_flags(Gtk::CAN_FOCUS);
- _output_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _output_limit_count.set_numeric(false);
- _output_limit_count.set_digits(0);
- _output_limit_count.set_wrap(false);
- _output_limit_count.set_sensitive(false);
- output_port_limit_hbox.pack_start(_limit_output_ports, Gtk::PACK_SHRINK, 6);
- output_port_limit_hbox.pack_start(_output_limit_count, Gtk::PACK_SHRINK, 0);
- output_port_limit_hbox.pack_start(chan_count_label_4, Gtk::PACK_SHRINK, 6);
-
- _connect_outputs_to_master.set_label (_("... to master bus"));
- _connect_outputs_to_master.set_flags(Gtk::CAN_FOCUS);
- _connect_outputs_to_master.set_relief(Gtk::RELIEF_NORMAL);
- _connect_outputs_to_master.set_mode(true);
- _connect_outputs_to_master.set_active(Config->get_output_auto_connect() == AutoConnectMaster);
- _connect_outputs_to_master.set_border_width(0);
-
- _connect_outputs_to_master.set_group (connect_outputs_group);
- _connect_outputs_to_physical.set_group (connect_outputs_group);
-
- _connect_outputs_to_physical.set_label (_("... to physical outputs"));
- _connect_outputs_to_physical.set_flags(Gtk::CAN_FOCUS);
- _connect_outputs_to_physical.set_relief(Gtk::RELIEF_NORMAL);
- _connect_outputs_to_physical.set_mode(true);
- _connect_outputs_to_physical.set_active(Config->get_output_auto_connect() == AutoConnectPhysical);
- _connect_outputs_to_physical.set_border_width(0);
-
- output_conn_vbox.pack_start(_connect_outputs, Gtk::PACK_SHRINK, 0);
- output_conn_vbox.pack_start(_connect_outputs_to_master, Gtk::PACK_SHRINK, 0);
- output_conn_vbox.pack_start(_connect_outputs_to_physical, Gtk::PACK_SHRINK, 0);
- output_vbox.set_border_width(6);
-
- output_port_vbox.pack_start(output_port_limit_hbox, Gtk::PACK_SHRINK, 0);
-
- output_vbox.pack_start(output_conn_vbox);
- output_vbox.pack_start(output_port_vbox);
-
- output_label.set_alignment(0, 0.5);
- output_label.set_padding(0,0);
- output_label.set_line_wrap(false);
- output_label.set_selectable(false);
- output_label.set_use_markup(true);
- output_frame.set_shadow_type(Gtk::SHADOW_NONE);
- output_frame.set_label_align(0,0.5);
-
- output_hbox.pack_start (output_vbox, Gtk::PACK_SHRINK, 18);
-
- output_frame.add(output_hbox);
- output_frame.set_label_widget(output_label);
-
- more_options_vbox.pack_start(advanced_table, Gtk::PACK_SHRINK, 0);
- more_options_vbox.pack_start(bus_frame, Gtk::PACK_SHRINK, 6);
- more_options_vbox.pack_start(input_frame, Gtk::PACK_SHRINK, 6);
- more_options_vbox.pack_start(output_frame, Gtk::PACK_SHRINK, 0);
-
- /* signals */
-
- _connect_inputs.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::connect_inputs_clicked));
- _connect_outputs.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::connect_outputs_clicked));
- _limit_input_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_inputs_clicked));
- _limit_output_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_outputs_clicked));
- _create_master_bus.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::master_bus_button_clicked));
-
- /* note that more_options_vbox is "visible" by default even
- * though it may not be displayed to the user, this is so the dialog
- * doesn't resize.
- */
- more_options_vbox.show_all ();
-
- session_options_page_index = append_page (more_options_vbox);
- set_page_title (more_options_vbox, _("Advanced Session Options"));
- set_page_complete (more_options_vbox, true);
-}
-
-bool
-ArdourStartup::create_master_bus() const
-{
- return _create_master_bus.get_active();
-}
-
-int
-ArdourStartup::master_channel_count() const
-{
- return _master_bus_channel_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_inputs() const
-{
- return _connect_inputs.get_active();
-}
-
-bool
-ArdourStartup::limit_inputs_used_for_connection() const
-{
- return _limit_input_ports.get_active();
-}
-
-int
-ArdourStartup::input_limit_count() const
-{
- return _input_limit_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_outputs() const
-{
- return _connect_outputs.get_active();
-}
-
-bool
-ArdourStartup::limit_outputs_used_for_connection() const
-{
- return _limit_output_ports.get_active();
-}
-
-int
-ArdourStartup::output_limit_count() const
-{
- return _output_limit_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_outs_to_master() const
-{
- return _connect_outputs_to_master.get_active();
-}
-
-bool
-ArdourStartup::connect_outs_to_physical() const
-{
- return _connect_outputs_to_physical.get_active();
-}
-
-void
-ArdourStartup::connect_inputs_clicked ()
-{
- _limit_input_ports.set_sensitive(_connect_inputs.get_active());
-
- if (_connect_inputs.get_active() && _limit_input_ports.get_active()) {
- _input_limit_count.set_sensitive(true);
- } else {
- _input_limit_count.set_sensitive(false);
- }
-}
-
-void
-ArdourStartup::connect_outputs_clicked ()
-{
- bool const co = _connect_outputs.get_active ();
- _limit_output_ports.set_sensitive(co);
- _connect_outputs_to_master.set_sensitive(co);
- _connect_outputs_to_physical.set_sensitive(co);
-
- if (co && _limit_output_ports.get_active()) {
- _output_limit_count.set_sensitive(true);
- } else {
- _output_limit_count.set_sensitive(false);
- }
-}
-
-void
-ArdourStartup::limit_inputs_clicked ()
-{
- _input_limit_count.set_sensitive(_limit_input_ports.get_active());
-}
-
-void
-ArdourStartup::limit_outputs_clicked ()
-{
- _output_limit_count.set_sensitive(_limit_output_ports.get_active());
-}
-
-void
-ArdourStartup::master_bus_button_clicked ()
-{
- bool const yn = _create_master_bus.get_active();
-
- _master_bus_channel_count.set_sensitive(yn);
- _connect_outputs_to_master.set_sensitive(yn);
-}
void
ArdourStartup::move_along_now ()
{
- gint cur = get_current_page ();
-
- if (cur == session_page_index) {
- if (more_new_session_options_button.get_active()) {
- set_current_page (session_options_page_index);
- } else {
- on_apply ();
- }
- }
+ on_apply ();
}
-void
-ArdourStartup::recent_row_activated (const Gtk::TreePath&, Gtk::TreeViewColumn*)
-{
- set_page_complete (session_vbox, true);
- move_along_now ();
-}
-void
-ArdourStartup::existing_session_selected ()
-{
- _existing_session_chooser_used = true;
-
- set_page_complete (session_vbox, true);
- move_along_now ();
-}
-
-std::string
-ArdourStartup::been_here_before_path () const
-{
- // XXXX use more specific version so we can catch upgrades
- return Glib::build_filename (user_config_directory (), ".a3");
-}
-
-void
-ArdourStartup::updates_button_clicked ()
-{
- //now open a browser window so user can see more
- PBD::open_uri (Config->get_updates_url());
-}
-
-bool
-ArdourStartup::info_scroller_update()
-{
- info_scroller_count++;
-
- char buf[512];
- snprintf (buf, std::min(info_scroller_count,sizeof(buf)-1), "%s", ARDOUR_UI::instance()->announce_string().c_str() );
- buf[info_scroller_count] = 0;
- info_scroller_label.set_text (buf);
- info_scroller_label.show();
-
- if (info_scroller_count > ARDOUR_UI::instance()->announce_string().length()) {
- info_scroller_connection.disconnect();
- }
-
- return true;
-}
+
diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h
index 4dcc3a9fb2..c5a9a30162 100644
--- a/gtk2_ardour/startup.h
+++ b/gtk2_ardour/startup.h
@@ -26,6 +26,7 @@
#include <gtkmm/assistant.h>
#include <gtkmm/label.h>
#include <gtkmm/drawingarea.h>
+#include <gtkmm/expander.h>
#include <gtkmm/box.h>
#include <gtkmm/radiobutton.h>
#include <gtkmm/filechooserbutton.h>
@@ -45,32 +46,10 @@ class EngineControl;
class ArdourStartup : public Gtk::Assistant {
public:
- ArdourStartup (bool require_new, const std::string& session_name, const std::string& session_path, const std::string& template_name);
+ ArdourStartup ();
~ArdourStartup ();
- bool ready_without_display () const;
-
- std::string session_name (bool& should_be_new);
- std::string session_folder ();
-
- bool use_session_template();
- std::string session_template_name();
-
- // advanced session options
-
- bool create_master_bus() const;
- int master_channel_count() const;
-
- bool connect_inputs() const;
- bool limit_inputs_used_for_connection() const;
- int input_limit_count() const;
-
- bool connect_outputs() const;
- bool limit_outputs_used_for_connection() const;
- int output_limit_count() const;
-
- bool connect_outs_to_master() const;
- bool connect_outs_to_physical() const;
+ static bool required ();
gint response () const {
return _response;
@@ -80,17 +59,12 @@ class ArdourStartup : public Gtk::Assistant {
gint _response;
bool config_modified;
bool new_user;
- bool need_session_info;
- bool new_only;
- std::string _provided_session_name;
- std::string _provided_session_path;
- std::string been_here_before_path () const;
+ static std::string been_here_before_path ();
void on_apply ();
void on_cancel ();
bool on_delete_event (GdkEventAny*);
- void on_prepare (Gtk::Widget*);
static ArdourStartup *the_startup;
@@ -108,15 +82,7 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::FileChooserButton* default_dir_chooser;
void default_dir_changed();
void setup_first_page ();
-
- /* initial choice page */
-
- void setup_initial_choice_page ();
- Gtk::VBox ic_vbox;
- Gtk::RadioButton ic_new_session_button;
- Gtk::RadioButton ic_existing_session_button;
- bool initial_button_clicked(GdkEventButton*);
- void initial_button_activated();
+ Gtk::FileChooserButton new_folder_chooser;
/* monitoring choices */
@@ -134,134 +100,6 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::RadioButton no_monitor_section_button;
void setup_monitor_section_choice_page ();
- /* session page (could be new or existing) */
-
- void setup_session_page ();
- Gtk::VBox session_vbox;
- Gtk::HBox session_hbox;
-
- /* recent sessions */
-
- void setup_existing_session_page ();
-
- struct RecentSessionsSorter {
- bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
- return cmp_nocase(a.first, b.first) == -1;
- }
- };
-
- struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord {
- RecentSessionModelColumns() {
- add (visible_name);
- add (tip);
- add (fullpath);
- }
- Gtk::TreeModelColumn<std::string> visible_name;
- Gtk::TreeModelColumn<std::string> tip;
- Gtk::TreeModelColumn<std::string> fullpath;
- };
-
- RecentSessionModelColumns recent_session_columns;
- Gtk::TreeView recent_session_display;
- Glib::RefPtr<Gtk::TreeStore> recent_session_model;
- Gtk::ScrolledWindow recent_scroller;
- Gtk::FileChooserButton existing_session_chooser;
- int redisplay_recent_sessions ();
- void recent_session_row_selected ();
- void recent_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col);
-
- void existing_session_selected ();
-
- /* new sessions */
-
- void setup_new_session_page ();
- Gtk::Entry new_name_entry;
- Gtk::FileChooserButton new_folder_chooser;
- Gtk::FileChooserButton session_template_chooser;
-
- struct SessionTemplateColumns : public Gtk::TreeModel::ColumnRecord {
- SessionTemplateColumns () {
- add (name);
- add (path);
- }
-
- Gtk::TreeModelColumn<std::string> name;
- Gtk::TreeModelColumn<std::string> path;
- };
-
- SessionTemplateColumns session_template_columns;
- Glib::RefPtr<Gtk::ListStore> template_model;
- Gtk::ComboBox template_chooser;
-
- Gtk::VBox session_new_vbox;
- Gtk::VBox session_existing_vbox;
- Gtk::CheckButton more_new_session_options_button;
- Gtk::RadioButtonGroup session_template_group;
- Gtk::RadioButton use_session_as_template_button;
- Gtk::RadioButton use_template_button;
- std::string load_template_override;
-
- void more_new_session_options_button_clicked();
- void new_name_changed ();
- void populate_session_templates ();
-
- /* more options for new sessions */
-
- Gtk::VBox more_options_vbox;
-
- Gtk::Label chan_count_label_1;
- Gtk::Label chan_count_label_3;
- Gtk::Label chan_count_label_4;
- Gtk::Table advanced_table;
- Gtk::HBox input_port_limit_hbox;
- Gtk::VBox input_port_vbox;
- Gtk::Table input_table;
- Gtk::HBox input_hbox;
-
- Gtk::Label bus_label;
- Gtk::Frame bus_frame;
- Gtk::Table bus_table;
- Gtk::HBox bus_hbox;
-
- Gtk::Label input_label;
- Gtk::Frame input_frame;
- Gtk::HBox output_port_limit_hbox;
- Gtk::VBox output_port_vbox;
- Gtk::VBox output_conn_vbox;
- Gtk::VBox output_vbox;
- Gtk::HBox output_hbox;
-
- Gtk::Label output_label;
- Gtk::Frame output_frame;
- Gtk::VBox advanced_vbox;
- Gtk::Label advanced_label;
-
- Gtk::CheckButton _create_master_bus;
- Gtk::SpinButton _master_bus_channel_count;
-
- Gtk::CheckButton _connect_inputs;
- Gtk::CheckButton _limit_input_ports;
- Gtk::SpinButton _input_limit_count;
-
- Gtk::CheckButton _connect_outputs;
- Gtk::CheckButton _limit_output_ports;
- Gtk::SpinButton _output_limit_count;
-
- Gtk::RadioButtonGroup connect_outputs_group;
- Gtk::RadioButton _connect_outputs_to_master;
- Gtk::RadioButton _connect_outputs_to_physical;
-
- Gtk::Adjustment _output_limit_count_adj;
- Gtk::Adjustment _input_limit_count_adj;
- Gtk::Adjustment _master_bus_channel_count_adj;
-
- void connect_inputs_clicked ();
- void connect_outputs_clicked ();
- void limit_inputs_clicked ();
- void limit_outputs_clicked ();
- void master_bus_button_clicked ();
- void setup_more_options_page ();
-
/* final page */
void setup_final_page ();
@@ -278,21 +116,12 @@ class ArdourStartup : public Gtk::Assistant {
gint default_folder_page_index;
gint monitoring_page_index;
gint monitor_section_page_index;
- gint session_page_index;
- gint initial_choice_index;
gint final_page_index;
- gint session_options_page_index;
void move_along_now ();
- bool _existing_session_chooser_used; ///< set to true when the existing session chooser has been used
void setup_prerelease_page ();
- Gtk::Label info_scroller_label;
- std::string::size_type info_scroller_count;
- bool info_scroller_update();
- sigc::connection info_scroller_connection;
- void updates_button_clicked ();
};
#endif /* __gtk2_ardour_startup_h__ */
diff --git a/gtk2_ardour/transcode_video_dialog.cc b/gtk2_ardour/transcode_video_dialog.cc
index 9f18e85b64..3963bb6cd3 100644
--- a/gtk2_ardour/transcode_video_dialog.cc
+++ b/gtk2_ardour/transcode_video_dialog.cc
@@ -28,7 +28,6 @@
#include <fcntl.h>
#include <sigc++/bind.h>
-#include <libgen.h>
#include <glib/gstdio.h>
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index bbce202ad1..1772c7a7c7 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -28,6 +28,7 @@
#include <clocale>
#include <cstring>
#include <cctype>
+#include <cmath>
#include <fstream>
#include <list>
#include <sys/stat.h>
@@ -401,7 +402,7 @@ emulate_key_event (Gtk::Widget* w, unsigned int keyval)
ev.state = 0;
ev.keyval = keyval;
ev.length = 0;
- ev.string = (const gchar*) "";
+ ev.string = const_cast<gchar*> ("");
ev.hardware_keycode = keymapkey[0].keycode;
ev.group = keymapkey[0].group;
g_free(keymapkey);
@@ -862,3 +863,15 @@ unique_random_color (list<Gdk::Color>& used_colors)
/* XXX need throttle here to make sure we don't spin for ever */
}
}
+
+string
+rate_as_string (float r)
+{
+ char buf[32];
+ if (fmod (r, 1000.0f)) {
+ snprintf (buf, sizeof (buf), "%.1f kHz", r/1000.0);
+ } else {
+ snprintf (buf, sizeof (buf), "%.0f kHz", r/1000.0);
+ }
+ return buf;
+}
diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h
index 5d7bf000ea..a1a54898b5 100644
--- a/gtk2_ardour/utils.h
+++ b/gtk2_ardour/utils.h
@@ -86,4 +86,6 @@ std::string escape_angled_brackets (std::string const &);
Gdk::Color unique_random_color (std::list<Gdk::Color> &);
+std::string rate_as_string (float r);
+
#endif /* __ardour_gtk_utils_h__ */
diff --git a/gtk2_ardour/video_monitor.cc b/gtk2_ardour/video_monitor.cc
index ae4d5faacc..6b06f91744 100644
--- a/gtk2_ardour/video_monitor.cc
+++ b/gtk2_ardour/video_monitor.cc
@@ -554,7 +554,7 @@ VideoMonitor::xjadeo_sync_setup ()
bool my_manual_seek = true;
if (_session->config.get_external_sync()) {
- if (ARDOUR::Config->get_sync_source() == ARDOUR::JACK)
+ if (ARDOUR::Config->get_sync_source() == ARDOUR::Engine)
my_manual_seek = false;
}
diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc
index 3ab9e1adff..4a44dc4691 100644
--- a/gtk2_ardour/window_manager.cc
+++ b/gtk2_ardour/window_manager.cc
@@ -194,6 +194,7 @@ ProxyBase::ProxyBase (const string& name, const std::string& menu_name, const XM
ProxyBase::~ProxyBase ()
{
delete vistracker;
+ delete _window;
}
void
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index a02e27f83d..79631e584e 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -203,6 +203,7 @@ gtk2_ardour_sources = [
'search_path_option.cc',
'selection.cc',
'send_ui.cc',
+ 'session_dialog.cc',
'session_import_dialog.cc',
'session_metadata_dialog.cc',
'session_option_editor.cc',